Docker難しいけど便利
初投稿です。よろしくお願いします。Docker何にもわからずこれはやばいと思って勉強し始めました。
Dockerを勉強し始めてはや1週間たちました。記事の内容(ボリューム)は少ないですがこつこつDockerの記事をあげていこうと思います。今回はDockerのエラー対応
エラー内容
以下のエラーが出ました。
ERROR: for chap07_webserver_1 Cannot start service webserver: driver failed programming external connectivity on endpoint chap07_webserver_1 ...
ERROR: for webserver Cannot start service webserver: driver failed programming external connectivity on endpoint chap07_webserver_1 ...
Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE)
ERROR: Encountered errors while bringing up the project.
docker-compose.ymlで定義したポート番号80を使ってwebserverを立ち上げようとしたところこのエラーが出ました。簡単な話、このポート番号で何かしら使用されているというわけです。
解決方法
上記原因でも述べましたが、このポート番号で使用しているプロセスを削除しましょう。
# 僕の場合はポート80をしているので80で実行しました
$ sudo lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 60 root 6u IPv4 0xdd8ec12c4a4ab873 0t0 TCP *:http (LISTEN)
上の表から、nginxが使用されていますね。正直いつ起動したかわかりませんが。。
とりあえず消しましょう。
# 占領箇所を特定したら、そのプロセスをkillする
$ sudo kill 80
再度、docker-compose up --build
するとうまくいきました。
最初は「再起動すればうまくいくだろう!!!」と思ってましたが、何一つエラーが消えないので。。メモがわりに投稿しました。
以上です。ありがとうございました。