本記事では、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イメージの最新(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イメージからコンテナを作成して起動、停止などの一連の操作を図にしてみました。
以下にそれぞれの詳細について記載します。
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を通した既存イメージのダウンロード、削除の方法
- コンテナの起動、削除および中への入り方(ターミナル起動)