Docker イメージの使用
コンテナを実行するとき、使用するイメージがローカルに存在しない場合、docker は自動的に docker イメージレジストリからダウンロードします。デフォルトでは Docker Hub のパブリックイメージソースからダウンロードします。
それでは、次のことを学びましょう:
- 1、ローカルの Docker ホストイメージを管理および使用する
- 2、イメージを作成する
镜像列表一覧を表示する
次を使用できますdocker imagesローカルホスト上のイメージを一覧表示します。
サンプル@サンプル:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04 90d5884b1ee0 5 days ago 188 MB php 5.6 f40e9e0f10c8 9 days ago 444.8 MB nginx latest 6f8d099c3adc 12 days ago 182.7 MB mysql 5.6 f2e8d6c772c0 3 weeks ago 324.6 MB httpd latest 02ef73cf1bc0 3 weeks ago 194.4 MB ubuntu 15.10 4e3b13c8a266 4 weeks ago 136.3 MB hello-world latest 690ed74de00f 6 months ago 960 B training/webapp latest 6fae60ef3446 11 months ago 348.8 MB
各オプションの説明:
-
REPOSITORY:イメージのリポジトリソースを表します
-
TAG:イメージのタグ
-
IMAGE ID:イメージID
-
CREATED:イメージの作成日時
-
SIZE:イメージのサイズ
同じリポジトリソースには複数の TAG を設定でき、このリポジトリソースの異なるバージョンを表します。たとえば、ubuntu リポジトリソースには 15.10、14.04 など複数の異なるバージョンがあります。REPOSITORY:TAG を使用して異なるイメージを定義します。
したがって、バージョン15.10のubuntuシステムイメージを使用してコンテナを実行する場合、コマンドは次のとおりです。
サンプル@サンプル:~$ docker run -t -i ubuntu:15.10 /bin/bash root@d77ccb2e5cca:/#
パラメータの説明:
- -i: インタラクティブ操作。
- -t: ターミナル。
- ubuntu:15.10: これは、ubuntu 15.10 バージョンのイメージをベースにしてコンテナを起動することを意味します。
- /bin/bash: イメージ名の後に置くのはコマンドです。ここではインタラクティブなシェルを希望するため、/bin/bash を使用します。
バージョン 14.04 の ubuntu システムイメージを使用してコンテナを実行する場合、コマンドは次のとおりです。
サンプル@サンプル:~$ docker run -t -i ubuntu:14.04 /bin/bash root@39e968165990:/#
イメージのバージョンタグを指定しない場合、たとえば ubuntu のみを使用すると、docker はデフォルトで ubuntu:latest イメージを使用します。
新しいイメージを取得する
ローカルホスト上で存在しないイメージを使用すると、Docker は自動的にそのイメージをダウンロードします。事前にこのイメージをダウンロードしたい場合は、docker pull コマンドを使用してダウンロードできます。
Cサンプル@サンプル:~$ docker pull ubuntu:13.10 13.10: Pulling from library/ubuntu 6599cadaf950: Pull complete 23eda618d451: Pull complete f0be3084efe9: Pull complete 52de432f084b: Pull complete a3ed95caeb02: Pull complete Digest: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3 Status: Downloaded newer image for ubuntu:13.10
ダウンロードが完了したら、このイメージを直接使用してコンテナを実行できます。
イメージを検索する
Docker Hub のウェブサイトからイメージを検索できます。Docker Hub のURLは次のとおりです。https://hub.docker.com/
docker search コマンドを使用してイメージを検索することもできます。たとえば、Web サービスとして httpd イメージが必要な場合、docker search コマンドで httpd を検索して、適切なイメージを見つけることができます。
サンプル@サンプル:~$ docker search httpd
画像をクリックして拡大表示:
NAME: イメージリポジトリソースの名前
DESCRIPTION: イメージの説明
OFFICIAL: docker 公式リリースかどうか
stars: Github の star に似ており、「いいね」や「お気に入り」を意味します。
AUTOMATED: 自動ビルド。
イメージをプルする
上図の httpd 公式バージョンのイメージを使用することにしたので、docker pull コマンドでイメージをダウンロードします。
サンプル@サンプル:~$ docker pull httpd Using default tag: latest latest: Pulling from library/httpd 8b87079b7a06: Pulling fs layer a3ed95caeb02: Download complete 0d62ec9c6a76: Download complete a329d50397b9: Download complete ea7c1f032b5c: Waiting be44112b72c7: Waiting
ダウンロードが完了すると、このイメージを使用できます。
サンプル@サンプル:~$ docker run httpd
イメージを削除する
イメージの削除にはdocker rmiコマンドを使用します。たとえば、hello-world イメージを削除する場合:
$ docker rmi hello-world

イメージを作成する
docker イメージレジストリからダウンロードしたイメージが要件を満たさない場合、次の2つの方法でイメージを変更できます。
- 1、作成済みのコンテナからイメージを更新し、このイメージをコミットする
- 2、Dockerfile の命令を使用して新しいイメージを作成する
イメージを更新する
イメージを更新する前に、イメージを使用してコンテナを作成する必要があります。
サンプル@サンプル:~$ docker run -t -i ubuntu:15.10 /bin/bash
コンテナに入ったら、システムを更新します:
apt-get update apt-get upgrade -y
操作が完了したら、exit コマンドを入力してこのコンテナを終了します。
exit
このとき、ID が e218edb10161 のコンテナは、要件に応じて変更されたコンテナです。docker commit コマンドでコンテナのコピーをコミットできます。
サンプル@サンプル:~$ docker commit -m="has update" -a="サンプル" e218edb10161 サンプル/ubuntu:v2 sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
各パラメータの説明:
-
-m:コミットの説明情報
-
-a:イメージの作者を指定
-
e218edb10161:コンテナ ID
-
サンプル/ubuntu:v2:作成するターゲットイメージ名を指定
次を使用できますdocker imagesコマンドで新しいイメージを確認できますサンプル/ubuntu:v2:
サンプル@サンプル:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE サンプル/ubuntu v2 70bf1840fd7c 15 seconds ago 158.5 MB ubuntu 14.04 90d5884b1ee0 5 days ago 188 MB php 5.6 f40e9e0f10c8 9 days ago 444.8 MB nginx latest 6f8d099c3adc 12 days ago 182.7 MB mysql 5.6 f2e8d6c772c0 3 weeks ago 324.6 MB httpd latest 02ef73cf1bc0 3 weeks ago 194.4 MB ubuntu 15.10 4e3b13c8a266 4 weeks ago 136.3 MB hello-world latest 690ed74de00f 6 months ago 960 B training/webapp latest 6fae60ef3446 12 months ago 348.8 MB
新しいイメージを使用してサンプル/ubuntuコンテナを起動します
サンプル@サンプル:~$ docker run -t -i サンプル/ubuntu:v2 /bin/bash root@1a9fbdeb5da3:/#
イメージを構築する
次のコマンドを使用しますdocker build、ゼロから新しいイメージを作成します。そのためには、Docker にイメージの構築方法を指示する一連の命令を含む Dockerfile ファイルを作成する必要があります。
サンプル@サンプル:~$ cat Dockerfile FROM centos:6.7 MAINTAINER Fisher "[email protected]" RUN /bin/echo 'root:123456' |chpasswd RUN useradd サンプル RUN /bin/echo 'サンプル:123456' |chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D
各命令はイメージ上に新しいレイヤーを作成します。各命令の接頭辞は大文字でなければなりません。
最初の FROM は、どのイメージソースを使用するかを指定します。
RUN 命令は docker にイメージ内でコマンドを実行し、何かをインストールすることを指示します。。。
次に、Dockerfile ファイルを使用して、docker build コマンドでイメージを構築します。
サンプル@サンプル:~$ docker build -t サンプル/centos:6.7 . Sending build context to Docker daemon 17.92 kB Step 1 : FROM centos:6.7 ---> d95b5ca17cc3 Step 2 : MAINTAINER Fisher "[email protected]" ---> Using cache ---> 0c92299c6f03 Step 3 : RUN /bin/echo 'root:123456' |chpasswd ---> Using cache ---> 0397ce2fbd0a Step 4 : RUN useradd サンプル ......
パラメータの説明:
-
-t:作成するターゲットイメージ名を指定
-
.:Dockerfile ファイルが置かれているディレクトリ。Dockerfile の絶対パスを指定できます。
docker images を使用して、作成したイメージがリストに存在することを確認します。イメージIDは 860c279d2fec です。
サンプル@サンプル:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE サンプル/centos 6.7 860c279d2fec About a minute ago 190.6 MB サンプル/ubuntu v2 70bf1840fd7c 17 hours ago 158.5 MB ubuntu 14.04 90d5884b1ee0 6 days ago 188 MB php 5.6 f40e9e0f10c8 10 days ago 444.8 MB nginx latest 6f8d099c3adc 12 days ago 182.7 MB mysql 5.6 f2e8d6c772c0 3 weeks ago 324.6 MB httpd latest 02ef73cf1bc0 3 weeks ago 194.4 MB ubuntu 15.10 4e3b13c8a266 5 weeks ago 136.3 MB hello-world latest 690ed74de00f 6 months ago 960 B centos 6.7 d95b5ca17cc3 6 months ago 190.6 MB training/webapp latest 6fae60ef3446 12 months ago 348.8 MB
新しいイメージを使用してコンテナを作成できます
サンプル@サンプル:~$ docker run -t -i サンプル/centos:6.7 /bin/bash [root@41c28d18b5fb /]# id サンプル uid=500(サンプル) gid=500(サンプル) groups=500(サンプル)
上記から、新しいイメージには作成したユーザー サンプル が含まれていることがわかります。
イメージタグを設定する
docker tag コマンドを使用して、イメージに新しいタグを追加できます。
サンプル@サンプル:~$ docker tag 860c279d2fec サンプル/centos:dev
docker tag イメージID、ここでは 860c279d2fec 、ユーザー名、イメージソース名(repository name)、新しいタグ名(tag)を指定します。
docker images コマンドを使用すると、ID が 860c279d2fec のイメージにタグが1つ追加されていることがわかります。
サンプル@サンプル:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE サンプル/centos 6.7 860c279d2fec 5 hours ago 190.6 MB サンプル/centos dev 860c279d2fec 5 hours ago 190.6 MB サンプル/ubuntu v2 70bf1840fd7c 22 hours ago 158.5 MB ubuntu 14.04 90d5884b1ee0 6 days ago 188 MB php 5.6 f40e9e0f10c8 10 days ago 444.8 MB nginx latest 6f8d099c3adc 13 days ago 182.7 MB mysql 5.6 f2e8d6c772c0 3 weeks ago 324.6 MB httpd latest 02ef73cf1bc0 3 weeks ago 194.4 MB ubuntu 15.10 4e3b13c8a266 5 weeks ago 136.3 MB hello-world latest 690ed74de00f 6 months ago 960 B centos 6.7 d95b5ca17cc3 6 months ago 190.6 MB training/webapp latest 6fae60ef3446 12 months ago 348.8 MBその他の拡張
