CentOS6.7にDockerをインストールし、基本的なコンテナ(centos:centos6)を使用する手順を記載。
インストール
yumでDockerを入れる。
#epelリポジトリ追加 yum install epel-release -y #dockerインストール yum install docker-io -y
必要に応じて(必要になった時でよい)docker-composeも入れる。
#githubから入手 curl -L https://github.com/docker/compose/releases/download/1.4.2/docker-compose-`uname -s`-`uname -m` > ~/docker-compose #/opt/bin/にでも置いておく mkdir /opt/bin mv ./docker-compose /opt/bin/
docker-composeは複数のコンテナを管理できる。
例えばsameersbn/docker-redmineはRedmine用コンテナとDB(postgresql)用コンテナの2つで構成されているが、
docker-compose.ymlを入手(上記のREADME.md参照)して/opt/bin/docker-compose up コマンド一発で立ち上がる。
最速でRedmineを立ち上げる方法の一つであろう。
Dockerイメージの入手
DockerイメージはDocker Hubにいろいろある。
例) CentOSのイメージを入手
#centos6イメージの入手 docker pull centos:centos6
コンテナ新規起動
docker runでコンテナが新規で立ち上がる。
#コンテナ新規起動 # -it 標準入力を受け付けてくれる # --name コンテナの名前。つけておくと吉。docker startやstopする時に名前で指定できる。 # -h ホスト名。つけておくと吉。怠ると勝手につけられる。 # -p ポートフォワーディング。ホストポート番号:ゲストポート番号形式。これでコンテナ外部・コンテナ間で通信できるぞ。 # -v ディレクトリのマウント。ホストディレクトリ:ゲストディレクトリ形式。これでコンテナ外部・コンテナ間とファイル共有ができるぞ。 docker run -it --name test_cent6 -h test_cent6 -p 11111:11111 -p 22222:22222 -v /root/docker:/root/docker centos:centos6 /bin/bash
上記コマンドを実行するとコンテナ内で/bin/bashが使える状態となる。
exitでコンテナを終了して抜ける。
Ctrl+p Ctrl+qでコンテナを終了せずに抜ける。
-pのポートフォワーディング設定は後からの変更は(ごり押しでなんかすればできるんだろうけど)簡単な方法は見つからなかった。
そのコンテナのメインの利用用途のポートの他に、
いろいろ汎用的に使う用のポート番号も保険で指定しておくことも視野に入れておくと吉か。
dockerコンテナへのファイル格納、コンテナからのファイル取り出しはコマンドでもできるが、いちいちコマンド打つのはめんどい。
それよりも上記のように-vでディレクトリをマウントしておくと普通にファイル共有できるので楽である。
/bin/bashはそのコンテナで実行するコマンドとして指定。
コンテナ内で作業したいのでbashを指定している。
最頻出コマンド
dockerを使う上で頻出するコマンドを記載する。
以下を覚えていればとりあえず不自由しない。
コンテナから抜ける |
前述の通り。以下に再掲。 ・終了して抜けるにはコンテナ内のbashでexit ・終了しないで抜けるには、Ctrl+p Ctrl+q |
コンテナの終了 |
コンテナ内でbashでexitコマンドを実行するか、以下。
#終了 docker stop test_cent6 |
動作中のコンテナに接続 |
docker attach コンテナ名
docker attach test_cent6 |
コンテナ一覧表示 |
#動作中(run or start済み)コンテナのみ docker ps #終了しているコンテナも含めて表示 docker ps -a |
コンテナの開始→接続 |
#開始 docker start test_cent6 #接続 docker attach test_cent6 |
bashを明示的に指定してコンテナに入りたい |
docker runでコマンドにbashを指定していないコンテナだが、入って作業したい時など。
docker exec -it コンテナ名 /bin/bash |