Skip to content

Instantly share code, notes, and snippets.

@1206yaya
Last active August 29, 2024 05:24
Show Gist options
  • Save 1206yaya/858bdee0037345180441f49252075b0a to your computer and use it in GitHub Desktop.
Save 1206yaya/858bdee0037345180441f49252075b0a to your computer and use it in GitHub Desktop.
Docker Cheat Sheet #docker #cheat-sheet

コンテナの基本操作

コンテナを起動する

docker-compose.yml が存在するディレクトリで以下のコマンドを実行して、コンテナをバックグラウンドで起動します。

docker-compose up -d

コンテナを停止する

起動中のコンテナを停止するには、以下のコマンドを使用します。

docker-compose down

停止したコンテナを削除する

不要になった停止中のコンテナを削除するには、以下のコマンドを使用します。

docker rm $(docker ps -a -f status=exited -q)

不要なネットワークを削除する

使われていない Docker ネットワークをクリーンアップするには、以下のコマンドを実行します。

docker network prune

以下に docker container コマンドに関するチートシートを作成しました。


Docker Container コマンド

コンテナの一覧を表示する

起動中のコンテナの一覧を表示するには、以下のコマンドを使用します。

docker container ls

すべてのコンテナ(停止中のコンテナも含む)の一覧を表示するには、-a オプションを追加します。

docker container ls -a

コンテナを起動する

停止中のコンテナを再起動するには、以下のコマンドを使用します。

docker container start <コンテナ名またはID>

複数のコンテナを同時に起動する場合は、コンテナ名または ID をスペースで区切って指定します。

docker container start <コンテナ名またはID1> <コンテナ名またはID2>

コンテナを停止する

起動中のコンテナを停止するには、以下のコマンドを使用します。

docker container stop <コンテナ名またはID>

複数のコンテナを同時に停止する場合も、コンテナ名または ID をスペースで区切って指定します。

docker container stop <コンテナ名またはID1> <コンテナ名またはID2>

コンテナを強制停止する

通常の停止ができない場合、SIGKILL シグナルを送って強制的に停止するには、kill コマンドを使用します。

docker container kill <コンテナ名またはID>

コンテナを作成する

新しいコンテナを作成するには、create コマンドを使用します。

docker container create --name <コンテナ名> <イメージ名>

コンテナを削除する

停止中のコンテナを削除するには、以下のコマンドを使用します。

docker container rm <コンテナ名またはID>

すべての停止中のコンテナを一括で削除するには、以下のコマンドを使用します。

docker container prune

コンテナのログを表示する

コンテナのログを表示するには、以下のコマンドを使用します。

docker container logs <コンテナ名またはID>

コンテナの詳細情報を表示する

特定のコンテナに関する詳細情報を表示するには、以下のコマンドを使用します。

docker container inspect <コンテナ名またはID>

コンテナに入る(シェルを開く)

コンテナ内でシェルを開くには、exec コマンドを使用します。-it オプションを使うことで、インタラクティブモードでシェルを実行できます。

docker container exec -it <コンテナ名またはID> <シェルコマンド>

例: Bash シェルを起動する場合

docker container exec -it <コンテナ名またはID> bash

コンテナのリソース使用量を監視する

コンテナのリソース使用量(CPU、メモリなど)をリアルタイムで監視するには、以下のコマンドを使用します。

docker container stats <コンテナ名またはID>

すべてのコンテナのリソース使用量を表示するには、コンテナ名を省略します。

docker container stats

コンテナを名前で検索する

特定の名前やパターンにマッチするコンテナを検索するには、以下のコマンドを使用します。

docker container ls --filter "name=<名前またはパターン>"

Docker Run コマンドの活用

コンテナをバックグラウンドで起動する

以下のコマンドは、httpd:2.4イメージを使用して Apache サーバーをバックグラウンドで起動します。

docker run -dit --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4

オプションの説明:

  • -d: バックグラウンドでコンテナを実行
  • -t: 疑似端末を有効化
  • -i: 標準入出力とエラー出力をインタラクティブに受け付ける
  • $PWD: Docker コマンド実行時のホスト側のカレントディレクトリ

Linux コンテナに入る

Alpine Linux コンテナを起動し、その中に入るには以下のコマンドを使用します。

docker run --rm -it alpine ash

別々に実行するコマンド

  1. Dockerfile が存在するディレクトリでイメージを作成:

    docker build -t selenium-app .
  2. 作成したイメージからコンテナを生成:

    docker create --name selenium-app-container selenium-app
  3. コンテナ内でイメージを実行し、中に入る:

    docker run -it selenium-app

    または、Docker Compose のコンテナでシェルに入るには:

    dc exec -it graphanalisiscrawler-db bash

    以下に、イメージの操作に関するセクションを追加しました。


イメージの操作

イメージの一覧を表示する

現在ローカルにある Docker イメージを一覧表示するには、以下のコマンドを使用します。

docker images

イメージを削除する

不要な Docker イメージを削除するには、以下のコマンドを使用します。

docker rmi <イメージIDまたはイメージ名>

複数のイメージを一度に削除するには、以下のようにコマンドを使用します。

docker rmi $(docker images -q)

イメージをプルする

Docker Hub などのリポジトリからイメージを取得するには、以下のコマンドを使用します。

docker pull <イメージ名>

例として、nginx イメージをプルする場合は次のようにします。

docker pull nginx

イメージをビルドする

Dockerfile を使用してイメージをビルドするには、以下のコマンドを使用します。

docker build -t <イメージ名> <Dockerfileのディレクトリ>

例:

docker build -t my-app .

イメージをタグ付けする

既存のイメージに新しいタグを付けるには、以下のコマンドを使用します。

docker tag <イメージIDまたはイメージ名> <リポジトリ名>:<タグ名>

例:

docker tag my-app:latest my-app:v1.0

イメージをプッシュする

タグ付けされたイメージを Docker Hub にプッシュするには、以下のコマンドを使用します。

docker push <リポジトリ名>:<タグ名>

例:

docker push my-app:v1.0

イメージの詳細情報を確認する

特定のイメージに関する詳細情報を確認するには、以下のコマンドを使用します。

docker inspect <イメージIDまたはイメージ名>

未使用のイメージをクリーンアップする

不要なイメージを一括でクリーンアップするには、以下のコマンドを使用します。

docker image prune

オプション -a を追加すると、すべての未使用イメージが削除されます。

docker image prune -a

以上のセクションをチートシートに追加することで、Docker イメージの操作に関する基本的なコマンドが網羅されます。

ボリュームの活用

-v--mount の違い

  • -v mysqlvolum:/var/lib/mysql--mount type=volume,src=mysqlvolum,dst=/var/lib/mysql と同等です。
  • -v "$PWD":/usr/local/apache2/htdocs--mount type=bind,src="$PWD",dst=/usr/local/apache2/htdocs と同等です。

Git-Bash の「;C」問題を回避

Git-Bash 上でのディレクトリパス問題を回避するための例です。

docker run -it -v "/$PWD/build":/app-selenium-quick-start-java/build selenium-app bash

ボリューム操作

  • ボリュームを作成する:

    docker volume create --name mysqlvolum
  • ボリュームの一覧を表示する:

    docker volume ls
  • ボリュームの詳細を確認する:

    docker volume inspect mysqlvolum

Docker Compose コマンド

コンテナの停止と削除

  • コンテナを停止する:

    docker-compose stop
  • 強制的にコンテナを削除する:

    docker-compose rm -f

イメージのビルドと起動

  • キャッシュを使わずにイメージをビルドする:

    docker-compose build --no-cache
  • コンテナをバックグラウンドで起動する:

    docker-compose up -d
  • 停止したコンテナを削除する:

    docker rm $(docker ps -a -f status=exited -q)

Dockerfile の例

Go 言語を使用したシンプルな Dockerfile

以下は、Go 言語を使用したシンプルな Dockerfile です。

# ベースイメージとしてGolangを使用
FROM golang:1.9

# /echo ディレクトリを作成
RUN mkdir /echo

# ホストからコンテナにファイルをコピー
COPY maingo /echo

# コンテナ実行時にgo runを実行
CMD ["go","run", "/echo/main.go"]

Java を使用した Dockerfile

以下は、Java を使用した Dockerfile の例です。

FROM adoptopenjdk/openjdk11:alpine-slim

Log Management

基本的なログコマンド

  1. コンテナのログを表示する:

    docker logs <コンテナ名またはID>

    特定のコンテナの標準出力(stdout)と標準エラー出力(stderr)のログを表示します。

  2. ログをリアルタイムでフォローする:

    docker logs -f <コンテナ名またはID>

    -fオプションを使用すると、リアルタイムでログをフォローできます。

  3. 特定の行数分のログを表示する:

    docker logs --tail <行数> <コンテナ名またはID>

    直近の指定行数分のログを表示します。

  4. 特定の時点からログを表示する:

    docker logs --since <タイムスタンプ> <コンテナ名またはID>

    指定したタイムスタンプからのログを表示します。タイムスタンプのフォーマットは、2013-01-02T13:23:37のように指定します。

  5. タイムスタンプ付きでログを表示する:

    docker logs -t <コンテナ名またはID>

    各ログエントリーにタイムスタンプを付けて表示します。

  6. 標準出力または標準エラーのみを表示する:

    • 標準出力(stdout)のみ表示:
      docker logs --stdout <コンテナ名またはID>
    • 標準エラー(stderr)のみ表示:
      docker logs --stderr <コンテナ名またはID>

Docker ログドライバー

Docker では、ログの出力方法を制御するためにログドライバーを指定できます。

  1. コンテナ作成時にログドライバーを指定:

    docker run --log-driver=<ドライバー名> <イメージ名>

    例:

    docker run --log-driver=json-file <イメージ名>
  2. 使用可能なログドライバー:

    • json-file(デフォルト)
    • syslog
    • journald
    • gelf
    • fluentd
    • awslogs
    • splunk
    • etwlogs
    • gcplogs
    • logentries
  3. コンテナ起動後にログドライバーを確認する:

    docker inspect --format='{{.HostConfig.LogConfig.Type}}' <コンテナ名またはID>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment