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でコンテナ内のコマンド実行