我已经在 Windows 10 上安装了 docker,但是当我尝试使用示例运行它时,我得到:
C:\Program Files\Docker Toolbox\kitematic>docker run hello-world
An error occurred trying to connect: Post http://localhost:2375/v1.21/containers/create: dial tcp 127.0.0.1:2375: ConnectEx tcp: No connection could b
e made because the target machine actively refused it.
怎么修?
答案1
我是 Docker 新手,因此对我的答案不是很有信心,但我遇到了与您描述的相同的问题,下面是我解决问题的方法...
首先,我会认为你有一个可以正常运行的 docker-machine,例如:
C:\Program Files\Docker Toolbox>docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
docker - hyperv Running tcp://192.168.0.22:2376 v1.9.1
我花了一段时间才走到这一步,因为我正在使用Hyper-V来托管我的 Docker 机器。但是,一旦你到了这里,你就可以使用docker-machine
来获取你的配置设置:
C:\Program Files\Docker Toolbox>docker-machine config docker
--tlsverify
--tlscacert="C:\\Users\\Ken\\.docker\\machine\\certs\\ca.pem"
--tlscert="C:\\Users\\Ken\\.docker\\machine\\certs\\cert.pem"
--tlskey="C:\\Users\\Ken\\.docker\\machine\\certs\\key.pem"
-H=tcp://192.168.0.22:2376
为了保留这些参数(这样您就不必在每次调用时传递它们docker.exe
),您可以创建以下环境变量(单击这里有关可用变量的详细信息):
set DOCKER_HOST=tcp://192.168.0.22:2376
set DOCKER_TLS_VERIFY=true
set DOCKER_CERT_PATH=C:\Users\Ken\.docker\machine\certs
我还没有编写所有这些脚本,但我想我会创建一个 Docker Toolbox 附带的 start.sh 的替代方案,因为每次启动托管 Docker 的虚拟机时,该 IP 地址都可能会发生变化。注意:docker-machine
这里也涵盖了你!启动 docker 机器后,你可以使用该docker-machine env <machine>
命令自动设置这些环境变量!
因此,我创建了以下 bash 脚本来替换 start.sh 脚本:
docker-machine start docker
eval "$(docker-machine.exe env docker)"
显然,你必须将我的详细情况替换为你自己的,但我希望这能有所帮助。我知道我花了很长时间才找到有关如何在 Windows 10 上运行这些内容的文档。