はじめに
「イメージ操作系」「コンテナ操作系」に分類されるようなので、その観点で操作についてみていく(前段として、Docker Hubとは?とDockerイメージのTagとは?についても整理してみた)。
※以下の操作はDocker Hubのアカウントを持っている事を前提にしている。Docker Hubへの登録は https://hub.docker.com/signup からできる。
Docker Hubについて
Dockerコンテナを作成する際に必要になるDockerイメージが保管されているクラウド上のストレージ。Dcokerをインストールした際には、デフォルトでDocker Hubからそのイメージを取得するように設定されている。
Dockerイメージは、通常はユーザ名/イメージ名
という名前でないと利用できないが、Docker公式イメージは以下の図のようにユーザ名が省略されたイメージ名のみで利用できる。
DockerイメージのTagsについて
各DockerイメージのDescriptionにTagと呼ばれるものが記載されているが、大抵の場合これはversion名-OS名
という構成で表記されている事が多い。例えばnodeであれば、以下のようにTagの一覧があるが、17-alpine3.14
というのはNode.js17.xというversionでOSがalpine3.14という意味である。
※alpine
という聞きなれないOS名が出てきたが、これはDocker向けの軽量Linux。なんでDocker向けの軽量Linuxというものがあるのか?だが、Dockerではコンテナを作成する際に都度必要なイメージをダウンロードしてくるが、そのサイズが大きいと時間がかかるしディスク容量も圧迫してしまう。つまり、Dockerイメージが軽量(小さい)事が重要であり、そのためDocker向けの軽量Linuxというものがある。
そしてそのTagだが、サイトを見ると分かる通りリンクになっており、そのリンクをクリックすると大抵はGitHubに飛ぶ。
このGitHub上で見える以下のようなファイルDockerfile
は、Dockerイメージの構成を定義されたファイルであり、Dockerイメージ利用する際にどんな定義のイメージなのか?が見れないと困るという事で、TagのリンクをクリックするとこのDockerfileに飛ぶことが多い。
Dockerのイメージ操作系のコマンドを実行してみる
コマンド自体は以下の3つ(削除は使用していないイメージを全て削除するdocker imagae prune
もある)。
Dockerイメージの取得 docker image pull NAME[:TAG]
Dockerイメージをレジストリが取得してダウンロードする。NAMEはDockerイメージの名前を指定し、:TAG
イメージのversionを指定するためのもので、Dcoker HubであればDockerイメージのTagsについての章で取り上げたようなものを指定できる(:TAG
未指定だとversionはlatest
になる)。
※コマンドの省略形:docker pull NAME[:TAG]36.
Dockerイメージの一覧表示 docker image ls
ローカルにダウンロード済みのDockerイメージ一覧を表示する。
※コマンドの省略形:docker images
Dockerイメージの削除 docker image rm IMAGE_ID
Dockerイメージをローカルから削除する。削除する際には、上記のlsコマンド
で一覧を表示した際に出てくるIMAGE ID
を指定する。
※コマンドの省略形:docker rmi IMAGE_ID
Dockerのコンテナ操作系のコマンドを実行してみる
コマンド自体は以下の4つ。
Dockerコンテナの実行 docker container run [OPTION] NAME[:TAG] [COMMAND]
指定のDockerイメージで、Dockerコンテナを実行する。
OPTIONの中でも覚えておくと便利なものとして以下の5つがある。
※コマンドの省略形:docker run [OPTION] NAME[:TAG] [COMMAND]
オプション | 説明 |
---|---|
--detach , -d | コンテナをバックグラウンドで実行する(+コンテナIDを表示する)事ができるオプション |
-it | Dockerコンテナを作成時にshellを実行したい場合、このオプションを設定する事でshellの実行ができる 正確にはDockerコンテナ実行時に以下のようにDockerコンテナのターミナルとホストが相互に接続し、ホスト側から指示(shellの実行やbashを起動)を実行できる。これにより、例えば以下の画像のようにLinuxのbashを起動するように指定すると、Dockerコンテナ内のターミナルが見れる。 ※実際には -it というオプションはないが、公式のOption typesに書かれている通り、1文字のコマンドラインオプションは組み合わせることができるので、docker run -i -t --name test busybox sh はdocker run -it --name test busybox sh とできるちなみに、 -t は「新しいコンテナ内に疑似ターミナル (pseudo-tty)」というオプションで、-i は「コンテナの標準入力 (STDIN)を取得し、双方向に接続できるようにする」という意味で、これを組み合わせると、Dockerコンテナ内のターミナルに対しshellが実行できる(Dockerコンテナを起動するホストのターミナルから、Dockerコンテナ内のターミナルが双方につながるので) |
--env , -e |
-e KEY=VALUE のように指定する事で、Dockerコンテナ内の環境変数を設定できるオプション |
--name |
--name NAME のように指定する事で、Dockerコンテナ実行時のコンテナ名を指定できるオプション |
--publish , -p |
-p CONTAINER_PORT:HOST_PORT のように指定する事で、コンテナポートをホストのポートに公開(マッピング)できるオプション※Dockerコンテナ内に起動しているサーバ(アプリ、Redis、MySQLなど)にホスト側からアクセスする際には、このオプション設定をしないとダメ |
Dockerコンテナの停止 docker container stop CONTAINER
実行中のコンテナを停止する。
複数指定すれば複数停止もできる。
※コマンドの省略形:docker stop CONTAINER
Dockerコンテナの一覧 docker container ls [OPTION]
コンテナの一覧を表示する。
オプション-a
を付ける事で停止中のコンテナも表示できる。
※コマンドの省略形:docker ps
Dockerコンテナの削除 docker container rm CONTAINER
指定されたコンテナを削除する。
※コマンドの省略形:docker rm CONTAINER
使用していない全てのDockerコンテナの削除 docker container prune
使用されていないコンテナを削除する。
(おまけ)docker system prune
使用されていないイメージとコンテナを全て削除する。