NginxでDockerを最小限の構成から理解し直すお話1

docker run -it --rm -d -p 8080:80 --name web nginx

公式ドキュメントではまずこう書いてあるが、これだと、-itは何やねん?とか--rm は何やねん、という疑問が湧いてくるので、まず最小限から考える。

最小限動かすコマンドは

docker run nginx

これだけで動いているっぽい。
ただ、動いてはいるものの、ポートも何も設定していないわけだからどこからもアクセスできない。
ただ、別のターミナルで docker psをするとコンテナが起動していることはわかるし、docker exec -it …を使ってそのコンテナの中に入ることはできる。

流石にそれだとまだ母親の胎内にいる赤子のようなものなので、まずは誕生させよう。

次は

docker run -p 8080:80 nginx

これでlocalhost:8080に接続してみるとちゃんとnginxが起動しているっぽい画面が表示される。

:8080が邪魔くさい、と思うならば

docker run -p 80:80 nginx

でも良い。


ちなみに順番変えて

docker run nginx -p 8080:80

とするとエラーが起きて動かない。何をrunするかという目的語は一番最後に持ってこなきゃならん仕様らしい。

さて、

docker run -p 8080:80 nginx 

これでうまく起動した後別のターミナルでdocker psをしてみよう。すると、現在起動中のコンテナが出てくるわけだが、NAME属性がおかしい。

crazy_jemisonとかflamboyant_keplerとかなんか脈絡のない形容詞と名前らしきものが出てくる。おそらく名前をつけないと自動的に適当な名前をつける仕様なのだろう。

ということで次は名前をつけてみる。

docker run -p 8080:80 --name web nginx 

これで起動するとちゃんと名前がwebになった。
が、一旦、これで落としてもう一度同じコマンドで立ち上げると、他のコンテナで使ってるよ、と怒られる。

止めたやんけー、と思いつつも、どうやらそういうものらしい。
とりあえず

docker rm web

でコンテナを削除すればいいわけだが、んなこと毎回面倒でやってられん。

ということで

docker run --rm -p 8080:80 --name web nginx

というふうに--rmをつけておけば、停止と同時に削除してくれる模様。

さあ、ここまでをまとめると
 

  • --nameは付けなくとも良いが、付けておかないと勝手な名前でコンテナが立ち上がりまくる。

  • -p 8080:80は付けておかなくても動きはするが、ブラウザでアクセスできないので意味ない。

  • --rmは付けておかなくても動きはするが、つけるごとにコンテナの残骸が残りまくるので、付けておいた方が便利。

ということになる。
あとは-itで対話的に、と思うが、これは正直使いどころがわからんので無視。
そして、

-d はいうまでもなくデーモンとして立ち上げ。

というわけでまとめ。

最低限の構成で、気持ちよくnginxを扱うには

docker run --rm -p 8080:80 -d --name web nginx

で立ち上げて、コンテナに入るときは

docker exec -it web bash

コンテナを止めるときは

docker stop web

というのが気持ちよく使える最低限の構成と言えるだろう。

ただし、コンテナに入ったところでviが使えるわけでもなく、何もできずにただ、nginxデフォルトの画面が出てくるだけである。

この記事が気に入ったらサポートをしてみませんか?