第2部:Docker入門 Step 6 / 24

Docker基本操作

Dockerの基本コマンドを覚えて、コンテナを自在に操作できるようになりましょう。

よく使うコマンド一覧

コマンド 説明
docker pull イメージをダウンロード
docker run コンテナを作成して起動
docker ps 実行中のコンテナ一覧
docker stop コンテナを停止
docker start 停止したコンテナを起動
docker rm コンテナを削除
docker images イメージ一覧
docker rmi イメージを削除
docker logs コンテナのログを表示
docker exec コンテナ内でコマンド実行

docker run の詳細

基本構文

docker run [オプション] イメージ名 [コマンド]

主要オプション

-d(デタッチモード)

バックグラウンドで実行

docker run -d nginx

-p(ポート転送)

ホスト:コンテナのポートをマッピング

docker run -d -p 8080:80 nginx

→ localhost:8080でアクセス可能

-v(ボリュームマウント)

ホストのディレクトリをコンテナにマウント

docker run -v ./myapp:/app python:3.11

→ ホストの./myappがコンテナの/appに

-e(環境変数)

環境変数を設定

docker run -e MYSQL_ROOT_PASSWORD=secret mysql

--name(コンテナ名)

コンテナに名前を付ける

docker run --name my-nginx -d nginx

--rm(自動削除)

終了時に自動でコンテナを削除

docker run --rm python:3.11 python --version

-it(インタラクティブ)

対話モードでシェルに入る

docker run -it python:3.11 bash

実践例

例1: Nginxを起動してブラウザでアクセス

# Nginxコンテナをバックグラウンドで起動
docker run -d --name my-nginx -p 8080:80 nginx

# ブラウザで http://localhost:8080 にアクセス

# ログを確認
docker logs my-nginx

# 停止
docker stop my-nginx

# 削除
docker rm my-nginx

例2: Pythonスクリプトを実行

# カレントディレクトリをマウントしてPythonを実行
docker run --rm -v $(pwd):/app -w /app python:3.11 python script.py

# 対話モードでPythonシェルに入る
docker run -it --rm python:3.11 python

例3: MySQLを起動

# MySQLコンテナを起動
docker run -d \
  --name my-mysql \
  -e MYSQL_ROOT_PASSWORD=secret \
  -e MYSQL_DATABASE=myapp \
  -p 3306:3306 \
  mysql:8.0

# MySQLに接続(コンテナ内で)
docker exec -it my-mysql mysql -uroot -psecret

# データを永続化する場合はボリュームを使用
docker run -d \
  --name my-mysql \
  -e MYSQL_ROOT_PASSWORD=secret \
  -v mysql-data:/var/lib/mysql \
  -p 3306:3306 \
  mysql:8.0

コンテナ管理

# 実行中のコンテナ一覧
docker ps

# すべてのコンテナ一覧(停止中も含む)
docker ps -a

# コンテナを停止
docker stop コンテナ名

# 停止したコンテナを起動
docker start コンテナ名

# コンテナを削除(停止している必要あり)
docker rm コンテナ名

# 強制削除(実行中でも削除)
docker rm -f コンテナ名

# すべての停止中コンテナを削除
docker container prune

イメージ管理

# イメージをダウンロード
docker pull python:3.11

# イメージ一覧
docker images

# イメージを削除
docker rmi python:3.11

# 未使用イメージを削除
docker image prune

# すべての未使用リソースを削除
docker system prune

コンテナ内の操作

# 実行中のコンテナでコマンドを実行
docker exec コンテナ名 コマンド

# 例: ファイル一覧を表示
docker exec my-nginx ls /usr/share/nginx/html

# コンテナのシェルに入る
docker exec -it コンテナ名 bash

# または sh を使う(bashがないイメージの場合)
docker exec -it コンテナ名 sh

# コンテナのログを表示
docker logs コンテナ名

# ログをリアルタイムで追跡
docker logs -f コンテナ名

まとめ

  • docker runでコンテナを作成・起動
  • -dでバックグラウンド、-pでポート転送
  • -vでファイルを共有、-eで環境変数設定
  • docker execでコンテナ内のコマンド実行
Dockerとは 次へ:Docker Compose