このドキュメントで説明されているソフトウェアはサポートされていないか、拡張サポートが提供されています。
現在サポートされているリリースにアップグレードすることをお薦めします。
コンテナのコンテンツを変更する場合、docker commitコマンドを使用すると、コンテナの現在の状態をイメージとして保存できます。
次の例は、oraclelinux:6.6
イメージをベースとするコンテナを、Apache HTTPサーバーが実行できるように変更する方法を示しています。 コンテナを停止した後で、そのイメージmymod/httpd:v1
が作成されます。
oraclelinux:6.6
コンテナからApacheサーバー・イメージを作成する手順:
guest
という名前のコンテナ内でbashシェルを実行します。[root@host ~]#
docker run -i -t --name guest oraclelinux:6.6 /bin/bash
[root@guest ~]#Webプロキシを使用する場合は、『Oracle Linuxリリース7管理者ガイド』のhttps://docs.oracle.com/cd/E52668_01/E54669/html/ol7-proxy-config.htmlに関する項の説明に従ってゲストでyum構成を編集します。
httpd
パッケージをインストールします。[root@guest ~]#
yum install httpd
必要な場合は、ゲスト上の
/var/www/html
ディレクトリ階層以下に表示するWebコンテンツを作成します。ホスト上でdocker stopコマンドを使用してゲストを終了します。
[root@host ~]#
docker stop guest
guest停止したコンテナのIDを使用して、タグ
v1
の付いたイメージmymod/httpd
を作成します。[root@host ~]#
docker commit -m "ol6 + httpd" -a "A N Other"
\`docker ps -l -q` mymod/httpd:v1
8594abec905e6374db51bed1bfb208804cfb60d96b285efb897db581a01676e9イメージにメモや作成者を記述するには、-mオプションと-aオプションを使用します。 このコマンドでは、新しいイメージのIDの完全バージョンが返されます。
ここでdocker imagesコマンドを使用すると、新しいイメージがリストに表示されます。
[root@host ~]#
docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE mymod/httpd v1 8594abec905e 2 minutes ago 938.5 MB oraclelinux 6 9ac13076d2b5 5 days ago 319.4 MB oraclelinux 6.6 9ac13076d2b5 5 days ago 319.4 MB oraclelinux latest 073ded22ac0f 5 days ago 265.2 MB oraclelinux 7 073ded22ac0f 5 days ago 265.2 MB oraclelinux 7.0 073ded22ac0f 5 days ago 265.2 MBguest
という名前のコンテナを削除します。#
docker rm guest
guest
これで、次のように新しいイメージを使用して、Webサーバーとして機能するコンテナを作成できます。
# docker run -d --name newguest -p 8080:80 mymod/httpd:v1 /usr/sbin/httpd -D FOREGROUND
7afbbefec5191f632e149f85ae10ed0ba88f1c545daad18cb930e575ef6a3e63
-dオプションを使用すると、コマンドはバックグラウンドで非対話的に実行され、一意のコンテナIDの完全バージョンが表示されます。 -p 8080:80オプションは、ゲストのポート80をホストの8080にマップします。 ポート・マッピングを表示するには、次のようにdocker psまたはdocker portを実行します。
[root@host ~]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7afbbefec519 mymod/httpd:v1 ... ... 0.0.0.0:8080->80/tcp newguest [root@host ~]#docker port newguest 80
0.0.0.0:8080
docker psコマンドでは、コンテナIDの短縮バージョンが表示されます。 --no-truncオプションを使用すると、長いバージョンを表示できます。
デフォルトのIPアドレスの値0.0.0.0は、ホスト上のすべてのネットワーク・インタフェースにポート・マッピングが適用されることを意味します。 再マッピングの適用先のIPアドレスを制限するには、次のように複数の-pオプションを使用します。
#docker run -d --name newguest -p 127.0.0.1:8080:80 -p 192.168.1.2:8080:80
\mymod/httpd:v1 /usr/sbin/httpd -D FOREGROUND
ゲストが提供しているWebコンテンツを表示するには、ブラウザがホストのポート8080を参照するように指定します。 別のシステムからコンテンツにアクセスする場合は、次のようにホストのポートに対する着信接続の許可が必要になる可能性があります。
[root@host ~]#iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
[root@host ~]#service iptables save
イメージを削除する必要がある場合は、docker rmiコマンドを使用します。
[root@host ~]# docker rmi mymod/httpd:v1
Untagged: mymod/httpd:v1
Deleted: 7afbbefec5191f632e149f85ae10ed0ba88f1c545daad18cb930e575ef6a3e63
バージョン1.8のDockerから、実行中のコンテナのイメージを削除できません。
本番環境でdocker commitコマンドを使用してイメージを作成すると、そのイメージの作成手順を記録できる便利な方法がないので、消失や破損したイメージの再作成が困難になる場合があります。 イメージを作成する場合の推奨方法は、Dockerfileを設定して、ユーザーのかわりにDockerがイメージをビルドできるように命令を定義することです。 4.4項「DockerfileからのDockerイメージの作成」を参照してください。