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