0
0

More than 1 year has passed since last update.

Dockerの基本操作(コマンド)について理解してみた

Last updated at Posted at 2022-03-03

はじめに

「イメージ操作系」「コンテナ操作系」に分類されるようなので、その観点で操作についてみていく(前段として、Docker Hubとは?とDockerイメージのTagとは?についても整理してみた)。

※以下の操作はDocker Hubのアカウントを持っている事を前提にしている。Docker Hubへの登録は https://hub.docker.com/signup からできる。

Docker Hubについて

Dockerコンテナを作成する際に必要になるDockerイメージが保管されているクラウド上のストレージ。Dcokerをインストールした際には、デフォルトでDocker Hubからそのイメージを取得するように設定されている。

Dockerイメージは、通常はユーザ名/イメージ名という名前でないと利用できないが、Docker公式イメージは以下の図のようにユーザ名が省略されたイメージ名のみで利用できる。
image.png

DockerイメージのTagsについて

各DockerイメージのDescriptionにTagと呼ばれるものが記載されているが、大抵の場合これはversion名-OS名という構成で表記されている事が多い。例えばnodeであれば、以下のようにTagの一覧があるが、17-alpine3.14というのはNode.js17.xというversionでOSがalpine3.14という意味である。
image.png

alpineという聞きなれないOS名が出てきたが、これはDocker向けの軽量Linux。なんでDocker向けの軽量Linuxというものがあるのか?だが、Dockerではコンテナを作成する際に都度必要なイメージをダウンロードしてくるが、そのサイズが大きいと時間がかかるしディスク容量も圧迫してしまう。つまり、Dockerイメージが軽量(小さい)事が重要であり、そのためDocker向けの軽量Linuxというものがある。

そしてそのTagだが、サイトを見ると分かる通りリンクになっており、そのリンクをクリックすると大抵はGitHubに飛ぶ。
このGitHub上で見える以下のようなファイルDockerfileは、Dockerイメージの構成を定義されたファイルであり、Dockerイメージ利用する際にどんな定義のイメージなのか?が見れないと困るという事で、TagのリンクをクリックするとこのDockerfileに飛ぶことが多い。
image.png

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.
image.png

Dockerイメージの一覧表示 docker image ls

ローカルにダウンロード済みのDockerイメージ一覧を表示する。

※コマンドの省略形:docker images
image.png

Dockerイメージの削除 docker image rm IMAGE_ID

Dockerイメージをローカルから削除する。削除する際には、上記のlsコマンドで一覧を表示した際に出てくるIMAGE IDを指定する。

※コマンドの省略形:docker rmi IMAGE_ID
image.png

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コンテナ内のターミナルが見れる。image.png

※実際には-itというオプションはないが、公式のOption typesに書かれている通り、1文字のコマンドラインオプションは組み合わせることができるので、docker run -i -t --name test busybox shdocker 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

使用されていないイメージとコンテナを全て削除する。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0