Skip to main content

Dockerで利用するコマンド例

使っているときは、こんなの覚えているし(笑) と思っていたんですが、3か月使わなくなって忘れてしまったので、メモ帳から取り出します。

起動中のコンテナプロセスの確認

docker ps
# sizeも表示する場合
docker ps -s
docker-compose ps

コンテナ内でコマンドの実行

docker exec -it [container id] [command]

# ユーザーを指定
docker exec -it --user [desired_user] [container id] [command]
# 起動していない場合
docker-compose run [container name] [command]

# すでに起動している場合
docker-compose exec [container name] [command]

検証用に一発コマンドでpureな環境に入る

docker run -it --rm alpine:3.3 /bin/sh
docker run -it --rm centos:7 /bin/bash
docker run -it --rm ubuntu:14.04 /bin/bash

コンテナ内からコピー

docker cp [container id]:[コンテナ内のfile path(コピー元)] [hostのfile path(コピー先)]

イメージの停止・削除

すべてのdocker psを停止

# bash, zsh
docker stop $(docker ps -a -q)

# fish
docker stop (docker ps -a -q)

コンテナの削除

docker rmi `docker images -q`
docker rm -f `docker ps -a -q`

# fish
docker rm -f (docker ps -a -q)

Docker psのNoneを消す

# bash
docker rmi $(docker images -f "dangling=true" -q)

# fish
docker rmi (docker images -f "dangling=true" -q)

docker images | awk '/<none/{print $3}' | xargs docker rmi

docker-composeの場合

docker-compose stop
docker-compose rm

Volume系

データの永続化

開発環境で、MySQLとかのバックアップ撮っておきたいなというとき。

コンテナにホストのディレクトリをマウントする

現在いるディレクトリをサクッとコンテナにマウントして検証したいとき。

docker run  -v $(pwd):/work -w=/work -it [image name] [command]

自前でVolumeを用意したくないとき

docker volume create [volume name]

MySQL 5.7を使ってたときに一瞬ハマったやつ

コンテナ内からホストへファイルをコピーする

docker cp <containerId>:/file/path/within/container /host/path/target

環境変数

docker-composeを使っている場合

開発時はdirenvを利用することをオススメします。

Inspector

https://docs.docker.com/engine/reference/commandline/ps/#filtering

--formatコマンド

# NAME CONTAINER_ID IMAGE
docker ps --format "table {{.Names}}\t{{.ID}}\t{{.Image}}"

# NAME CONTAINER_ID IP
docker inspect --format '{{ .NetworkSettings.IPAddress }}' [CONTAINER NAME]

# NAME CONTAINER_ID IMAGE
docker ps --format "table {{.Names}}\t{{.ID}}\t{{.Image}}\t{{.Networks}}\t"

ネットワークの調査

$ docker inspect -f '{{.State.Pid}}' [container_name_or_id]