LoginSignup
7
6

More than 5 years have passed since last update.

Docker基本コマンドまとめ

Last updated at Posted at 2018-09-29

mono-horizontal.png

やること

  • Dockerの基本コマンドを使ってDockerに触れてみる。
  • 主要なコマンド(イメージの操作、コンテナの操作)を利用してみる。

基本

Dockerの基本であるイメージ取得、コンテナ作成をしてみます。

Dockerイメージ取得

docker image pull gihyodocker/echo:latest

DockerイメージからDockerコンテナを作成する

docker container run -t -p 9000:8080 gihyodocker/echo:latest
  • 9000ポートがホスト側。8080ポートがコンテナ側です。

Dockerコンテナ停止

docker container stop $(docker container ls -q)

docker container ls -qで、コンテナのCONTAINER IDを取得します。

主要なコマンド(イメージの操作、コンテナの操作)

docker image build コマンド

DockerfileをもとにDockerイメージを作成します。

docker image build -t 名前空間/イメージ名[:タグ名] Dockerfileのディレクトリパス
  • 名前空間: 他のイメージとの衝突回避の為に付けることを推奨。
オプション 説明
-t 名前をつける。ほぼ必須のオプション。
-f デフォルトのDockerfile以外を利用する場合に使用する。
Dockerfile-test を指定する場合: -f Dockerfile-test
--pull --pull=trueを指定するとdocker image build時にFROMで指定したベースイメージを強制的に再取得する。latestなどで利用。
しかし、実際の運用ではビルド時間的に不利になる為、latestのベースイメージは避けられる傾向にある。

docker search コマンド

Docker Hubに登録されているDockerレジストリを検索します。
※Docker Hubとは、Dockerレジストリと呼ばれるたくさんのイメージを集権的に管理する為のDocker社が提供しているホスティングサービスです。

docker search [options] 検索キーワード
オプション 説明
--limit 表示件数の制限。--limit 5で人気の上位5件が表示される

docker image pull コマンド

DockerレジストリからDockerイメージをダウンロードします。

docker image pull [options] リポジトリ名[:タグ名]

※タグ名は、Docker Hubに登録されているものを指定します。省略した場合は、デフォルトタグ(latestなど)が利用されます。

docker image ls コマンド

docker image pulldocker image buildでDockerホストに保持されたイメージを表示します。

docker image ls [options] [リポジトリ名[:タグ名]]

docker image tag コマンド

Dockerタグを付けて、ある特定のイメージIDをもつDockerイメージを識別しやすくするために利用します。

docker image tag 元イメージ名:[:タグ名] 新イメージ名:[:タグ名]

docker image push コマンド

DockerイメージをDocker Hubへ登録します。

docker image push [options] 名前空間/イメージ名:タグ名

docker image pushは、自分の所有または、所属しているorganizationのリポジトリにしかできない為、名前空間を必要に合わせて変更する必要があります。

pushは、docker login コマンドでログインしてから実行します。
公式サイトでアカウントを作成できます。

名前空間の変更例

docker image tagコマンドで「example」を「zamax1016」に変更する場合

$ docker image tag example/echo:latest zamax1016/echo:latest

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
example/echo        latest              1111aaaabbbb        8 months ago        733MB
zamax1016/echo      latest              1111aaaabbbb        8 months ago        733MB

docker container run コマンド

Dockerイメージからコンテナ作成、実行をします。

docker container run [options] イメージ名[:タグ名] [コマンド] [コマンド引数...]

ちょっと色々なパターン(オプション)で起動してみる

-d バックグラウンドで実行。

$ docker container run -d -p 9000:8080 example/echo:latest zamax1016/echo:latest
936d7131a0e11242788c7c8dc4a5affa4652feadc251a59f553427480daaa365

--name 名前を指定。
-p コンテナ側のポートのみ指定。ホスト側のポートは、自動的に割り振られる。

$ docker container run -d -p 8080 --name echo1 zamax1016/echo:latest
1f49a6e7912378ca1e8e6316ad2555e40e04e3dc8f048ff74e03313defee2741

$ docker container run -d -p 8080 --name echo2 zamax1016/echo:latest
e898ad44e2a6bae31f34aa2ebf8f8c03cd68aeef6e2fb64625104f8ce0b5e70e

$docker container ls
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                     NAMES
e898ad44e2a6        zamax1016/echo:latest   "go run /echo/main.go"   20 seconds ago      Up 19 seconds       0.0.0.0:32769->8080/tcp   echo2
1f49a6e79123        zamax1016/echo:latest   "go run /echo/main.go"   43 seconds ago      Up 42 seconds       0.0.0.0:32768->8080/tcp   echo1

$ curl http://localhost:32769
Hello Docker!!%

$ curl http://localhost:32768
Hello Docker!!%

-i コンテナ側の標準出力を表示し続ける。コマンド入力が可能。

$ docker image pull alpine:latest # コマンド入力の為、alpineを入れる
# -iで起動。
$ docker container run -i alpine:latest
# コマンド入力で標準出力が表示される。
echo test
test

-t ターミナル表示。

# -tで起動
$ docker container run -t alpine:latest
# ターミナルが表示された。コマンドを入力しても標準出力されない。
/ #

-it で起動してみると仮想環境にログインしたように利用できる。

$ docker container run -it alpine:latest
# ターミナルも表示され、コマンド入力で標準出力も表示される。
/ # echo test
test
/ #

docker container ls コマンド

実行中のコンテナおよび終了したコンテナの一覧を表示する。

docker container ls [options]
オプション 説明
-q コンテナIDだけを表示する
--filter --filter "name=echo"でechoを含む名前のコンテナを表示。
--filter "ancestor=zamax1016/echo"でzamax1016/echoを含むイメージを表示。
-a 終了したコンテナも含めて表示

docker container restart コマンド

一度停止したコンテナは、破棄されない限りdocker container restartで再実行ができます。

docker container restart コンテナIDまたはコンテナ名

docker container rm コマンド

停止したコンテナをディスクから完全に破棄します。

docker container rm コンテナIDまたはコンテナ名

docker container exec コマンド

実行中のコンテナでコマンドを実行します。

docker container exec [options] コンテナIDまたはコンテナ名 コンテナで実行するコマンド

docker container cp

コンテナとホスト間でのファイルのコピーができます。

# コンテナ→ホスト
docker container cp [options] コンテナIDまたはコンテナ名:コンテナ内のコピー元 ホストのコピー先

# ホスト→コンテナ
docker container cp [options] ホストのコピー先 コンテナIDまたはコンテナ名:コンテナ内のコピー元

docker container prune コマンド

停止したコンテナを一括削除できます。

docker container prune [options]

docker image prune コマンド

コンテナで実行していないイメージを一括削除できます。

docker image prune [options]

docker system prune コマンド

利用されていないコンテナ、イメージ、ボリューム、ネットワークといった全てのDockerリソースを一括削除します。

docker system prune [options]

docker container stats コマンド

利用状況の取得ができます。

docker container stats [options] [表示するコンテナID...]

参考文献

7
6
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
7
6