昨日は Docker Hub から取ってきた CentOS のイメージをもとにしてコンテナを起動し、Tomcat をインストールして動かしてみた。
今日は、そのコンテナから Tomcat インストール済みのイメージを作ってみる。
現状確認
まずは現状の確認。イメージから。
takatoh@apostrophe $ sudo docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE centos 7 b5b4d78bc90c 39 hours ago 203MB
centos という名前のイメージがある。これは昨日 Docker Hub から取ってきたもの。
takatoh@apostrophe $ 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 という名前のイメージを作った。
takatoh@apostrophe $ sudo docker commit tomcat tomcat-image
イメージのリストを見ると、いま作ったイメージの名前が見える。
takatoh@apostrophe $ 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 からコンテナを起動してみよう。その前にログ用のディレクトリを作っておく。
takatoh@apostrophe $ sudo mkdir /var/log/tomcat-container2
で、コンテナ起動。コンテナ名は昨日のと被らないように tomcat2 とした。ホスト側のポートも 18082 にした。
takatoh@apostrophe $ sudo docker run -it -d -p 18082:8080 -v /var/log/tomcat-container2:/share/logs --name tomcat2 tomcat-image
コンテナの確認。起動した tomcat2 という名前のコンテナがあり、元になったイメージが tomcat-image であることがわかる。
takatoh@apostrophe $ 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 を起動。
takatoh@apostrophe $ sudo docker exec -it tomcat2 bash
[root@e2735abcaf58 /]# cd /opt/apache-tomcat-9.0.34 [root@e2735abcaf58 apache-tomcat-9.0.34]# ./bin/startup.sh
ホスト側のブラウザで localhost:18082 にアクセスすると、ちゃんと Tomcat が動いているのが確認できた。
今日はここまで。