Dockerの基本操作

Dockerイメージの入手

レポジトリの検索(docker search)

docker serarchはDocker Hubのリポジトリを検索するコマンドです。
「NAME」に表示されるのがリポジトリ名です。Docker Hubではリポジトリ名は「centos」のように単一の文字列で構成されるものと、「/」で区切った2つの文字列で構成されるものがあります。
単一文字列のものがDocker社が管理、登録する公式のリポジトリ、 2つの文字列で構成されるリポジトリは「ユーザ名/ユーザが指定したリポジトリ名」で非公式なリポジトリとなります。

$ docker search centos
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   4914                [OK]
ansible/centos7-ansible            Ansible on Centos7                              119                                     [OK]

タグの確認

Dockerイメージのバージョンはタグで管理されています。
Centosのレポジトリに登録されているタグを確認します。

$ curl -s https://registry.hub.docker.com/v2/repositories/library/centos/tags/ | jq '.results[].name' | sort
"centos6"
"centos6.6"
"centos6.7"
"centos7"
"latest"
…

イメージのダウンロード(docker pull)

docker pullはDockerのイメージをダウンロードするコマンドです。
ダウンロードするDockerイメージは、「レジストリ名:タグ名」で指定します。
タグ名を指定しない場合には自動で「latest」のタグが指定されます。
centos 7のタグのDockerイメージをダウンロードします。

$ docker pull centos:centos7

ダウンロードしたイメージの確認(docker images)

docker imagesはローカルに存在するDockerイメージの一覧を表示します。
ダウンロードしたDockerイメージを確認します。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              centos7             75835a67d134        5 weeks ago         200MB

Dockerコンテナの起動および状態確認

Dockerコンテナの起動(docker run)

docker runはDockerコンテナを起動するコマンドです。
コンテナが起動するとbashプロンプトが表示され、コンテナにログインした状態となります。

$ docker run --name cent01 -i -t centos:centos7 /bin/bash
[[email protected] /]#

オプション

  • --nane:作成するコンテナの名前
    ※指定しない場合には適当な名前が自動で付与されます。
  • -i:コンテナ起動時に標準入力を受け付ける
  • -t: 仮想端末をコンテナに割り当てる

テスト用のファイル作成

テスト用に適当なファイルを作成し、Dockerコンテナからexitします。
コンテナからexitするとコンテナは停止します。

[[email protected] /]# echo "Docker test file." > /root/docker_test.txt
[[email protected] /]# cat /root/docker_test.txt
Docker test file.
[[email protected] /]# exit
exit
$

Dockerコンテナの状態確認(docker ps)

docker psはコンテナの状況を表示します。
オプションを指定しないで実行すると、起動中のDockerコンテナのみが表示されます。
-aオプションを付与することで停止中のコンテナの状況も表示されるようになります。

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
929acf6b8df8        centos:centos7      "/bin/bash"         4 minutes ago       Exited (0) 2 minutes ago                       cent01
$

cent01の「STATUS」は「Exited」となっており、停止中となります。

Dockerイメージの作成

Dockerイメージの作成(docker commit)

docker commitはDockerコンテナのイメージを作成するコマンドです。
/root/docker_test.txtを作成したコンテナを再利用できるようにコンテナのイメージ化を行います。
docker commitコマンドの第一引数には「CONTAINER ID」第二引数にはタグ名を指定します。

$ docker commit 929acf6b8df8 centos:cent01
sha256:acaebc78df04193d287e83091a0638a284d8e2ed9a753bfb06178a2ebd75e9f2

Dockerイメージの一覧

作成されたイメージを確認します。
cent01というTAGのイメージが存在することが確認できます。

$  docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              cent01              acaebc78df04        46 seconds ago      200MB
centos              centos7             75835a67d134        5 weeks ago         200MB

作成したイメージのDockerコンテナの起動

作成したcent01のイメージを使用して、コンテナを起動します。

$ docker run --name cent02 -i -t centos:cent01 /bin/bash
[[email protected] /]#

テスト用に作成したファイルの確認

/root/docker_test.txtのファイルが存在することを確認します。

[[email protected] /]# cat /root/docker_test.txt
Docker test file.
[[email protected] /]# exit
exit
$

Dockerコンテナおよびイメージの削除

作業後のコンテナの状態確認

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
7d0d18dd5f5c        centos:cent01       "/bin/bash"         16 minutes ago      Exited (0) 15 minutes ago                       cent02
929acf6b8df8        centos:centos7      "/bin/bash"         37 minutes ago      Exited (0) 35 minutes ago                       cent01

Dockerコンテナの削除(docker rm)

docker rmはDockerコンテナを削除するコマンドです。
引数には「CONTAINER ID」もしくは「NAMES」の値を指定します。

$ docker rm 929acf6b8df8
929acf6b8df8
$ docker rm cent02
cent02
$
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
稼働中のコンテナを強制的に削除するためには-fオプションを付与する必要があります。
全てのコンテナを削除する場合には、下記のコマンドで削除が可能です。

$ docker rm $(docker ps -aq)

Dockイメージの削除(docker rmi)

docker rmiコマンドはローカルに保存されているDockerイメージを削除します。
引数には、「IMAGE ID」を指定します。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              cent01              acaebc78df04        About an hour ago   200MB
centos              centos7             75835a67d134        5 weeks ago         200MB
$
$ docker rmi acaebc78df04
Untagged: centos:cent01
Deleted: sha256:acaebc78df04193d287e83091a0638a284d8e2ed9a753bfb06178a2ebd75e9f2
Deleted: sha256:f23a00f17da27d44045a788d1def6964af79c7d455c3f819c58b5074bbca9988
$ docker rmi 75835a67d134
Untagged: centos:centos7
Untagged: [email protected]:67dad89757a55bfdfabec8abd0e22f8c7c12a1856514726470228063ed86593b
Deleted: sha256:75835a67d1341bdc7f4cc4ed9fa1631a7d7b6998e9327272afea342d90c4ab6d
Deleted: sha256:f972d139738dfcd1519fd2461815651336ee25a8b54c358834c50af094bb262f
$
削除対象のイメージが別のイメージをベースに作成したもの場合、下記のメッセージが出力され削除することができません。その際には、先に削除対象のイメージをベースにして作成たイメージを先に削除する必要があります。

$ docker rmi 75835a67d134
Error response from daemon: conflict: unable to delete 75835a67d134 (cannot be forced) - image has dependent child images
全てのイメージをの削除する場合には、下記のコマンドで削除が可能です。

$ docker rmi $(docker images -q)

コメント