Docker基本の使い方(イメージとコンテナの操作)

開発環境

本記事では、Dockerの最も基本的な概念であるイメージ(Image)とコンテナ(Container)の使い方の基本についてまとめます。

  • イメージ一覧の取得、ダウンロード、削除
  • コンテナの起動、停止、中への入り方(コンテナのターミナル起動)

各コマンドについては公式リファレンスへのリンクを貼ってあるので、更に細かい内容を知りたい場合はそちらをご参照ください。

Dockerのバージョンを確認する

自分の環境にインストールされているdockerのバージョンは下記で確認できます。

$ docker --version
Docker version 19.03.8, build afacb8b7f0

参考までに、公式サイトのリリースノートはこちら です。

イメージ(Image)の一覧を取得

ローカル環境に格納されているイメージの一覧を確認したいときは、docker image lsを使います。

筆者の環境で実行した例

$ docker image ls
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
hello-world             latest              fce289e99eb9        19 months ago       1.84kB

Dockerイメージをダウンロードする

Docker Hub から既存のイメージをダウンロードするには、docker pull コマンドを使います。
(docker fileを編集して自分専用の環境を作成することも出来ますが、長くなるので割愛)

使いかたは下記です。

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

引数はそれぞれ、

  • OPTIONSこちら を参照。特に設定せずデフォルトで問題ないと思います。
  • NAME:ダウンロードしたいイメージの名前です。
  • TAG:ダウンロードしたいイメージのバージョン等を指定したい時に使います。
  • TAGはDocker Hubのページに記載があります。以下はUbuntu の例です(2020年8月現在)。

    尚、TAGを指定しないと最新版(latest)が適用されます。

    Ubuntu Official image on Docker hub

Ubuntuイメージの最新(latest)をダウンロードする例を以下に示します。

$ docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
  :
  :
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

TAGを指定して18.04LTSをダウンロードした例を以下に示します

$ docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
  :
  :
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04

ダウンロードできたかdocker image lsで確認してみます。

$ docker image ls
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
ubuntu                  latest              adafef2e596e        2 weeks ago         73.9MB ★追加
ubuntu                  18.04               d27b9ffc5667        2 weeks ago         64.2MB ★追加
hello-world             latest              fce289e99eb9        19 months ago       1.84kB

イメージの削除

イメージを削除するには、docker rmi コマンドを使います。

docker rmi [OPTIONS] IMAGE [IMAGE...]

削除したいイメージの名前を引数に設定します。
尚、上記同様にTAGを付けて削除するイメージを指定することができます。TAGが省略された場合はlatestが指定されます。

具体的な例を以下に示します。

hibikisan@ubuntu:~$ docker rmi ubuntu
Untagged: ubuntu:latest
  :
  :
Deleted: sha256:d22cfd6a8b16689838c570b91794ed18acc752a08a10bce891cc64acc1533b3f

コンテナの起動、停止

Dockerイメージからコンテナを作成して起動、停止などの一連の操作を図にしてみました。

Command flow for container

以下にそれぞれの詳細について記載します。

Dockerイメージをコンテナとして起動し、そのコンテナに入る

docker run コマンドを使います。
使い方は以下。

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

イメージIMAGEからコンテナを作成し、その後指定したコマンドCOMMANDでコンテナを起動します。

また、OPITONを使っていろいろなモードで起動ができます。
沢山あるので詳細は公式リファレンスの記載 を参照ください。
本記事では、下記2つについて解説します。

➀-1 コンテナの中に入る(ターミナルを起動する)

-itオプションを設定します。

-itは、-i-tをまとめて表記したもので、それぞれ下記を意味しています。

  • -i, –interactive: 標準入力をopenしたままにする
  • -t, –tty: 疑似ターミナルを割り当てる

前章でダウンロードしたイメージ(ubuntu:18.04)をtestという名前のコンテナとして起動して、ターミナルを起動する操作例を示します。

$ docker run --name test -it ubuntu:18.04 ★docker runコマンド
root@bf70efb37b07:/#           ★(1) コンソールに入れた
root@bf70efb37b07:/# cat /etc/os-release ★(2) Ubuntu18.04に入れたことを確認
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"  
  :
  :
root@bf70efb37b07:/# exit         ★(3) ②exitコマンドでUbuntuから抜けた
exit

コンテナのターミナルを抜けるには、上記★(3)のようにexitコマンドを使います。但し、この場合コンテナ停止状態に遷移することに注意です。
docker psコマンドのSTATUS欄を確認すると、停止状態であることがわかります。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                          PORTS               NAMES
bf70efb37b07        ubuntu:18.04        "/bin/bash"         2 minutes ago       Exited (0) About a minute ago                       test

➀-2 Dockerイメージからコンテナを作成し、バックグラウンドで起動させる

-dオプションを設定します。

この場合はコンテナがバックグラウンドで起動しますのでターミナルは起動しません。また、今回はUbuntuのコンテナを立ち上げているだけなので何も起こりません。
尚、後々ターミナルを起動するために標準入力を使えるようにしたいので、-itオプションも付けています。

$ docker run -d --name test3 -it ubuntu
d85ce48bdeac3a4c681f20b8b8d04cbce9ce731d9a52a1b0bf30a415443b35f7

docker psコマンドで確認すると、意図通り起動していることがわかります。

hibikisan@ubuntu:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
d85ce48bdeac        ubuntu              "/bin/bash"         6 seconds ago       Up 4 seconds                                    test3
f290926fffcc        ubuntu              "/bin/bash"         5 minutes ago       Exited (0) 5 minutes ago                        test2
4ba41e0d645b        ubuntu:18.04        "/bin/bash"         2 weeks ago         Exited (0) 32 minutes ago                       test

③ 停止したコンテナの再開

停止したコンテナは、docker start コマンド、docker container start コマンドで再開できます。どちらのコマンドでも公式リファレンス上は同じ動作のようです。

使い方はそれぞれ以下です。

docker start [OPTIONS] CONTAINER [CONTAINER...]
docker container start [OPTIONS] CONTAINER [CONTAINER...]

具体的な例は以下です。

$ docker start test
test

// psコマンドで確認
$ docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
bf70efb37b07        ubuntu:18.04        "/bin/bash"         5 minutes ago       Up 5 seconds                            test

または

$ docker container start test
test

// psコマンドで確認
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
bf70efb37b07        ubuntu:18.04        "/bin/bash"         7 minutes ago       Up 4 seconds                            test

④ コンテナのターミナルを起動する

docker exec コマンドを使います。
使い方は下記です。

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

このコマンドは、起動しているコンテナCONTAINERで指定したコマンドCOMMANDを実行することができます。
今回の場合は、コンテナ生成時に-itオプションで標準入力を常時Openとし疑似ターミナルを割り当てた場合に使えます。

具体例を以下に示します。

$ docker exec -it test bash ★(1) docker execコマンド
root@bf70efb37b07:/#                  ★(2) コンソールに入りました
root@bf70efb37b07:/# cat /etc/os-release ★(3) 念の為、意図したコンテナのコンソールか確認
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"
  :
  :
root@bf70efb37b07:/# exit                 ★(4) ⑤exitコマンドでコンソールを抜ける
exit

コンテナのターミナルを抜けるには、上記★(4)のようにexitコマンドを使います。但し、この場合コンテナ起動状態に遷移することに注意です。(停止しないので注意!)
停止する場合は、docker stopコマンドを使います。(次項参照)

⑥ 稼働しているコンテナの停止

docker stop コマンド、またはdocker container stop コマンドを使います。

書式は以下です。

docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker container stop [OPTIONS] CONTAINER [CONTAINER...]

具体的な使い方は以下です。(どちらも同じなので、docker stopのみ)

$ docker stop test
test

// psコマンドで確認
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
4ba41e0d645b        ubuntu:18.04        "/bin/bash"         2 weeks ago         Exited (0) 15 minutes ago                       test

⑦ コンテナの削除

docker rm コマンドを使います。

使い方は以下。

docker rm [OPTIONS] CONTAINER [CONTAINER...]

具体例を以下に示します。

hibikisan@ubuntu:~$ docker rm test2
test2

尚、コンテナを消してもイメージは消えません。

環境

  • OS: Ubuntu18.04LTS
  • Docker version 19.03.8, build afacb8b7f0

まとめ

Dockerのイメージとコンテナの使い方の基本についてまとめました。

  • Dockerイメージの一覧の取得、Docker Hubを通した既存イメージのダウンロード、削除の方法
  • コンテナの起動、削除および中への入り方(ターミナル起動)

Learn more...

書籍でもう少し詳しく学びたい場合はこちらもどうぞ。筆者もかなり参考にさせてもらっています!

シェアする
ひびきをフォローする
Hbk project