「コンテナを起動したはいいけど、止め方や削除の方法がよくわからない」
Linuxサーバーを触り始めてしばらく経つと、必ずDockerに出会います。
開発環境の構築、アプリのデプロイ、CI/CDの整備——現場のあらゆる場面でDockerが使われるようになっています。
この記事では、Dockerコマンドの実践的な使い方を、RHEL 9.4 / Ubuntu 24.04 LTSでの動作確認済みの手順で解説します。
インストールから、イメージの取得・コンテナの起動・停止・削除・内部操作まで、現場でよく使う操作を一通りカバーします。
この記事のポイント
・docker run でコンテナを起動、docker stop/rm で停止・削除できる
・docker ps -a で起動中・停止中の全コンテナを一覧表示できる
・docker exec -it でコンテナ内部に入りコマンド実行が可能
・不要なイメージ・コンテナの一括削除には docker system prune を使う
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Dockerとは何か——コンテナ技術の基本
Dockerは「コンテナ」と呼ばれる軽量な仮想化技術を使って、アプリケーションとその実行環境をパッケージ化するツールです。仮想マシン(VM)との大きな違いは、ホストOSのカーネルを共有する点にあります。
VMはOSごと仮想化するため、起動に数十秒かかることも珍しくありませんが、Dockerコンテナは数秒以内に起動します。
現場では次のような使い方が一般的です。
・開発環境の統一(「自分のPCでは動くのに本番では動かない」問題を解消)
・複数バージョンのアプリを同一サーバー上で共存させる
・CI/CDパイプラインでのビルド・テスト環境の整備
・マイクロサービスアーキテクチャの実装
Dockerを構成する主要な概念は3つです。
| 用語 | 意味 |
|---|---|
| イメージ | コンテナの設計図。Dockerfileから作成される読み取り専用のテンプレート |
| コンテナ | イメージを実体化したもの。実際に動作するプロセスの実行環境 |
| レジストリ | イメージの保存・配布場所。公式はDocker Hub(hub.docker.com) |
Dockerのインストール手順
1. RHEL 9 / Rocky Linux 9 / AlmaLinux 9 の場合
RHELファミリーでは、Docker公式リポジトリを追加してインストールします。# Dockerリポジトリを追加する sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo # Dockerエンジンのインストール sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # Dockerサービスを起動して自動起動を有効にする sudo systemctl enable --now docker # バージョン確認 docker --version
Docker version 26.1.4, build 5650f9b
2. Ubuntu 24.04 LTS の場合
Ubuntu では apt を使ってインストールします。# 必要なパッケージを事前インストール sudo apt-get update sudo apt-get install -y ca-certificates curl # Docker公式のGPGキーを追加 sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Dockerリポジトリを追加 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \ https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # インストール sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # 自動起動の有効化 sudo systemctl enable --now docker # バージョン確認 docker --version
3. 一般ユーザーでdockerコマンドを実行できるようにする
デフォルトでは docker コマンドは root 権限が必要です。一般ユーザーで実行したい場合は、dockerグループに追加します。
# 現在のユーザーをdockerグループに追加する sudo usermod -aG docker $USER # グループ変更を反映するため、一度ログアウトしてから再ログイン # または以下でセッションを再生成する newgrp docker # グループに追加されたか確認する groups $USER
信頼できるユーザーのみに実施してください。
Dockerイメージの操作
1. イメージを検索する(docker search)
Docker Hubで公式イメージを検索します。# nginxのイメージを検索する docker search nginx
NAME DESCRIPTION STARS OFFICIAL nginx Official build of Nginx. 19834 [OK] unit Official build of NGINX Unit: Universal Web ... 59 [OK]
信頼性の観点から、公式イメージを優先して使いましょう。
2. イメージを取得する(docker pull)
# nginxの最新版(latest)を取得する docker pull nginx # バージョンを指定して取得する docker pull nginx:1.26 # AlpineLinuxベースの軽量イメージを取得する docker pull nginx:alpine
3. ローカルのイメージ一覧を表示する(docker images)
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest a9c5fb0f6921 2 weeks ago 188MB nginx alpine e47a1b2f4bec 2 weeks ago 43.1MB nginx 1.26 5ef79149e0ec 4 weeks ago 188MB
4. イメージを削除する(docker rmi)
# IMAGE IDまたは「リポジトリ:タグ」で削除する docker rmi nginx:1.26 # IMAGE IDの先頭4文字程度で省略しても指定できる docker rmi 5ef7
先にコンテナを停止・削除してからイメージを削除してください。
コンテナの起動・停止・削除
1. コンテナを起動する(docker run)
`docker run` はイメージがローカルになければ自動で取得してから起動します。# 基本的な起動(フォアグラウンド) docker run nginx # バックグラウンドで起動する(-d: detach) docker run -d nginx # コンテナに名前を付けて起動する(--name) docker run -d --name my-nginx nginx # ポートをマッピングして起動する(-p ホスト側ポート:コンテナ側ポート) docker run -d -p 8080:80 --name my-nginx nginx # 環境変数を指定して起動する(-e) docker run -d -e MYSQL_ROOT_PASSWORD=secret --name my-mysql mysql:8 # コンテナ停止時に自動削除する(--rm) docker run --rm nginx echo "hello"
・-d:バックグラウンドで実行(デタッチモード)
・-p ホスト:コンテナ:ポートの転送
・--name:コンテナ名の指定
・-e KEY=VAL:環境変数の設定
・-v ホストパス:コンテナパス:ボリュームのマウント
・--rm:終了時にコンテナを自動削除
・-it:インタラクティブモード(シェル操作時に使用)
2. 起動中のコンテナを確認する(docker ps)
# 起動中のコンテナのみ表示する docker ps # 停止中のコンテナも含めて表示する docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b3f9a2c12e01 nginx "/docker-entrypoint.…" 5 minutes ago Up 5 minutes 0.0.0.0:8080->80/tcp my-nginx
3. コンテナを停止する(docker stop)
# コンテナ名またはCONTAINER IDで停止する docker stop my-nginx # 複数のコンテナを一度に停止する docker stop my-nginx my-mysql # 全ての起動中コンテナを停止する docker stop $(docker ps -q)
即座に強制終了したい場合は `docker kill` を使います。
4. コンテナを削除する(docker rm)
# 停止済みコンテナを削除する docker rm my-nginx # 起動中のコンテナを強制削除する(-f) docker rm -f my-nginx # 全ての停止済みコンテナを削除する docker rm $(docker ps -a -q)
コンテナ内部での操作
1. 起動中のコンテナ内でコマンドを実行する(docker exec)
コンテナが起動している状態で、コンテナ内部のコマンドを実行できます。# コンテナ内でインタラクティブシェルを起動する(-it) docker exec -it my-nginx bash # コンテナ内で1コマンドだけ実行する docker exec my-nginx cat /etc/nginx/nginx.conf # 環境変数を確認する docker exec my-nginx env
終了するときは `exit` と打つか、`Ctrl+d` を押します。
コンテナ自体は終了せず、バックグラウンドで動き続けます。
2. コンテナのログを確認する(docker logs)
# コンテナのログを表示する docker logs my-nginx # リアルタイムでログを追従する(-f) docker logs -f my-nginx # 直近50行のみ表示する(--tail) docker logs --tail 50 my-nginx # タイムスタンプを表示する(-t) docker logs -t my-nginx
3. コンテナの詳細情報を確認する(docker inspect)
ネットワーク設定、ボリューム、環境変数など、コンテナの全情報をJSON形式で取得します。# コンテナの全情報を表示する docker inspect my-nginx # IPアドレスだけ抽出する(--format) docker inspect --format='{{.NetworkSettings.IPAddress}}' my-nginx # マウントしているボリューム情報を確認する docker inspect --format='{{json .Mounts}}' my-nginx
ボリュームとネットワークの基本
1. ボリューム——データを永続化する
コンテナはデフォルトでは停止・削除するとデータが消えます。データを残したい場合は、ホスト側ディレクトリをマウントするか、名前付きボリュームを使います。
# ホストのディレクトリをコンテナにマウントする(バインドマウント) # ホスト側 /srv/html → コンテナ側 /usr/share/nginx/html docker run -d -p 8080:80 -v /srv/html:/usr/share/nginx/html --name my-nginx nginx # 名前付きボリュームを作成してマウントする docker volume create my-data docker run -d -v my-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=secret --name my-mysql mysql:8 # ボリュームの一覧を確認する docker volume ls # ボリュームの詳細を確認する docker volume inspect my-data
2. ネットワーク——コンテナ間の通信
# ネットワーク一覧を確認する docker network ls # カスタムネットワークを作成する docker network create my-net # 作成したネットワークにコンテナを接続して起動する docker run -d --name app1 --network my-net nginx docker run -d --name app2 --network my-net nginx # 同じネットワーク内のコンテナ同士はコンテナ名で通信できる docker exec app1 curl http://app2
不要なリソースの一括削除(docker system prune)
Dockerを使い続けると、停止済みコンテナ・未使用イメージ・不要なネットワークが蓄積されてディスクを圧迫します。# 停止済みコンテナ・未使用ネットワーク・ダングリングイメージを一括削除する docker system prune # ボリュームも含めて削除する(--volumes) docker system prune --volumes # 確認プロンプトを省略する(-f) docker system prune -f # 使用状況の確認(削除前の確認に有用) docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 5 2 1.045GB 632.8MB (60%) Containers 3 1 0B 0B Local Volumes 2 1 543.2MB 0B (0%) Build Cache 12 0 234.6MB 234.6MB
トラブルシュート——よくあるエラーと対処法
1. 「Cannot connect to the Docker daemon」が出る場合
Dockerデーモンが起動していないか、権限がない場合に発生します。# エラー例 docker ps # docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? # Dockerサービスの状態を確認する sudo systemctl status docker # 起動していない場合は起動する sudo systemctl start docker # 一般ユーザーで実行している場合はグループを確認する groups $USER # dockerグループが含まれていなければ追加して再ログインする sudo usermod -aG docker $USER
2. 「Port is already in use」が出る場合
指定したホスト側ポートがすでに使用中の場合に発生します。# エラー例 docker run -d -p 80:80 nginx # docker: Error response from daemon: driver failed programming external connectivity... # Bind for 0.0.0.0:80 failed: port is already allocated. # 使用中のポートを確認する sudo ss -tlnp | grep :80 # 別のポートにマッピングして起動する docker run -d -p 8080:80 nginx
3. コンテナがすぐに終了してしまう場合
コンテナ内でフォアグラウンドのプロセスが起動していないと、コンテナは即座に終了します。# まずログを確認してエラーを特定する docker logs my-container # 終了コードを確認する docker inspect --format='{{.State.ExitCode}}' my-container # 0=正常終了、1=エラー、137=OOMKill(メモリ不足) # デバッグのため対話シェルで起動する docker run -it --entrypoint bash my-image
4. 「No space left on device」が出る場合
イメージやコンテナが蓄積してディスクが満杯になっている状態です。# ディスク使用状況を確認する docker system df df -h /var/lib/docker # 不要なリソースを一括削除する docker system prune -f # ボリュームも含めて削除する(データが消えることに注意) docker system prune --volumes -f
Dockerコマンド早見表
| やりたいこと | コマンド |
|---|---|
| イメージを取得する | docker pull nginx |
| イメージ一覧を表示する | docker images |
| イメージを削除する | docker rmi nginx:latest |
| コンテナをバックグラウンドで起動する | docker run -d --name my-nginx nginx |
| ポートマッピングして起動する | docker run -d -p 8080:80 nginx |
| 起動中のコンテナを一覧表示する | docker ps |
| 全コンテナを表示する(停止中含む) | docker ps -a |
| コンテナを停止する | docker stop my-nginx |
| コンテナを削除する | docker rm my-nginx |
| コンテナ内でシェルを起動する | docker exec -it my-nginx bash |
| コンテナのログを確認する | docker logs my-nginx |
| コンテナの詳細情報を確認する | docker inspect my-nginx |
| ディスク使用状況を確認する | docker system df |
| 不要なリソースを一括削除する | docker system prune -f |
| ボリューム一覧を表示する | docker volume ls |
| ネットワーク一覧を表示する | docker network ls |
本記事のまとめ
Dockerコマンドの基本を整理しておきます。・イメージ操作: `docker pull` で取得、`docker images` で一覧、`docker rmi` で削除
・コンテナ操作: `docker run -d` でバックグラウンド起動、`docker stop` で停止、`docker rm` で削除
・状態確認: `docker ps -a` で全コンテナ表示、`docker logs` でログ確認
・内部操作: `docker exec -it` でコンテナ内シェルに入る
・リソース管理: `docker system prune` で不要なリソースを一括削除
Dockerは最初はとっつきにくく感じるかもしれませんが、基本コマンド10個を覚えるだけで日常的な操作はほぼカバーできます。
まずは `docker run -d -p 8080:80 nginx` でNginxを動かして、ブラウザで `http://localhost:8080` にアクセスしてみてください。
そこから少しずつ使い方を広げていくのが、Dockerを身につける最短ルートです。
Linux 基本コマンドの解説もあわせて確認しておくと、コンテナ内部での操作がよりスムーズになります。
Dockerを含めたサーバー運用の基礎を、体系的に身につけませんか?
コンテナ技術はサーバー運用の一部ですが、ファイルシステム・ネットワーク・セキュリティ設定と組み合わせることで、現場で頼られる存在になれます。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 前のページへ:CentOS Stream 9とAlmaLinux 9・Rocky Linux 9の違い|選定基準と移行ガイド
- この記事の属するカテゴリ:Linuxtips・Linuxサーバー構築(Rocky Linux/RHEL9)へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます