😽

Docker&Docker Compose コマンド備忘録

3 min read

Docker コマンド

# Docker イメージの取得
$ docker pull <イメージ名>

# 取得済みイメージの一覧
$ docker images

# コンテナの作成と実行
$ docker run --name <コンテナ名> -d -p <ホスト側のポート番号>:<コンテナ側のポート番号> <イメージ名(リポジトリ:タグ)> -v <ホスト側のパス>:<コンテナ内のパス> -e <環境変数名=> --link <コンテナ名:リンク名>
# -d(--detach)は、バックグランドでコンテナを起動する
# -v(--volume)は、ボリュームのマウントを行う
# -e(--env)は、インラインで環境変数を与える
# --linkは、他のコンテナへのリンクを追加(※このやり方はレガシーらしい)

# コンテナの状態確認
$ docker ps

# コンテナの停止(SIGTERM の後に SIGKILL)
$ docker stop <コンテナ名>
## -a をつけると、終了したコンテナを確認できる

# コンテナの停止(SIGKILL)
$ docker kill <コンテナ名>
## 本番環境では使わないこと。

# コンテナの再実行
$ docker start <コンテナ名>

# コンテナの削除
$ docker rm <コンテナ名>
# コンテナを停止する前に行うと、以下のようなエラーが発生する
# Error response from daemon: You cannot remove a running container f6b67000562d32326cf25b33e9f5f356abee67cd620f2ffffc382b216a06286d. Stop the container before attempting removal or force remove

# Dockerイメージの削除
$ docker rmi <イメージ名>

# Docker イメージの作成 
docker build .
# パスにあるソースコードから新しいイメージを作成
# -t は <name:tag>形式で、イメージの名前を決定する

# 実行中のコンテナでコマンドを実行
$ dockr exec <コンテナ> <コマンド>

# bashでインタラクティブモード実行
docker exec -it <コンテナ> bash

# ボリュームの作成
$ docker volume create <ボリューム名>

# ボリューム一覧
$ docker volume ls

# 未使用のVolumeを一括削除
$ docker volume prune

# ボリュームの削除
$ docker volume rm <ボリューム名>

# ボリュームの詳細
$ docker inspect <ボリューム名>

# ネットワークの作成
$ docker network create --driver bridge isolated_network

Docker Compose コマンド

# 新規作成して起動
$ docker-compose up -d
# -d:デタッチモード

# 削除して停止
$ docker-compose down --volumes
# --volumes: データボリュームも削除

# 実行中のプロセス確認
$ docker-compose ps

# コンテナサービスに対してコマンド実行
$ docker-compose run web env

# サービスの停止
$ docker-compose stop

# サービスの開始
$ docker-compose start

# コンテナ内でワンライナーで実行
$ docker-compose exec <サービス名> <コマンド>

# シェルを指定して入る
$ docker-compose exec <サービス名> /bin/bash

# アプリケーションのログを見る(追跡モード)
$ docker-compose logs -f <サービス名>

その他

コマンドライン補完

$ brew install bash-completion

$ curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose > /usr/local/etc/bash_completion.d/docker-compose

Discussion

ログインするとコメントできます