簡體   English   中英

Windows 10 上的 Docker“驅動程序在端點上編程外部連接失敗”

[英]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>

就這樣! 現在您可以創建容器。

有關更多信息,請訪問https://docs.docker.com/get-started/part2/

通常,當您嘗試啟動容器但容器所需的端口已被占用時,通常會發生此錯誤,通常是由同一個 Docker 造成的,例如由於最新的錯誤進程停止。

對我來說,解決方案是:

  1. 像管理員一樣打開windows CMD,輸入netstat -oan找到占用你端口的進程(Docker就是那個進程):

就我而言,我的 docker 端口是 3306 6001 8000 9001。

  1. 現在我們需要釋放這些端口,所以我們通過 PID(列 PID)來終止這個進程,輸入

    TASKKILL /PID 9816 /F
  2. 重新啟動泊塢窗。

  3. 開心點。

問候。

我知道已經有很多答案,但沒有一個為我解決了問題。
相反,我通過將 docker 重置為出廠默認值來消除此錯誤消息:

在此處輸入圖片說明

就我而言,問題在於 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 8e35276e845edocker rm 8e3來結束容器。 請注意,前 3 個字符串是該特定 docker 容器 id 的 id。 因此,根據上述場景8E38e35276e845e的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 是行不通的。 因此,我建議您按照以下步驟操作:

  1. 重啟你的電腦。
  2. 然后以管理員身份啟動 PowerShell 並運行:

    Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private

  3. 之后重啟你的 Docker。

完成這些步驟后,您將能夠毫無問題地運行。 我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM