始めに
こんにちは。皆さん、docker、使っていますか?
今回は、私が普段使っているコマンドをまとめて、チートシートにしました。
少しでも皆さんの役に立てば幸いです。
docker コマンド一覧
イメージを取得する
- 指定されたイメージをDocker Hubまたは他のレジストリからローカルマシンにダウンロード
docker pull イメージ名
例:docker pull hello-world
イメージを検索
- Docker Hubで特定のキーワードに合致するイメージを検索
docker search キーワード
ローカルのDockerイメージをレジストリにプッシュ
docker push イメージ名:タグ
- 指定したイメージをDocker Hubや他のレジストリにアップロード
イメージを一覧化する
docker images
イメージの詳細情報を表示
docker inspect イメージ名
イメージを削除する
docker image rm イメージ名
イメージの履歴を表示
docker history イメージ名
イメージをビルド
docker build -t タグ名 .
例)
docker build -t myapp-image -f /myapp/Dockerfile .
Dockerfile
を使用してイメージをビルド。-f
でDockerfikeの場所を指定.
は、今自分がいる場所を基準とした実行場所を示す
イメージを元にコンテナを作成
docker create イメージ名
exa:docker create--name コンテナ名指定 イメージ名
- 既存のイメージから新しいコンテナを作成する
イメージのタグ付け
docker tag 既存のイメージ名:タグ 新しいイメージ名:タグ
イメージ取得・コンテナクリエイト・起動を一気にやる
docker run イメージ名
exa:docker run hello-world
exa:docker run --name コンテナ名指定 イメージ名
起動しているコンテナを一覧表示
docker ps
存在するコンテナを全て一覧表示
docker ps -a
コンテナ起動
docker start コンテナ名
コンテナ停止
docker stop コンテナ名
コンテナのログを表示
docker logs コンテナ名
コンテナの状態を確認
docker inspect コンテナ名
コンテナのリソース使用状況を表示
docker stats
コンテナ内で実行中のプロセスの一覧
docker top コンテナ名
コンテナ内でコマンドを実行
docker exec コンテナ名 コマンド
コンテナの中に入る
docker exec -it コンテナ名 bash
※入れないとき
docker exec -it コンテナ名 sh
- shの方はほとんど使わない(bashはshを拡張したモノ)
- 普通、bashで入る
- でもshの方が軽量ではある
- ※Dockerイメージ削減の為、bashが入っていないイメージの場合はshで入る
コンテナから出る
exit
コンテナを削除する
docker rm コンテナ名
docker-composeでコンテナをupしてイメージも再構築
docker-compose.ymlがある場所まで移動して
docker-compose up -d --build
docker-composeでコンテナをdownする(コンテナ削除)
docker-compose down
滅びの呪文 Docker Composeで作ったコンテナ、イメージ、ボリューム、ネットワークを一括完全消去
docker-compose down --volumes --rmi all
コンテナの中からファイルを取り出す
- docker cp でホストのカレントディレクトリへコピーする
docker cp コンテナ名:コピーしたいファイルのパス カレントディレクトリからコピーしたい場所のパス
例:これはコンテナ内のパスからホストのカレントディレクトリへそのままコピー(ホストへのパスは【.】)
docker cp oracle12cr1:opt/oracle/admin/ORCLCDB/dpdump/B527B0B97FBF0987E053020016ACC33F/EXPDAT01-10_40_54.DMP .
Dockerネットワークを一覧表示
docker network ls
Dockerネットワークの作成
docker network create ネットワーク名
ネットワークへのコンテナ接続
- ネットワークへのコンテナ接続
docker network connect ネットワーク名 コンテナ名
ネットワークからのコンテナ切断
docker network disconnect ネットワーク名 コンテナ名
volumeを確認する
- 一覧を確認する
docker volume ls
volumeの設定値を確認する
docker volume inspect ボリューム名
※ボリューム名はdocker volume ls で確認
例)
docker volume inspect sample-ubuntu_data-volume
volumeを削除する
-- volumeの名前を確認
$ docker volume ls
-- 削除したいvolumeを指定して削除
$ docker volume rm hogehogehoge
例)
$ docker volume rm sample-ubuntu_data-volume
wsl2のdata_voluemuの格納場所
- WSL2のdata_volumeの格納場所は以下
\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes>
- 普通の場所は
docker volume inspect hogehoge
で確認する- 上記コマンドで表示される
Mountpoint
の場所がそう
- 上記コマンドで表示される
docker 用語
docker-compose.yml ファイル
ビルド&アップしたときのdockerが行うべき行動を記載する
volumes ボリューム
dockerコンテナ内のファイルをローカルPCと繋げるためのディレクトリ
繋げることを「マウントする」という
volumes:
- ./backend:/work
- ./ホスト内のディレクトリ:/コンテナ内のディレクトリ
volumeの種類は3種類
- bind mount
- 上記の例がそう
Bind mounts
を使用すると、ホストマシン上のファイルやディレクトリはコンテナにマウントされます。- マウント対象のファイルやディレクトリはホストマシン上の絶対パス(
full path
)によって参照されます。 - コードとかを置く
- hostOSとコンテナのディレクトリをそのまま共有するので、hostOS側からも、コンテナ側からも管理しやすい
volumes: - ./backend:/work - ./ホスト内のディレクトリ:/コンテナ内のディレクトリ
- volum
Volumes
が作成されると、Dockerホストのディレクトリに保存される。bind Mount
と違って、Volumes
はDockerによって管理され、ホストマシンのコア機能から分離される。- 特定の
Volumes
は複数のコンテナに同時にマウントできる。 - 実行中のコンテナがボリュームを使用していない場合でも、ボリュームは引き続き使用でき、自動的に削除されない。
docker system prune
で削除することができる。
volumes: - ./:/var/www - data-volume:/var/www/data-volume volumes: data-volume
- tmpfs はDockerホストあるいはコンテナ内のディスクのどちらにも保持されません。 コンテナが作成され削除されるまでの間に、非永続的な状態または機密情報を保存することができます。
Dockerfile ファイル
- 拡張子なし
- Dockerfileはイメージをビルドするための命令セットを定義する
- docker-compose.ymlから命令を受け取り、細かい指示を出す、等をやる
- 直接、コマンドからDockerfileを指定して動作させることも可