背景
環境構築を楽にするために、docker の勉強をしております。
今回はコンテナをイメージに変換することでイメージを作成する方法を手順として残します。
環境
Amazon Linux release 2 (Karoo)
Docker version 20.10.4
手順
docker インストール
以下の記事に手順を残してありますので、ご参照ください。
ベースにするイメージをダウンロード
まずは特に何もインストールされていないイメージからコンテナを作成します。
ベースにするイメージは使い慣れている centos を使用します。
sudo docker pull centos:centos7
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos centos7 8652b9f0cb4c 7 months ago 204MB
ベースコンテナ作成
先ほどダウンロードしたイメージからコンテナを作成します。
sudo docker run -tid --name httpd centos:centos7 /bin/bash
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d53dfa8d379d centos:centos7 "/bin/bash" 10 seconds ago Up 9 seconds httpd
コンテナの中に入ります。
sudo docker exec -ti httpd bash
コンテナの中で今回は試しに Apache をインストールします。
yum install -y httpd
インストール後、exit
でコンテナから出ます。
イメージ作成
作成したコンテナを元にイメージを作成します。
sudo docker commit httpd new-httpd
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
new-httpd latest b8f1cc489fd4 3 minutes ago 360MB
ベースのコンテナを削除します。
sudo docker stop httpd
sudo docker rm httpd
これで完成です。
確認
作成したイメージからコンテナを作成します。
htmlファイルを配置するディレクトリを作って、ドキュメントルートにマウントします。
sudo docker run -d -p 80:80 -v "/opt/app/:/var/www/html/" --name newHttpd new-httpd /usr/sbin/httpd -DFOREGROUND
URLをブラウザに入力して、配置したhtmlファイルが表示されていれば大丈夫です。
最後に
この程度であれば、DockerFile を作った方が早いと思いますが、ミドルウェアに色々設定したい場合は今回の方法もありかもしれません。
しかし、DockerFile の方が何をしたのか一目で分かるのと変更点もわかりやすいので、DockerFile で作成する方法をおすすめします。
DockerFile からイメージ作成する方法は別記事にまとめましたので、以下をご参照ください。
最後まで読んでいただきありがとうございました。