プログラミング初心者がアーキテクトっぽく語る

見苦しい記事も多数あるとは思いますが訂正しつつブログと共に成長していければと思います

よく使うDockerコマンド

イメージ管理


docker search <image>

  • Docker Repositoryのイメージを探す

docker pull <image>:<tag>

  • Docker Repositoryからイメージを取得する
docker pull ubuntu:latest

docker image ls

  • 現在保持しているイメージを一覧を表示する

docker image rm <image>

  • イメージを削除

docker image build -t <tag> .

  • Dockerfileからイメージを作成
  • -tオプションがないとtagなし(=dangling状態)になってしまう

docker image history <image>

  • イメージのレイヤを表示

docker commit <container> <image>

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


コンテナ管理


docker run <option> <image>:<tag>

オプション

  • -i:ホストの標準入力をContainerの標準入力につなげる。inputの略と思われる。
  • -t : コンテナの標準出力をホストの標準出力につなげる。ttyの略と思われる。
  • -d : バックグランドで動作する。detachの略。
  • -p : ポート転送の指定。publishの略。
  • -v : 共有フォルダを指定。volumeの略。
  • -e : 環境変数を指定。
  • --name : コンテナ名を指定。
  • --network : ネットワークを指定。
  • --network-alias : Docker内部のDNSに登録される名前を指定。
  • --rm : コンテナ終了時にコンテナを自動で削除。
  • --privileged : /sbin/init:systemctlが使える。セキュリティホールになりえるので注意。

コマンド

  • コンテナが最初に実行するコマンドを指定できる
  • 指定がなければimageで指定されたデフォルトのコマンドが実行される
  • 実行されたコマンドのプロセスにはPID 1がAssignされる
  • PID 1がAssignされたコマンドを終了するとContainerも終了する。

複雑な実行例

docker run -it --privileged -d -p 20022:22 -v /root/share/:/root/share --name my_centos centos:7 /sbin/init

参考

  • -itの効果についてはこちらの記事を参照。

architecting.hateblo.jp


docker container exec -it <container> /bin/sh

  • foregroundで実行しているContainerに接続する場合に利用する。
  • コンテナIDを指定する場合、先頭3文字でよい。
  • Containerから出る場合はexit。
  • 本来はContainer内でコマンドを実行するDockerコマンド。
  • コンテナ内でシェルを起動して標準入出力をホストとつなげている。

docker container attach <container>

  • backgroundで実行しているContainerに接続する場合に利用する
  • Containerから出る場合はctrl p + q
  • exitするとContainerが終了してしまうので注意。

docker container ls

  • 実行中のコンテナの一覧を表示
    • -aオプションで停止中のコンテナも表示

docker container stop <container>

  • コンテナを停止

docker container start <container>

  • コンテナを開始

docker container rm <container>

  • 停止したコンテナを削除
  • -fオプションで停止と削除を同時に実行できる

docker container inspect <container>

  • コンテナの情報をJSON形式で表示
  • --formatオプションで任意の箇所のみ抽出可能。
docker container inspect --format='{{json .State}}' my_alpine | json_pp

ログ管理

docker logs <container>

  • ログを標準出力へ出力する
  • -fでリアルタイムに出力