普段使うdockerコマンドチートシート


始めに

こんにちは。皆さん、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を指定して動作させることも可