【Docker②】Dockerコマンドを駆使してコンテナを操作してみよう!

今回はDockerを使う上で基本的なコマンドをわかりやすく解説していきます。

この記事はDockerシリーズ第二回目ということで「【Docker①】「Dockerって何が便利なの?」をWebエンジニアが分かりやすく解説!」の続きになるので読んでいない方はまずはこちらを読んでDockerについて知ってから戻ってきてもらうと頭に入りやすいかと思います。

【Docker①】「Dockerって何が便利なの?」をWebエンジニアが分かりやすく解説!

今回の第二回目では

  1. Dockerイメージ、Dockerfile
  2. Dockerコマンド
  3. 各コマンドのフォーマットとよく使うオプション

についてを解説していきます。

今回は実際にDockerを使って動かしてみるのを目標にしています。

この記事を読み終わる頃には自分でDockerコンテナの操作ができるようになっていると思うので是非最後まで読んでみてください。

Dockerイメージ、Dockerfileとは?


コマンドの説明をする前にDockerの概念的な話をします。

コンテナを作成するためには「Dockerイメージ」というものが必要で、そのイメージの設計図が「Dockerfile」というものになります。

そしてDockerfileからDockerイメージを作成する事を「ビルドする」といいます。

分かりやすく建物をコンテナとして例えると、建物の設計図が「Dockerfile」、建物の骨組みが「Dockerイメージ」と考えてもらえると分かりやすいと思います。

Dockerfileの作成方法はまた別の記事で解説予定です。

ちなみに後ほど触れるDockerHubからDockerイメージを取得してくる場合は自分でDockerfileとDockerイメージを作る必要はないです。

Dockerfile=建物の設計図
建築家のイラスト(女性)
Dockerイメージ=建物の骨組み
建築中の家のイラスト
コンテナ=建物
アニメショップのイラスト

基本的なDockerコマンド

ここからはDockerを使う上で最も基本的なコマンドを解説していきます。

DockerHubにログインする

DockerHubにログインするためには「docker login」コマンドを使います。


DockerHubとは、Docker社が運営している世界中の開発者が公開しているDockerイメージを自由に閲覧、検索、ダウンロードできるサービスです。

Dockerレジストリとも呼ばれたりします。


扱いとしてはGitHubと同じで、リポジトリ単位で公開されているイメージをユーザーが自由にpullしたりpushすることができます。


サインインをしなくても全ての機能が無料で利用できますが、一日にpullできるイメージ数に制限がかかってしまいます。


登録は無料ですし、とりあえずサインアップして登録だけでもしておくことをおすすめします。
DockerHubのリンクはこちら

フォーマット

bash
docker login [オプション]

使用例

bash
$ docker login
Authenticating with existing credentials...
Login Succeeded

DockerHubからイメージを取得してくる

DockerHubからDockerイメージを取得してくるには「docker pull」コマンドを使います。

フォーマット

bash
docker pull [オプション] [Dockerイメージ名]

使用例

下記ではDockerHubからcentosのバージョン7を取得しています。

「:」(コロン)の後ろでバージョンを指定します。

bash
$ docker pull centos:7
7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:9d4bcbbb213dfd745b58be38b13b996ebb5ac315fe75711bd618426a630e0987
Status: Downloaded newer image for centos:7
docker.io/library/centos:7

よく使うオプション

オプション意味
-a起動していないコンテナも一緒に一覧化する
よく使うオプション

起動中のコンテナ一覧を表示

起動中のコンテナ一覧を表示するには「docker ps」コマンドを使います。

コマンドを叩くと起動中コンテナの情報が一覧化されて表示されます。

Docker v1.13以降のバージョンであれば「docker container ls」でも同じ意味になります。

フォーマット

bash
docker ps [オプション]

使用例

bash
$ docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED        STATUS        PORTS                               NAMES
60b052df4f73   mysql:5.7        "docker-entrypoint.s…"   25 hours ago   Up 25 hours   0.0.0.0:3306->3306/tcp, 33060/tcp   db

各カラムの意味は以下の通りです。

CONTAINER NAMEコンテナに振られたユニークなID
IMAGEイメージ名
COMMANDコンテナ起動時に与えられたコマンド
CREATEDコンテナが作成されてからの時間
STATUSコンテナの起動、または停止してからの経過時間
PORTSバインドしているポート
NAMESコンテナの名前
(runコマンドの「–name」オプションで指定していればその名前、指定していなければランダムな名前になる)

よく使うオプション

オプション意味
-a起動していないコンテナも一緒に一覧化する
-qコンテナのIDのみを出力
-f “name={文字列}”NAMEカラムに文字列が含まれる、または一致するコンテナを出力
よく使うオプション

Dockerイメージの一覧を表示

自分で作成したDockerイメージやDockerHubから取得したDockerイメージの一覧を確認するには「docker images」コマンドを使います。

コマンドを叩くとローカルに存在するDockerイメージの情報が一覧化されて表示されます。

Docker v1.13以降のバージョンであれば「docker image ls」でも同じ意味になります。

フォーマット

bash
docker images [オプション] [リポジトリ]

使用例

bash
$ docker images
REPOSITORY       TAG       IMAGE ID       CREATED        SIZE
centos           7         eeb6ee3f44bd   2 months ago   204MB

コンテナの作成と起動を同時に実行する

指定したイメージからコンテナの作成と起動を同時に実行するには「docker run」コマンドを使います。

イメージの指定には「docker images」で確認できる「IMAGE ID」を指定します。

「コンテナの作成と起動を同時にする」というのがポイントです。

指定されたイメージ名がローカルに存在しなかったら自動的にDockerHubから検索してpullされてから起動されます。

フォーマット

bash
docker run [オプション] [IMAGE ID]

使用例

bash
$ docker run centos:7
Unable to find image 'centos:7' locally
7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:9d4bcbbb213dfd745b58be38b13b996ebb5ac315fe75711bd618426a630e0987
Status: Downloaded newer image for centos:7

よく使うオプション

オプション意味
-iコンテナの標準入力をDockerホストの標準入力と接続する。
-tコンテナ内で疑似的な仮想端末を割り当てて、Dockerホストの標準出力と接続する
-dプロセスをバックグラウンドで実行する。
–nameコンテナに名前をつけられる。
–rmコンテナ停止時に自動的に削除する。
よく使うオプション

起動しているコンテナ内で指定のコマンドを実行する

起動しているコンテナ内で指定のコマンドを実行するには「docker exec」コマンドを使います。

起動していないコンテナに対しては行えないので注意してください。

フォーマット

bash
docker exec [オプション] [CONTAINER NAME または NAMES] [使いたいコマンド] 

使用例

コンテナ内のbashに接続する場合はこの様になります。

bash
$ docker exec -it centos bash
[root@871658f6c58c /]#

よく使うオプション

オプション意味
-i指定したコマンドを実行する際、コンテナの標準入力をDockerホストの標準入力と接続する。
-tコンテナ内で疑似的な仮想端末を割り当てて、Dockerホストの標準出力と接続する
よく使うオプション

既に作成されているコンテナを起動する

既に作成されているコンテナを起動するには「docker start」コマンドを使います。

コンテナの指定は「docker ps」コマンドで確認できる「CONTAINER ID」または「NAME」で指定します。

前に紹介した「docker run」コマンドと似ていますが両者の違いとして

docker run…コンテナの作成と起動を同時にやる

docker start…既に作成してあるコンテナを起動する

という明確な違いがあるので注意してください。

つまり、ただ単純にコンテナを起動したいときに何も考えずに「docker run」コマンドを使ってしまうと、起動のたびに同じコンテナがどんどん無駄に作成され続けてしまいます。

無駄なコンテナを作りたくない場合は「–rm」オプションをつけましょう。

フォーマット

bash
docker start [オプション] [CONTAINER NAME または NAMES]

使用例

bash
$ docker start 871658f6c58c
871658f6c58c

起動中のコンテナを停止させる

起動中のコンテナを停止させるには「docker stop」コマンドを使います。

イメージの指定は「CONTAINER ID」または「NAME」で指定します。

フォーマット

bash
docker stop [オプション] [CONTAINER NAME または NAMES]

使用例

bash
$ docker stop 871658f6c58c
871658f6c58c

コンテナを再起動する

起動中、または停止中のコンテナに対して再起動をかけるには「docker restart」コマンドを使います。

イメージの指定は「CONTAINER ID」または「NAME」で指定します。

フォーマット

bash
docker restart [オプション] [CONTAINER NAME または NAMES]

使用例

bash
$ docker stop 871658f6c58c
871658f6c58c

停止中のコンテナを削除する

停止中のコンテナを削除するには「docker rm」コマンドを使います。

「-f」オプションを付けると起動中のコンテナも削除することができます。

コンテナを削除してしまうと、その中にあるデータも全て削除されてしまうので注意してください。

フォーマット

bash
docker rm [オプション] [CONTAINER NAME または NAMES]

使用例

bash
$ docker stop 871658f6c58c
871658f6c58c

よく使うオプション

オプション意味
-f起動中のコンテナも削除する
よく使うオプション

おわりに

ここまでDockerfile, Dockerイメージ、基礎的なコマンド等について解説してきました。

とりあえずここまでを覚えればコンテナを自分で作成して起動して削除までできると思うので、是非手を動かして体感してみてください。

第三弾はDockerfileの書き方について解説しようと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です