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 のターミナルとなって使用できるようになる。例えば、次のように ls
や cd
などのコマンドが使える。
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 上で、作成済みのコンテナを起動してログインするには、start
と attach
コマンドを使用する。このとき、コンテナを作成する際に付けた名前を指定する。
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