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]