dockerイメージダウンロード&実行
docker run <dockerイメージ名>
docker run <dockerイメージ名> <コンテナ起動後にコンテナ内で実行するコマンド>
docker run --network <接続したいネットワーク名> <dockerイメージ名>
例)nginxコンテナの実行コマンド
ポート指定、起動後の実行コマンド指定、停止時に削除指定
docker run --name <コンテナ名> -p <ホスト側のポート番号>:<コンテナ側のポート番号> -it -d --rm nginx /bin/bash
オプション
--name:起動するコンテナの名前
-p:コンテナのポートをホストのポートとマッピングし、外部に公開するための指定
-d:デタッチモード指定(バックグラウンド実行)
-t:Dockerコンテナ内の標準出力とホスト側の出力をつなげる(これつけないとコンテナ操作が不便になる)
-i:ホスト側の入力をコンテナの標準出力をつなげる(これつけないとコンテナ操作ができない)
コンテナ終了&削除
docker stop <コンテナ名>
docker rm <コンテナ名>
ローカル上にダウンロード済のdockerイメージ一覧
docker images
ローカル上にダウンロード済のdockerイメージにタグ付けする
docker tag <元のイメージ名> <新しいイメージ名>
dockerイメージの詳細情報の表示
docker inspect <dockerイメージ名>
dockerイメージの削除
docker rmi <dockerイメージ名>
docker rmi -r <dockerイメージ名> ## -fを付けると強制削除
--タグ削除の場合もほぼ同様 (参考:http://www.memotansu.jp/docker/703/)
docker rmi <dockerイメージ名>:<タグ名>
dockerイメージの取得
docker pull <dockerイメージ名>
dockerイメージの構築
- Dockerfileの作成
- Dockerfileからイメージをビルド
dockerコンテナファイルのコピー
# ローカルホストからコンテナへ
docker cp <ローカルホスト上のコピーしたいファイル> <コンテナ名>:<コピー先パス>
# コンテナからローカルホストへ
docker cp <コンテナ名>:<コンテナ上のコピーしたいファイル> <ローカルホスト上のコピー先パス>
起動中のコンテナ一覧
docker ps
docker container list
停止中のコンテナ一覧
docker ps -a
docker container list -a
コンテナへの接続
docker attach <コンテナ名> # exitで抜けるとコンテナが終了してしまう。Ctrl + P + Q で抜けることができる。
docker exec -it <コンテナ名> /bin/bash # exitで抜けてもコンテナは起動し続ける
コンテナからイメージ作成
docker commit <コンテナ名> <イメージ名>:<タグ名>
docker for mac の仮想環境
docker for mac での仮想環境は VirtualBox ではなく、HyperKitというMacネイティブの仮想化環境が裏で動いている。
コンテナのネットワーク関連コマンド
# 一覧表示
docker network ls
# 詳細表示
docker network inspect bridge #bridgeドライバのネットワーク詳細情報の確認
# ネットワーク作成
docker network create <ネットワーク名>
# コンテナを作成したネットワークへ接続
docker network connect <ネットワーク名> <コンテナ名>
# コンテナを作成したネットワークから切断
docker network disconnect <ネットワーク名> <コンテナ名>
# 作成したネットワークを削除
docker network rm <ネットワーク名>
docker-machin関連コマンド
# 一覧表示
docker-machine ls
# 仮想マシン作成(gcpの場合)
gcpコンソール上でサービスアカウント作成し、プロジェクトオーナ権限付与
キーをダウンロード
export GOOGLE_APPLICATION_CREDENTIALS=<jsonファイルパス>
docker-machine create --driver google --google-project <プロジェクトID> --google-zone asia-northeast1-a <仮想マシン名>
# 仮想マシンへssh
docker-machine ssh <仮想マシン名>
# 仮想マシンを停止
docker-machine stop <仮想マシン名>
# 仮想マシンを削除
docker-machine rm <仮想マシン名>
# dockerコマンドの実行時に、特定のマシンを指し示せるような環境変数を表示
docker-machine env <仮想マシン名>
# 上記で表示された環境変数を適用
eval $(docker-machine env <仮想マシン名>)
# IPアドレスを確認
docker-machine ip <仮想マシン名>
コンテナのボリューム関連コマンド
# volume作成
docker volume create <volume名>
# 一覧表示
docker volume ls
# 詳細表示
docker volume inspect <volume名>
# 作成したvolumeを削除
docker volume rm <volume名>
# volume指定しdocker起動
docker run -itd --name <コンテナ名> --mount source=<volume名>,destination=<コンテナのマウント先>,readonly nginx
docker run -itd --name <コンテナ名> -v <volume名>:<コンテナのマウント先>:ro nginx
# bindmount(仮想マシンのファイルをコンテナでマウント)
sudo docker run -itd --name vol-test06 --mount type=bind,source="$(pwd)"/hogehoge,target=/app/hogehoge nginx
docker-compose関連コマンド
# コンテナの一覧表示
docker-compose ps
# コンテナを作成して、起動
docker-compose up -d # -dはバックグラウンド実行の指定
docker-compose -f <docker-composeのyamlファイル> up -d #yamlで指定したコンテナの起動
# 引数で指定したサービスのコンテナ内でコマンドを実行
docker-compose run <サービス> <サービスで実行するコマンド>
docker-compose run -d <サービス> <サービスで実行するコマンド> # バックグラウンド実行の場合
# コンテナの停止
docker-compose stop
# コンテナの削除
docker-compose down
docker-compose -f <docker-composeのyamlファイル> down #yamlで指定したコンテナの削除