🐳
【Docker】nginx動かしてみる
概要
- こちらのUdemyコースで勉強した内容+α
- nginxによるdockerコンテナ起動のお試し
- 裏側の動きを簡単に整理
- dockerコマンドの使い方も簡単にメモ
nginxでのお試し
docker imageはバイナリ、ライブラリ、ソースコードなどを含むアプリケーションそのもので
docker containerはdocker imageをプロセスとして実行しているインスタンスのこと。
docker container run --publish 80:80 nginx
ブラウザなどで"localhost"にアクセスしてみると、nginxの画面が表示されていれば成功。
何が起きているかというと、
- Docker Hubから"nginx"のイメージを取得(ローカルに既にあればそれを使う)
- 取得したイメージでコンテナを起動
- ホストマシンのポート80を開けて、コンテナ内のポート80にトラフィックを送る
(ポートフォワーディング)
バックグラウンド起動させたい場合は--detach
をつける。
docker container run --publish 80:80 --detach nginx
起動しているコンテナを確認する場合は
docker container ls
勝手にコンテナIDやコンテナ名がつけられていることがわかる。--name
で名前をつけられる。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ac26f1387419 nginx "/docker-entrypoint.…" 5 seconds ago Up 5 seconds 0.0.0.0:80->80/tcp serene_fermi
起動しているコンテナを止める場合はコンテナIDや名前を指定。
一意に特定できれば一部で良い。
docker container stop ac2
停止させたコンテナも見たい場合は
docker container ls -a
停止させたコンテナも一意なコンテナIDと名前を持ち続けるので、適宜消す必要がある。
docker container rm ac2
起動しているコンテナに対してrmしようとするエラー出るが、--force
をつけて無理やり消せる。
コンテナの実態
コンテナは結局ただのプロセス。
どのリソースにアクセスするか制約がかかっているだけのプロセス。
実際にps aux
コマンドででプロセスリストを確認してみればよい。
ただし、WindowsのWSL2環境だと実際にサーバとなって
プロセスを動かしているディストリビューションはdocker-desktopなので、
WSL経由でwsl -d docker-desktop top
などでプロセスを確認する。
Discussion