docker – コンテナ/イメージを操作する Docker CLI の基底コマンド

コンテナ管理
スポンサーリンク

docker は Docker CLI の基底コマンドで、コンテナ・イメージ・ボリューム・ネットワークなどを操作します。
多くの環境では sudo が必要になる場合があり、非特権で使うには docker グループ追加や Rootless モードを利用します。 (Docker Documentation)
実務では「docker run で起動」「docker ps で状態確認」「docker logs でログ確認」「docker exec で内部調査」といった日常運用に使います。

構文(Syntax)

docker [GLOBAL OPTIONS] COMMAND [ARGS...]

# 代表的なサブコマンド(例)
docker run        # 新しいコンテナを作成・実行
docker ps         # 実行中コンテナ一覧
docker images     # 取得済みイメージ一覧
docker pull/push  # イメージの取得/登録
docker exec       # 実行中コンテナ内でコマンドを実行
docker logs       # コンテナの標準出力/標準エラーを表示
docker version    # コンポーネント詳細バージョン
docker system info# システム情報(カーネル/コンテナ数など)
  • docker run は必要ならイメージを自動で pull して新規コンテナを起動します。 (Docker Documentation)
  • docker version は各コンポーネントの詳細、docker --version は CLI のみのバージョンを表示します。 (Docker Documentation)
  • docker system info は Docker 環境の全体情報を表示します。 (Docker Documentation)

主なオプション一覧

オプション説明使用例
-H, --host HOST接続先デーモン(ソケット/SSH/TCP)を指定docker -H ssh://user@10.0.0.5 ps(既定は Linux/macOS: unix:///var/run/docker.sock) (Docker Documentation)
--context NAME利用する「コンテキスト」を選択(リモート切替など)docker --context prod psdocker context use で既定切替も可) (Docker Documentation)
--config DIRCLI 設定ディレクトリを一時的に切替docker --config ~/testconfigs ps (Docker Documentation)
-D, --debugCLI デバッグログを有効化docker -D version (DevOps Stack Exchange)
-l, --log-level LEVELCLI のログレベル(debug/info/warn/error/fataldocker --log-level debug info (Docker Documentation)
--tls, --tlsverifyTLS(HTTPS)接続(--tlsverify は検証あり)docker --tlsverify -H tcp://host:2376 ps (Caddy Community)
--tlscacert FILE / --tlscert FILE / --tlskey FILETLS 用 CA/証明書/鍵を指定docker --tlscacert ca.pem --tlscert cert.pem --tlskey key.pem ... (Docker Documentation)
--help, --versionヘルプ/バージョン表示docker --help / docker --version (Docker Documentation)

主なグローバルオプションと環境変数(DOCKER_HOST, DOCKER_CONTEXT, DOCKER_CONFIG, DOCKER_TLS* など)は公式 CLI リファレンスを参照してください。 (Docker Documentation)

実行例

インストール確認と環境情報を表示

説明: CLI とエンジンのバージョン、環境情報を確認します。
コマンド:

docker --version        # CLI のみ
docker version          # コンポーネント詳細
docker system info      # 環境情報(カーネル、コンテナ数 など)

出力例(抜粋):

Docker version 27.xx, build ...
Client: Docker Engine - Community
Server: Docker Engine - Community
...

--versionversion の違いに注意) (Docker Documentation)

まずは Hello World(動作確認)

説明: イメージが無ければ自動で取得し、メッセージを出して終了します。
コマンド:

docker run hello-world

出力例(抜粋):

Hello from Docker!
This message shows that your installation appears to be working correctly.

(Docker Documentation)

Web サーバを起動しポート公開

説明: nginx をバックグラウンドで起動し、localhost:8080 へ公開します。
コマンド:

docker run -d --name web -p 8080:80 nginx
docker ps
curl -I http://127.0.0.1:8080/

-p HOST:CONTAINER でポート公開) (Docker Documentation)

リモートの Docker に接続(コンテキスト/ホスト指定)

説明: 別ホストのデーモンへ接続して一覧を取得します。
コマンド:

docker --context prod ps          # 事前に `docker context create` 済み
# もしくは -H で直接指定
docker -H ssh://user@10.0.0.5 ps

(Docker Documentation)

エラー例:権限不足でデーモンに接続できない

説明: Linux で docker グループ未所属だとソケットにアクセスできず失敗します。
コマンド:

docker ps
# 例) Got permission denied while trying to connect to the Docker daemon socket...

対処:

# 1) docker グループへ追加
sudo groupadd docker        # 既に存在する場合は不要
sudo usermod -aG docker $USER
newgrp docker               # 反映(またはログアウト/ログイン)
# 2) あるいは Rootless モードを検討

docker グループはroot 相当の権限を与える点に注意) (Docker Documentation)

関連コマンド

  • dockerd : Docker デーモン本体。CLI と API を介してコンテナを管理します。 (Docker Documentation)
  • docker compose : マルチコンテナ構成を YAML で定義・管理。
  • ctr / nerdctl : containerd 系ツール(Docker 代替/互換 CLI)。
  • podman : デーモンレス&Rootless を重視した互換 CLI。
  • docker context : 複数デーモン/環境の切替管理。 (Docker Documentation)

備考

  • 非特権での利用: sudo なしで操作したい場合は docker グループに所属させるか、Rootless モードを利用します。docker グループは root 相当の権限を付与するため、セキュリティポリシーに合わせて運用してください。 (Docker Documentation)
  • 接続方式: -H/--hostunix://(既定), ssh://, tcp:// などを指定可能です。TLS を用いる場合は 2376/TLS が慣例です(非 TLS の 2375 は非推奨)。(Docker Documentation)
  • ログの扱い: docker logs はコンテナの標準出力/標準エラーを表示します。収集/保存は ログドライバ側の設定で制御できます。 (Docker Documentation)
  • 設定ファイル: CLI 設定は既定で ~/.docker/config.json--configDOCKER_CONFIG で切替可能です。 (Docker Documentation)
  • 環境変数: DOCKER_HOST, DOCKER_CONTEXT, DOCKER_TLS*, HTTP(S)_PROXY などで挙動を変更できます。 (Docker Documentation)

参考

スポンサーリンク
Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント