Docker コンテナの制御

Docker Hub には様々な Docker イメージが配布されている。基本的なシステムである Ubuntu や CentOS のほかに、特定の目的に特化したイメージも配布されている。例えば、バイオインフォマティクスでよく使われているソフトウェアがすでにインストールされた Linux イメージなども配布されている。

コンテナの作成

Docker コンテナ本体を作成する場合、そのコンテナの設計図(イメージ)を先に入手する必要がある。Docker のイメージは、Docker Hub で配布されて、Docker の pull コマンドで取得できる。例えば、Ubuntu 20.04 (Docker Hub) のイメージを取得する場合は次のようなコマンドを実行する。

docker image pull ubuntu:20.04
# 20.04: Pulling from library/ubuntu
# Digest: sha256:c844b5fee673cd976732dda6860e09b8f2ae5b324777b6f9d25fd70a0904c2e0
# Status: Downloaded newer image for ubuntu:20.04
# docker.io/library/ubuntu:20.04

ホスト上に保存されているイメージの一覧を出力させるには image ls コマンドを利用する。Docker イメージに対する制御は基本的に image を介して行う。

docker image ls -a
# REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
# ubuntu              20.04               adafef2e596e        5 days ago          73.9MB

Docker イメージからコンテナを作成するコマンドは run である。次のコマンドは、buntu:20.04 イメージから c_01 という名前のコンテナを生成する例を示してある。Ubuntu DVD を使って Ubuntu をインストールする、あるいはプログラミング言語でいうクラスからインスタンスを生成する、あたりの作業をイメージするとわかりやすい。

docker container run -i -t --name c_01 ubuntu:20.04
# root@a587da77b391:/#

コンテナが生成されると、root@a587da77b391 のように表示される。root は Ubuntu のルートユーザーであり、@ 以降の a587da77b391 は自動生成されるコンテナ ID である。このとき、そのターミナルが Ubuntu 20.04 のターミナルとなって使用できるようになる。例えば、次のように lscd などのコマンドが使える。

ls /
## bin   dev  home  lib32  libx32  mnt  proc  run   srv  tmp  var
## boot  etc  lib   lib64  media   opt  root  sbin  sys  usr

cd
pwd

## /root

echo "hello world" >> hello_world.txt

ls
## hello_world.txt

exit

コンテナのターミナルを使用しているとき、コンテナの Ubuntu からログアウトしてコンテナを停止する場合は、exit コマンドを使用して Ubuntu からログアウトすればよい。

作成済みのコンテナ一覧を表示させる場合は ls コマンドを使用する。

docker container ls -a
## CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS   NAMES
## a587da77b391        ubuntu:20.04        "/bin/bash"         7 minutes ago       Exited (0) 3 minutes ago            c_01

コンテナの起動と停止

ホスト OS 上で、作成済みのコンテナを起動してログインするには、startattach コマンドを使用する。このとき、コンテナを作成する際に付けた名前を指定する。

docker container start c_01
docker container attach c_01

ログインしてあるコンテナのターミナルからコンテナを停止させたい場合は、そのターミナルでexit コマンドを実行する。また、ホスト OS からコンテナを停止させたい場合は、stop コマンドを使用する。

docker container stop c_01

コンテナの削除

作成したコンテナを削除するときは rm コマンドを使用する。このとき、削除対象のコンテナを予め停止させておく必要がある。

docker container rm c_01

コンテナのコミット

コンテナをコミットすると、そのコンテナが Docker のイメージとしてローカルで管理できるようになる。

docker container commit a587da77b391 ubuntu:c_01