Dockerイメージの作成~他サーバでインポート
作業手順
-
rootユーザに移行
-
Dockerイメージをtar化
docker save <イメージ名> -o <tarファイル名>
※ここでは、AnsibleをインストールしたRocky Linux 9のイメージを扱うものとする
-
tarファイルの所有者を変更
sudo chown vboxuser:vboxuser <tarファイル名>
-
scpなどでtarファイルを他サーバに転送
-
転送先サーバーで
docker load
コマンドでtarファイルからイメージをインポートdocker load -i <tarファイル名>
-
イメージが作成されているか確認
docker images
以下のように、作成したDockerイメージが表示されればOK
[root@vbox ansibleDockerFile]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ansible-container-image latest c66c49dd6431 9 hours ago 921MB
Dockerコンテナの構築
構築手順
-
コンテナを起動する
Rocky Linux 9 の Docker イメージは、デフォルトで /bin/bash を実行するようにはなっていないため、コンテナ起動時に何も実行するコマンドを指定しないと、すぐに終了する。
そのため、以下のコマンドでコンテナを起動する
docker run -d --name ansible-container --net=host ansible-container-image sleep infinity
--net=host
で、ホストのネットワークを使うよう指定できる。
sleep infinity
は、コンテナ内で無限にスリープし続けるコマンドである。これによりコンテナが起動し続け、docker ps で確認できるようになる。
-
コンテナの起動状況を確認
以下コマンドを実行
docker ps
結果、以下のようにansible-containerが表示されれば、コンテナの構築に成功している
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 44876981f384 ansible-container-image "sleep infinity" 7 seconds ago Up 7 seconds ansible-container
-
コンテナにログインする
docker exec -it ansible-container bash
-
Ansibleがインストールされているか確認
ansible --version
以下のようにAnsibleバージョンが表示されればOK
ansible [core 2.14.17] config file = /etc/ansible/ansible.cfg configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3.9/site-packages/ansible ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections executable location = /usr/bin/ansible python version = 3.9.21 (main, Dec 5 2024, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-2)] (/usr/bin/python3) jinja version = 3.1.2 libyaml = True
-
コンテナからログアウト
exit
-
持ち込んだtarファイルを削除
rm <tarファイル名>