English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Docker イメージの使用

コンテナを実行する際に、ローカルに存在しないイメージを使用する場合、dockerは自動的にDockerイメージリポジトリからダウンロードします。デフォルトでは、Docker Hubの公共イメージリポジトリからダウンロードされます。

以下で学びましょう:

  • 1、ローカルDockerホストイメージの管理と使用

  • 2、イメージの作成

イメージリストの表示

我们可以使用 docker images を使用してローカルホスト上のイメージをリストアップします。

w3codebox@w3codebox:~$ docker images           
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu              14.04               90d5884b1ee0        5 日前          188 MB
php                 5.6                 f40e9e0f10c8        9 日前          444.8 MB
nginx 最新版              6f8d099c3adc        12 日前         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 週前         324.6 MB
httpd 最新版 02ef73cf1bc0        3 週前         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 週前         136.3 MB
hello-world 最新版              690ed74de00f        6 ヶ月前        960 B
training/webapp 最新版              6fae60ef3446        11 ヶ月前       348.8 MB

各オプションの説明:

  • REPOSITORY:はイメージのリポジトリを表します

  • TAG:イメージのタグ

  • IMAGE ID:イメージID

  • CREATED:イメージ作成時間

  • SIZE:イメージサイズ

同一のリポジトリソースには複数のTAGがあり、それがリポジトリソースの異なるバージョンを表します。例えば、ubuntuリポジトリソースには、 15.10、14.04 など、複数の異なるバージョンを使用する場合、REPOSITORY:TAGを使用して異なるイメージを定義します。

したがって、バージョンが15.10のubuntuシステムイメージでコンテナを実行する場合、以下のコマンドを使用します:

w3codebox@w3codebox:~$ 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システムイメージでコンテナを実行する場合、以下のコマンドを使用します:

w3codebox@w3codebox:~$ docker run -t -i ubuntu:14.04 /bin/bash 
root@:39e968165990:/#

もしイメージのバージョンタグを指定しない場合、例えば「ubuntu」だけを使用した場合、dockerはデフォルトで「ubuntu:latest」イメージを使用します。

新しいイメージを取得

ローカルホスト上で存在しないイメージを使用する場合、Docker は自動的にこのイメージをダウンロードします。このイメージを事前にダウンロードしたい場合は、docker pull コマンドを使用してダウンロードすることができます。

Cw3codebox@w3codebox:~$ 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 を使用してイメージを検索することもできます。例えば、私たちのウェブサービスとして使用する httpd イメージが必要であれば、docker search コマンドで httpd を検索して適切なイメージを見つけることができます。

w3codebox@w3codebox:~$  docker search httpd

NAME: イメージリポジトリの名前

DESCRIPTION: イメージの説明

OFFICIAL: Docker 公式リリースかどうか

stars: Github 内の star に似て、いいね、好きな意味を示します。

AUTOMATED: 自動構築

イメージをダウンロード

私たちは上の図に示される httpd 公式バージョンのイメージを使用することに決めました。イメージをダウンロードするためにコマンド docker pull を使用します。

w3codebox@w3codebox:~$ 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

ダウンロードが完了すると、このイメージを使用することができます。

w3codebox@w3codebox:~$ docker run httpd

删除镜像

镜像删除使用 docker rmi 命令,比如我们删除 hello-world 镜像:

$ docker rmi hello-world

创建镜像

当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

  • 1、从已经创建的容器中更新镜像,并且提交这个镜像

  • 2、使用 Dockerfile 指令来创建一个新的镜像

更新镜像

更新镜像之前,我们需要使用镜像来创建一个容器。

w3codebox@w3codebox:~$ docker run -t -i ubuntu:15.10 /bin/bash
root@e218edb10161:/#

在运行的容器内使用 apt-get update 命令进行更新。

在完成操作之后,输入 exit 命令来退出这个容器。

此时 ID 为 e218edb10161 的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit 来提交容器副本。

w3codebox@w3codebox:~$ docker commit -m="has update" -a="w3codebox" e218edb10161 w3codebox/ubuntu:v2
sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8

各个参数说明:

  • -m: 提交的描述信息

  • -a: 指定镜像作者

  • e218edb10161:容器 ID

  • w3codebox/ubuntu:v2: 指定要创建的目标镜像名

我们可以使用 docker images 命令来查看我们的新镜像 w3codebox/ubuntu:v2

w3codebox@w3codebox:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
w3codebox/ubuntu v2                  70bf1840fd7c        15 seconds ago      158.5 MB
ubuntu              14.04               90d5884b1ee0        5 日前          188 MB
php                 5.6                 f40e9e0f10c8        9 日前          444.8 MB
nginx 最新版              6f8d099c3adc        12 日前         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 週前         324.6 MB
httpd 最新版 02ef73cf1bc0        3 週前         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 週前         136.3 MB
hello-world 最新版              690ed74de00f        6 ヶ月前        960 B
training/webapp 最新版              6fae60ef3446        12 ヶ月前       348.8 MB

使用我们的新镜像 w3codebox/ubuntu 来启动一个容器

w3codebox@w3codebox:~$ docker run -t -i w3codebox/ubuntu:v2 /bin/bash                            
root@:1a9fbdeb5da3:/#

构建镜像

我们使用命令 docker build 、从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

w3codebox@w3codebox:~$ cat Dockerfile 
FROM    centos:6.7
MAINTAINER      Fisher "[email protected]"
RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd w3codebox
RUN     /bin/echo 'w3codebox: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 命令来构建一个镜像。

w3codebox@w3codebox:~$ docker build -t w3codebox/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 w3codebox
......

参数说明:

  • -t :指定要创建的目标镜像名

  • . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

使用docker images 查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec

w3codebox@w3codebox:~$ docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
w3codebox/centos       6.7                 860c279d2fec        About a minute ago   190.6 MB
w3codebox/ubuntu v2                  70bf1840fd7c        17 時間前         158.5 MB
ubuntu              14.04               90d5884b1ee0        6 日前           188 MB
php                 5.6                 f40e9e0f10c8        10 日前          444.8 MB
nginx 最新版              6f8d099c3adc        12 日前          182.7 MB
mysql               5.6                 f2e8d6c772c0        3 週前          324.6 MB
httpd 最新版 02ef73cf1bc0        3 週前          194.4 MB
ubuntu              15.10               4e3b13c8a266        5 週前          136.3 MB
hello-world 最新版              690ed74de00f        6 ヶ月前         960 B
centos              6.7                 d95b5ca17cc3        6 ヶ月前         190.6 MB
training/webapp 最新版              6fae60ef3446        12 ヶ月前        348.8 MB

新しいイメージを使用してコンテナを作成することができます。

w3codebox@w3codebox:~$ docker run -t -i w3codebox/centos:6.7  /bin/bash
[root@41c28d18b5fb /]# id w3codebox
uid=500(w3codebox) gid=500(w3codebox) groups=500(w3codebox)

上記から、新しいイメージには作成したユーザー wが含まれていることがわかります。3codebox。

イメージタグの設定

docker tag コマンドを使用して、イメージに新しいタグを追加することができます。

w3codebox@w3codebox:~$ docker tag 860c279d2fec w3codebox/centos:dev

docker tag イメージID、ここでは 860c279d2fec、ユーザー名、イメージリポジトリ名(repository name)および新しいタグ名(tag)が表示されます。

docker images コマンドを使用すると、IDが860c279d2fecのイメージには一つのタグが追加されています。

w3codebox@w3codebox:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
w3codebox/centos       6.7                 860c279d2fec        5 時間前         190.6 MB
w3codebox/centos 開発版                 860c279d2fec        5 時間前         190.6 MB
w3codebox/ubuntu v2                  70bf1840fd7c        22 時間前        158.5 MB
ubuntu              14.04               90d5884b1ee0        6 日前          188 MB
php                 5.6                 f40e9e0f10c8        10 日前         444.8 MB
nginx 最新版              6f8d099c3adc        13 日前         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 週前         324.6 MB
httpd 最新版 02ef73cf1bc0        3 週前         194.4 MB
ubuntu              15.10               4e3b13c8a266        5 週前         136.3 MB
hello-world 最新版              690ed74de00f        6 ヶ月前        960 B
centos              6.7                 d95b5ca17cc3        6 ヶ月前        190.6 MB
training/webapp 最新版              6fae60ef3446        12 ヶ月前       348.8 MB