よく使うDockerコマンド
- イメージ管理
- コンテナ管理
- docker container exec -it <container> /bin/sh
- docker container attach <container>
- docker container ls
- docker container stop <container>
- docker container start <container>
- docker container rm <container>
- docker container inspect <container>
- ログ管理
イメージ管理
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
の効果についてはこちらの記事を参照。
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
でリアルタイムに出力