Dockerコンテナ構築時以下のようなポートエラーが発生し、原因がはっきりとわからず時間を費やしてしまった経験があるので、そちらの解決方法を紹介いたします。
Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use.
エラーの原因と対処法
下記のようにDoccker コンテナを起動しようとするとエラーが発生したわけです。
# docker run -p 80:80 -d atmoz/sftp foo:pass:::upload
8886d0f9740a1988d6da27dc8f62abdc7d556aba8cdef7e39fc2f7779c152268
docker: Error response from daemon: driver failed programming external connectivity on endpoint romantic_haslett (f4f9d55d8c947ff55486ab89a564abd2992c83c969f522ab0a5c0fd05c3bba00): Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use.
このエラーの原因はポートがすでに使われていることが原因となっています。
こちらは、以下のようなコマンドで実際にそのポートが使用されているか確認することができます。
# lsof -i -P | grep "LISTEN"
このエラーの回避方法はポートを使用しているサービスを停止すれば解決しますので、以下のコマンドでサービスを停止してあげましょう。
# systemctl stop 対象サービス名
以上の手順を踏んでいただければ、コンテナが正常に起動するはずです。