メモ > サーバ > 各論: 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