DockerコンテナからDockerイメージをつくる

昨日は Docker Hub から取ってきた CentOS のイメージをもとにしてコンテナを起動し、Tomcat をインストールして動かしてみた。

今日は、そのコンテナから Tomcat インストール済みのイメージを作ってみる。

現状確認

まずは現状の確認。イメージから。

[email protected] $ sudo docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              7                   b5b4d78bc90c        39 hours ago        203MB

centos という名前のイメージがある。これは昨日 Docker Hub から取ってきたもの。

[email protected] $ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
2a1533db2a0e        centos:7            "/bin/bash"         31 hours ago        Exited (137) 31 hours ago                       tomcat

コンテナは tomcat という名前で残っている(停止中)。これは centos イメージから作ったものだ。

コンテナからイメージを作る

コンテナからイメージを作るには docker commit コマンドを使う。今回は tomcat コンテナから tomcat-image という名前のイメージを作った。

[email protected] $ sudo docker commit tomcat tomcat-image

イメージのリストを見ると、いま作ったイメージの名前が見える。

[email protected] $ sudo docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat-image        latest              fa94a527ab79        24 seconds ago      488MB
centos              7                   b5b4d78bc90c        39 hours ago        203MB

作ったイメージから新しいコンテナを起動

それじゃ、作ったばかりの tomcat-image からコンテナを起動してみよう。その前にログ用のディレクトリを作っておく。

[email protected] $ sudo mkdir /var/log/tomcat-container2

で、コンテナ起動。コンテナ名は昨日のと被らないように tomcat2 とした。ホスト側のポートも 18082 にした。

[email protected] $ sudo docker run -it -d -p 18082:8080 -v /var/log/tomcat-container2:/share/logs --name tomcat2 tomcat-image

コンテナの確認。起動した tomcat2 という名前のコンテナがあり、元になったイメージが tomcat-image であることがわかる。

[email protected] $ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS                     NAMES
e2735abcaf58        tomcat-image        "/bin/bash"         28 seconds ago      Up 26 seconds               0.0.0.0:18082->8080/tcp   tomcat2
2a1533db2a0e        centos:7            "/bin/bash"         31 hours ago        Exited (137) 31 hours ago                             tomcat

コンテナの中に入って Tomcat を起動。

[email protected] $ sudo docker exec -it tomcat2 bash
[[email protected] /]# cd /opt/apache-tomcat-9.0.34
[[email protected] apache-tomcat-9.0.34]# ./bin/startup.sh

ホスト側のブラウザで localhost:18082 にアクセスすると、ちゃんと Tomcat が動いているのが確認できた。

今日はここまで。

カテゴリー: misc パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください