1. 程式人生 > >docker學習記錄一 --- docker run -d -p 80:80 --name webserver nginx 執行錯誤

docker學習記錄一 --- docker run -d -p 80:80 --name webserver nginx 執行錯誤

    Mac 安裝docker方式進行安裝測試(https://yeasy.gitbooks.io/docker_practice/install/mac.html),遇到以下問題,並進行記錄~

問題一

執行 docker run -d -p 80:80 --name webserver nginx 提示:

docker: Error response from daemon: driver failed programming external connectivity on endpoint webserver (d8a338771744851ff152f9eb43954a4c85ccde2b652029a323d4d41663b52686

): Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE).

解決方案

EADDRINUSE stackoverflow的解釋是:EADDRINUSE means that the port number which listen() tries to bind the server to is already in use, 即我們想要繫結的埠被佔用了,

使用 lsof -i:80檢視80 埠是否被佔用,如果有輸出則表示被佔用,沒有輸出則未被佔用。我自己的檢視確實被佔用,被tomcat佔用了

所以解決方案為修改埠號,其中第一個80,即冒號(:)前面的為埠號,可以修改為任意未被佔用的埠,此處我修改為8080

也可以停掉使用80埠的服務,再重新執行(我沒有嘗試)

問題二

執行 docker run -d -p 8080:80 --name webserver nginx 提示:

docker: Error response from daemon: Conflict. The container name "/webserver" is already in use by container "06a951c1400c7d97094afd41e637bcebf51710a49391d5d45f80f97011199da3".

You have to remove (or rename) that container to be able to reuse that name.

解決方案

重新命名webserver名稱,或者刪除已經生成的container

我採用刪除的方式,即 docker rm 06a951c1400c7d97094afd41e637bcebf51710a49391d5d45f80f97011199da3

docker rm <container id>

再次執行docker run -d -p 8080:80 --name webserver nginx

瀏覽器檢視localhost:8080,出現

Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

表示nginx啟動成功。