本シリーズのトップページ |
---|
https://qiita.com/robozushi10/items/1790fdf5ba220b00a2a2 |
概要
[01] の手順によって、次の Docker コンテナ環境を構築した.
本記事では下表の Master から Slave に対して、Ansible の「docker_image
」モジュールを使って
Docker イメージを操作するための設定を記す
コンテナ構成 (2022/01/22 時点)
用途 | 台数 | OS | 備考 |
---|---|---|---|
Ansible Master | 1台 | Ubuntu 18.04 | ■本コンテナに導入する Ansible バージョンは次の通り. ・ansible = 3.4.0-1ppa~bionic ・ansible-base = 2.10.16-1ppa~bionic ■Slave に対して、アカウント「foo」であればパスワードなしで ssh 接続可能である. ■必要ないはずだが、一応、アカウントのパスワードは Dockerfile に記している. |
Ansible Slave | 8台 | Ubuntu 18.04 | ■基となる Docker Image は上記 Master と同じである.(横着した) |
セットアップ手順
1. slave01 コンテナにログインする
$ docker-compose exec -u foo slave01 bash
2. docker エンジンをインストールする
公式ドキュメントを参照すること.
3. /lib/systemd/system/docker.service に対して「--storage-driver=vfs」を追加する
コンテナの場合は /lib/systemd/system/docker.service に対して、
次の「--storage-driver=vfs」設定をしなければ後述のエラーが起きてしまう
+ExecStart=/usr/bin/dockerd --storage-driver=vfs -H fd://
-ExecStart=/usr/bin/dockerd -H fd://
「--storage-driver=vfs」が無ければ生じるエラー
「docker run hello-world」というサンプルコンテナを起動したときのエラーである.
なお、表示の都合で改行している.
$ sudo docker run hello-world
docker: Error response from daemon: error creating aufs mount to
/var/lib/docker/aufs/mnt/9f0e8f8f31837467fb95620cc001a43bb6eb377ac5bc370d9bda2c4e17f0cbce-init: mount target=/var/lib/docker/aufs/mnt/9f0e8f8f31837467fb95620cc001a43bb6eb377ac5bc370d9bda2c4e17f0cbce-init
data=br:/var/lib/docker/aufs/diff/9f0e8f8f31837467fb95620cc001a43bb6eb377ac5bc370d9bda2c4e17f0cbce-
init=rw:/var/lib/docker/aufs/diff/937737d2d1c47ab012cd1b845be39669b150ac7a6700207b8e5e6b1ffab8e6fe=ro+wh,dio,xino=/dev/shm/aufs.xino: invalid argument.
4. python の docker 関連パッケージをインストールする
$ sudo apt install python3-docker -y
$ sudo apt install python3-pip -y
$ pip3 install docker
動作確認
1. master コンテナにログインする
$ docker-compose exec -u foo master bash
2. master から slave01 に対して、Docker イメージ「hello-world」を pull するよう
$ ansible -m docker_image slave01 --args "name=hello-world source=pull"
3. slave01 上に Docker イメージ「hello-world」が存在していれば OK
$ ssh slave01 'docker images'
補足
docker コンテナ「hello-world」を pull したい場合は「docker_container」モジュールを使う
$ ansible -m docker_container slave01 --args "name=hello-world image=hello-world"
以上