Docker ハンズオンの資料を作成したので投稿してみました。 ハンズオンは探せばいくらでも出てきますが、自分が説明する機会ができたので自分でも作ってみようと思って書いてみました。
ハンズオンの中身
ここではハンズオンの内容をタイトルだけ書いてみました。 詳しい、実施方法はここでご確認ください。
- Docker のインストール
- Docker の起動
- イメージ取得・確認
- コンテナの起動・プロセスの確認・停止
- コンテナの詳細情報確認
- コンテナの削除
- イメージの変更・保存
- イメージの削除
- Dockerfile でコンテナ構築
- レポジトリへのイメージ登録
初めてDocker コマンドを実行する人を対象にしました。 もし興味のある方がいたら、実施していただきコメントなり指摘なりをいただけると幸いです。 今回はコマンドをたたいてもらうことを中心のハンズオンにしました。 次回はDocker Compose、Docker Swam らへんを中心としたハンズオンを作成したいと思っています。
以下では、実行して気になったことを。
yum -y -q install docker-engine
今回のハンズオンではCentOS7.1.1503 にDocker 1.8.1DockerProject配布のDocker をインストールしています。
Docker 1.7.1RHEL/CentOS配布のDocker の場合、/etc/systemd/system/multi-user.target.wants/docker.service
は
[Unit] Description=Docker Application Container Engine Documentation=http://docs.docker.com After=network.target Wants=docker-storage-setup.service [Service] Type=notify EnvironmentFile=-/etc/sysconfig/docker EnvironmentFile=-/etc/sysconfig/docker-storage EnvironmentFile=-/etc/sysconfig/docker-network Environment=GOTRACEBACK=crash ExecStart=/usr/bin/docker -d $OPTIONS \ $DOCKER_STORAGE_OPTIONS \ $DOCKER_NETWORK_OPTIONS \ $ADD_REGISTRY \ $BLOCK_REGISTRY \ $INSECURE_REGISTRY LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity MountFlags=slave [Install] WantedBy=multi-user.target
だったのですが、Docker 1.8.1DockerProject配布のDocker の場合
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network.target docker.socket Requires=docker.socket [Service] Type=notify ExecStart=/usr/bin/docker daemon -H fd:// MountFlags=slave LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity [Install] WantedBy=multi-user.target
だいぶシンプルです。
ただ、ここで気になるのはEnvironmentFile
が定義されなくなっていることです。
/etc/sysconfig/docker
を見ると
# /etc/sysconfig/docker # # Other arguments to pass to the docker daemon process # These will be parsed by the sysv initscript and appended # to the arguments list passed to docker daemon other_args=""
other_args
という変数が用意されているのですが、今のままでは何を書いても読み込まれることはありません。
例えば、Docker でOverlayFS
を使用しようと想った際には、/etc/systemd/system/multi-user.target.wants/docker.service
を
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network.target docker.socket Requires=docker.socket [Service] Type=notify EnvironmentFile=-/etc/sysconfig/docker ExecStart=/usr/bin/docker daemon -H fd:// -$other_args MountFlags=slave LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity [Install] WantedBy=multi-user.target
と書き換えた後に、/etc/sysconfig/docker
を
# /etc/sysconfig/docker # # Other arguments to pass to the docker daemon process # These will be parsed by the sysv initscript and appended # to the arguments list passed to docker daemon other_args="-s overlay"
とか書きなおし、Docker を起動することで対応しました。 ただ、これが正解かどうか分からないので、もし分かる人がいたら教えて下さい。 ※コメントを頂いて、Docker のversion. の問題ではなく、配布元の違いでした。訂正させていだきました。