簡體   English   中英

我的 docker 容器未在 Docker for Windows 上的 localhost (0.0.0.0) 上啟動(使用 Hyper-V 的本機)

[英]My docker container isn't starting on localhost (0.0.0.0) on Docker for Windows (Native using Hyper-V)

我正在關注Digital Ocean關於如何啟動 nginx docker 容器的教程(目前在第 4 步)。 目前這是他們的輸出:

$ docker run --name docker-nginx -p 80:80 -d nginx
d3ccb73a91985651ec61231bca9f9c716f0dec807e354a29eeef2144f883a01c

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                         NAMES
b91f3ce26553        nginx               "nginx -g 'daemon off"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 443/tcp   docker-nginx

但是當我運行它時,這是我的輸出(注意到容器的不同 IP):

C:\>docker run --name docker-nginx -p 80:80 -d nginx
d3ccb73a91985651ec61231bca9f9c716f0dec807e354a29eeef2144f883a01c

C:\>docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                           NAMES
d3ccb73a9198        nginx               "nginx -g 'daemon off"   14 hours ago        Up 2 seconds        10.0.75.2:80->80/tcp, 443/tcp   docker-nginx

為什么會發生這種情況? 我怎樣才能獲得與 Digital Ocean 相同的結果? (讓服務器在本地主機上啟動)


編輯:我正在使用Docker for windows (最近發布),它顯然是使用 Hyper-V 本地運行的。 我的docker-machine ls輸出是這樣的:

C:\>docker-machine ls
NAME   ACTIVE   DRIVER   STATE   URL   SWARM   DOCKER   ERRORS

C:\>

但是當我運行它時,這是我的輸出(注意到容器的不同IP)

由於這是一台 Windows 機器,我假設您正在使用 Docker 工具箱適用於 Windows 的 Docker。 10.0.75.2是 IP boot2docker 虛擬機。

如果您使用的是 Windows 或 Mac OS,則需要某種形式的虛擬化才能運行 Docker。 你剛才看到的IP就是那個輕量級虛擬機的IP。

我怎樣才能獲得與 Digital Ocean 相同的結果? (讓服務器在本地主機上啟動)

使用 Linux 發行版! 您還可以Docker For Windows設置中啟用localhost上的 Expose 容器端口

在此處輸入圖片說明

盡管您在本地機器上創建了容器。 這些實際上運行在不同的機器上(虛擬機)

首先,檢查你的docker機器(虛擬機)的IP是什么

$docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM
default   *        virtualbox   Running   tcp://192.168.99.100  

然后運行curl命令(或打開瀏覽器)以查看容器內nginx網絡服務器上的默認網站

curl http://192.168.99.100:80

如果您在 Windows 上使用虛擬機:

docker-machine ip default

https://docs.docker.com/machine/concepts/

當我第一次運行這個命令時: docker run -d -p 80:80 --name docker-tutorial docker101tutorial

我收到此錯誤:

泊塢窗:來自守護程序的錯誤響應:沖突。 容器名稱“/docker-tutorial”已被容器“LONG_CONTAINER_ID”使用。 您必須刪除(或重命名)該容器才能重用該名稱。

因此,我嘗試使用以下命令刪除此容器: docker rm -f LONG_CONTAINER_ID

然后我做了: docker run -d -p 3080:80 --name docker-tutorial docker101tutorial

注意3080:80而不是80:80 ...如果我從docker桌面運行它,我會在下面看到這個默認選項:

docker 桌面中的選項

暫無
暫無

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

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