🐳

【Docker】nginx動かしてみる

2022/10/16に公開

概要

  • こちらのUdemyコースで勉強した内容+α

https://www.udemy.com/course/docker-mastery/

  • nginxによるdockerコンテナ起動のお試し
  • 裏側の動きを簡単に整理
  • dockerコマンドの使い方も簡単にメモ

nginxでのお試し

docker imageはバイナリ、ライブラリ、ソースコードなどを含むアプリケーションそのもの
docker containerはdocker imageをプロセスとして実行しているインスタンスのこと。

docker container run --publish 80:80 nginx

ブラウザなどで"localhost"にアクセスしてみると、nginxの画面が表示されていれば成功。
何が起きているかというと、

  1. Docker Hubから"nginx"のイメージを取得(ローカルに既にあればそれを使う)
  2. 取得したイメージでコンテナを起動
  3. ホストマシンのポート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などでプロセスを確認する。

https://docs.docker.com/desktop/windows/wsl/

https://stackoverflow.com/questions/64787125/why-doesnt-htop-show-my-docker-processes-using-wsl2

Discussion