![](/img/trans.png)
[英]ddev/docker fails with “Failed programming external connectivity”, Windows 10
[英]Docker on Windows 10 “driver failed programming external connectivity on endpoint”
我正在嘗試將$ docker-compose up -d
用於項目並收到此錯誤消息:
錯誤:對於 api 無法啟動服務 api:驅動程序在端點 dataexploration_api_1 上編程外部連接失敗(8781c95937a0a4b0b8da233376f71d2fc135f46aad011401c019eb3d14a0b117):錯誤啟動用戶空間代理:m0cp090t20.0t2.0t20:cp090t20:cp090t20.0t20.000000000啟動項目時遇到錯誤。
我想知道它是否可能是端口? 我之前一直在嘗試端口 8080。 該項目最初是在 mac 上設置的,我已經從 gitHub 克隆了存儲庫。
我在 Windows 10 Pro / Docker v17.06.1-ce-win24 / Docker-Compose v1.14.0 上使用 Windows Powershell x86 在管理模式下收到相同的錯誤消息。
解決方案是簡單地重新啟動 Docker。
如果發生一次,重新啟動 Docker 將完成工作。 就我而言,每次重新啟動計算機時都會發生這種情況。
在這種情況下, 禁用 Fast Startup ,否則您可能會在每次計算機啟動時重新啟動 Docker。 這個解決方案是從這里獲得的
簡單地重新啟動 Docker 並不能解決我在 Windows 10 上的問題。
就我而言,我通過以下確切步驟解決了問題:
1) 關閉“Docker 桌面”
2)運行以下命令:
net stop com.docker.service
net start com.docker.service
3) 再次啟動“Docker 桌面”
希望這會幫助別人。
我也遇到了那個錯誤,如果你想知道錯誤發生的主要原因,因為 docker 已經在運行一個類似的容器,要解決這個問題(避免重新啟動 Docker),你必須:
docker container ls
你得到了類似的東西:
CONTAINER ID IMAGE COMMAND CREATED
1fa4ab2cf395 friendlyhello "python app.py" 28 seconds ago
這是正在運行的容器列表,取 CONTAINER ID(復制Ctrl + C )
現在您必須結束該過程(並讓運行另一個圖像)運行此命令。
docker container stop <CONTAINER_ID>
就這樣! 現在您可以創建容器。
就我而言,問題在於 docker 容器(Nginx)使用 80 端口,而 IIS 使用相同的端口。 在IIS中設置另一個端口解決問題
在大多數情況下,您應該考慮的第一種情況是有一個舊服務正在運行並使用該端口。 就我而言,由於我更改了映像名稱,因此在使用 docker-compose 停止(然后啟動)時,它不會停止舊容器(服務),導致無法啟動新容器。
有點遲到的答案,但我會把它留在這里它可能會幫助其他人在 Mac mojave 重新啟動 mac 和 docker 之后我不得不sudo apachectl stop
。
解決此問題的最簡單方法是重新啟動 docker。 但在某些情況下,即使您沒有任何在端口中運行的容器,它也可能無法工作。您可以使用 docker docker ps
命令檢查正在運行的容器,並可以查看所有在使用docker ps -a
之前未被清除但已退出的容器docker ps -a
命令。
假設有一個容器,其容器 ID 為8e35276e845e
。您可以使用命令docker rm 8e35276e845e
或docker rm 8e3
來結束容器。 請注意,前 3 個字符串是該特定 docker 容器 id 的 id。 因此,根據上述場景8E3是8e35276e845e的id。
如果重新啟動不起作用,您可以嘗試更改docker-compose.yml文件中服務的端口,並根據 apache 端口更改 v-host 的端口(如果有)。這將解決您的問題問題。
例如:
build:
context: ./apache
dockerfile: Dockerfile
working_dir: /var/www/
volumes:
- .:/var/www
networks:
- app-network
ports:
- 8082:80
depends_on:
- mysql_db
應該改成
apache_server:
build:
context: ./apache
dockerfile: Dockerfile
working_dir: /var/www/
volumes:
- .:/var/www
networks:
- app-network
ports:
- 8083:80
depends_on:
- mysql_db
並且特定的 v-host 也必須更改,
Ex(根據上述場景):
<VirtualHost *:80>
ProxyPreserveHost On
ServerAlias phpadocker.lk
ProxyPass / http://localhost:8083/
ProxyPassReverse / http://localhost:8083/
</VirtualHost>
這將幫助您解決上述問題。
對於許多有相同問題的 Windows 用戶,我建議也重新啟動計算機,因為大多數情況下(至少對我而言)僅重新啟動 Docker 是行不通的。 因此,我建議您按照以下步驟操作:
然后以管理員身份啟動 PowerShell 並運行:
Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private
之后重啟你的 Docker。
完成這些步驟后,您將能夠毫無問題地運行。 我希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.