Memo

メモ > サーバ > 各論: Docker > イメージを作成

イメージを作成
■イメージを作成(commitコマンド) ※実際にコンテナに対して行った操作内容をもとに、イメージを作成する。
$ docker container run --name php -v $PWD/docker/test/code:/var/www/html -p 80:80 -d php:8.1-apache $ docker container exec -it php bash … phpコンテナのターミナルに接続。 # touch /root/test1.txt … テストファイルを作成しておく。 # touch /root/test2.txt # exit $ docker container diff php … コンテナ「php」内の差分を表示。(テストファイルの存在を確認する。) $ docker container commit php php:create_file … コンテナ「php」のイメージを「php:create_file」という名前で作成。 $ docker container run --name php -v $PWD/docker/test/code:/var/www/html -p 80:80 -d php:create_file … 作成したイメージから起動。 $ docker container exec -it php bash … phpコンテナのターミナルに接続。 # ls /root … テストファイルを確認する。 $ docker container rm -f $(docker container ls -a -q) … 作成済みのコンテナをいったん終了。
■イメージを作成(buildコマンド) ※コンテナへの操作内容をDockerfile(テキストファイル)に記載し、それをもとにイメージを作成する。 ※Dockerfileさえ渡せば、他の人も同じ環境を再現できる。 ※操作内容が明確になり、gitで変更履歴を管理することもできるため、原則としてこちらの方法を推奨。
$ docker image ls … 上で作成したイメージのIDを確認。 $ docker image rm f51b32dd3fc4 … 削除しておく。
docker\php_create_file\Dockerfile … Dockerfileを作成。
FROM php:8.1-apache RUN touch /root/test1.txt RUN touch /root/test2.txt
$ docker image build -t php:create_file docker/php_create_file … Dockerfileをもとに、新しいイメージをビルド。 $ docker image ls … 作成されたイメージを確認。 $ docker container run --name php -v $PWD/docker/test/code:/var/www/html -p 80:80 -d php:create_file … 作成したイメージから起動。 $ docker container exec -it php bash … phpコンテナのターミナルに接続。 # ls /root … テストファイルを確認する。 $ docker container rm -f $(docker container ls -a -q) … 作成済みのコンテナをいったん終了。

Advertisement