在使用 Docker 進行應用部署的過程中,有時我們會遇到中斷失敗的情況。當出現這種情況時,我們需要及時分析產生問題的原因,以便快速地進行解決。
造成 Docker 中斷失敗的原因可能有很多,例如網絡連接不穩定、鏡像文件下載失敗、容器占用的端口被其他進程占用等。下面我們就以容器占用的端口被其他進程占用為例,來介紹中斷失敗的具體情況。
# 啟動一個使用端口 80 的 Nginx 容器 $ docker run -p 80:80 nginx # 在另一個命令行窗口中啟動一個使用端口 80 的 Node.js 應用 $ node app.js Listening on http://:::80
可以看到,我們在配置 Nginx 容器時使用了 -p 80:80 參數,將主機的 80 端口映射到容器的 80 端口。在此之后,我們又啟動了一個使用端口 80 的 Node.js 應用。
當我們訪問 http://localhost 時,會默認使用主機的 80 端口去訪問。但此時,80 端口已經被 Node.js 應用占用了,因此我們訪問失敗。
解決這個問題的方法很簡單,只需要在啟動 Nginx 容器時,將映射到主機的端口號改為一個未被占用的端口即可。例如:
# 將主機的 8080 端口映射到容器的 80 端口 $ docker run -p 8080:80 nginx
這樣,我們訪問 http://localhost:8080 就可以正常訪問 Nginx 了。