Masayan tech blog.

  1. ブログ記事一覧>
  2. エンジニアなら最低限押さえておきたいDockerコマンド

エンジニアなら最低限押さえておきたいDockerコマンド

公開日

サンプルのリポジトリ

イメージ関連

Dockerfileを元にイメージを作成

// docker build -t <イメージ名> <ビルドコンテキスト>
docker build -t api .

ビルドコンテキストとDockerFileのパスを別で指定する場合は以下

// docker build -t <イメージ名> -f <Dockerfileのパス> <ビルドコンテキスト>
docker build -t api -f docker/Dockerfile .

イメージ一覧

docker images

REPOSITORY              TAG       IMAGE ID       CREATED         SIZE
api                     latest    7ef4afc493e4   2 minutes ago   471MB
...

イメージ削除

// docker rmi <イメージID>
docker rmi d69bc9d9b016

未使用のイメージを全て削除

docker image prune -a

コンテナ関連

コンテナ起動

  • バックグラウンドで実行する場合は、-dをつける(コンソールが占有されず、続けて他のコマンドが実行できる)
  • ホストからコンテナにアクセスできるようにするには、ポートフォワーディングが必要。-pで指定可能
  • --restart alwaysはDockerデーモンの起動時に自動でコンテナを再起動させることが可能になる
  • -itでコンテナを常時起動できる
// docker container run --name <コンテナ名> <イメージ名>
docker container run -d -p 18080:8080 --restart=always -it --name mycontainer api

上記コンテナ起動のコマンドに加え、-v <マウントしたいホストのパス:マウントしたいコンテナのパス>とすることで、ホストとコンテナでディレクトリやファイルをマウントして共有すること可能

// docker container run -v <ホストのパス:コンテナのパス> -p <ホストのport:コンテナのポート> --name <コンテナ名> <イメージ名>
docker container run -v /Users/usename/・・・/api:/usr/api -d -p 18080:8080 --restart=always -it --name mycontainer api

コンテナ一覧

docker container ls で起動中のコンテナを一覧表示。-aを最後につけると、停止中のコンテナも含め全て表示

docker container ls

コンテナに入る

docker container exec -it <コンテナ名 or コンテナID> /bin/bash

XXX@:/opt/app#

コンテナを指定してホスト側でコマンドを実行

/bin/bash -cでbashコマンドとして実行してあげれば、複数コマンドを繋げて実行することも可能

docker container exec <コンテナ名 or コンテナID> /bin/bash -c "npm ci && npm run dev"

コンテナ削除

docker container rm -f  <コンテナ名 or コンテナID>

コンテナの情報を表示

IPアドレスや他のコンテナと通信するためのAlias、Port番号のなどのコンテナに関する詳細情報が確認できる

docker inspect <コンテナ名 or コンテナID> 

起動に失敗したコンテナの調査方法

コンテナのログを確認し、原因がわかるか確認する。

docker logs <コンテナ名 or コンテナID> 

わからなければ続けて以下を行う。

exitedしたコンテナに入る

docker commitでexitedしたコンテナから仮のイメージを作成

docker commit <exitedしたコンテナID> <適当なイメージ名>

以下コマンドで、作成した適当なイメージ名からコンテナを起動し内部に入って調査する

docker run --rm -it 適当なイメージ名 bash

クリーンアップ

以下を一括で削除

  • 停止しているコンテナ
  • 使用されていないネットワーク
  • 使用されていないイメージ
  • buildキャッシュ
docker system prune

まとめ

いかがでしたでしょうか。本記事では、エンジニアなら最低限押さえておきたいDockerコマンドついて紹介しています。Dockerを用いた環境構築などの際に知っておいた方がいいコマンドをよく使うものを中心にピックアップして紹介していますのでぜひ参考にしてみてください