docker イメージの作成(コンテナをイメージに変換)


背景

環境構築を楽にするために、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 からイメージ作成する方法は別記事にまとめましたので、以下をご参照ください。

最後まで読んでいただきありがとうございました。