docker runを分解する
次のコマンドは、Nginxコンテナをバックグラウンドで起動し、ホストの8080番ポートからアクセスできるようにします。
Webサーバーを起動COMMAND
docker run -d --name study-web -p 8080:80 nginx:alpinedocker run:イメージからコンテナを作って起動する-d:端末を占有せずバックグラウンドで動かす--name study-web:人間が扱いやすい名前を付ける-p 8080:80:ホスト8080番をコンテナ80番へ転送するnginx:alpine:利用するイメージとタグを指定する
同じホストポートを使うコンテナを複数起動すると衝突します。別のポートを使う場合は-p 8081:80のように左側だけ変更します。
状態とログを確認する
状態を一覧表示COMMAND
docker ps
docker ps -a
docker logs --tail 20 study-web出力例OUTPUT
CONTAINER ID IMAGE STATUS PORTS NAMES
4f2... nginx:alpine Up 12 seconds 0.0.0.0:8080->80/tcp study-webdocker psは起動中だけ、-a付きは停止済みも含めて表示します。docker logsはコンテナの標準出力と標準エラーを表示します。継続的に見るdocker logs -f study-webは、Ctrl+Cでログ表示だけを止め、コンテナ自体は止めません。
docker execでコンテナ内を確認する
起動中のコンテナでコマンドを実行するにはdocker execを使います。シェルが入っているイメージなら、次のようにファイルを確認できます。
Nginxのトップページを読むCOMMAND
docker exec study-web sh -c "head -n 2 /usr/share/nginx/html/index.html"出力例OUTPUT
<!DOCTYPE html>
<html>docker exec -it study-web shとすると対話的なシェルを開けます。ただしコンテナ内で直接ファイルを編集する方法は、コンテナを作り直すと失われます。繰り返し使う設定はDockerfileやボリュームへ移します。
停止・再起動・削除
ライフサイクル操作COMMAND
docker stop study-web
docker start study-web
docker restart study-web
docker stop study-web
docker rm study-web停止はコンテナを残したまま実行を止め、開始は同じコンテナを再開します。削除はコンテナ自体を消す操作です。docker rm -fは実行中でも停止して削除するため、便利ですが対象確認を省略しないようにします。
練習
Nginxを起動してブラウザで確認し、docker stop後にページが表示されなくなること、docker start後に再び表示されることを試してください。