1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Windows7 下Ubuntu VM 中Docker连接不上的问题及解决方案

Windows7 下Ubuntu VM 中Docker连接不上的问题及解决方案

时间:2023-01-17 07:44:15

相关推荐

Windows7 下Ubuntu VM 中Docker连接不上的问题及解决方案

最近在学习Java微服务,不可避免的会涉及到将微服务容器化。

由于使用Windows7作为开发环境,最初几天用了VirtualBox 和 boot2docker,但是经常会出现如下两个问题:

1,在电脑重启后,所有在docker-machine中的配置信息都会丢失;

2,插拔网线后,运行中的容器无法再访问。

这两个问题不是只有我遇到过,和我一起研究docker的同事也遇到同样的情况。

为了尝试解决上述问题,我们基于VirtualBox,安装了Oracle官网提供的Ubuntu的虚拟机镜像。

首先我们决定网络选用桥接模式,主要基于几点考虑:

1, Ubuntu中的Docker需要能够连接外网以获取需要的公共镜像;

2, 本地的开发环境或其他机器,需要能够直接访问Docker容器的宿主机(即Ubuntu VM),以便通过maven或命令行的方式执行Docker命令;或者通过浏览器访问容器化的eureka以及其他应用。

桥接模式的设定,可以通过在VirtualBox中选择Ubuntu实例,点击Settings->Network->Adapter1,然后选择Bridged Adapter,之后保存即可。(需要注意的是Ubuntu实例要在停止状态才可以选择)

关于Ubuntu具体的安装步骤和其他配置,网上有很多文章介绍,这里不再赘述。

下面说一下在Ubuntu中安装了Docker之后出现困扰我们一天的问题。

通过本地环境尝试连接Ubuntu的Docker Daemon(即监听Docker并对外提供服务的进程)

$curl 10.213.22.202:2375% Total % Received % Xferd Average Speed Time TimeTime CurrentDload Upload Total Spent Left SpeedCannot connect to the Docker daemon. Is the docker daemon running on this host?

其中2375(或2376)为Docker Daemon的默认监听端口,10.213.22.202为桥接模式下虚拟机获得的网络地址。

环境信息

Virtualbox: 5.1.20

Ubuntu VM: ubuntu-16

docker installed: 17.06.0

首先我们确认了,Ubuntu中的Docker已经在运行

这点我们可以通过docker ps,docker pull或docker push等命令确认。

其次,查看 netstat -an|grep 2375 的结果

发现此端口没有处于监听状态。

通过Docker status命令确认2375确实没有处于监听状态

输出包括类似如下信息:

root@ubuntu:~# /etc/init.d/docker statusdocker.service - Docker Application Container EngineLoaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)Active: active (running) since vr -09-25 12:41:48 EDT; 15min agoDocs: Main PID: 1008 (docker)CGroup: /system.slice/docker.service└─1008 /usr/bin/docker daemon -H fd://

通过增加如下两个配置解决:

/etc/systemd/system/docker.service.d/docker.conf

此文件如果没有就新创建一个。增加如下内容:

[Service]ExecStart=ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

/etc/init.d/docker

将DOCKER_OPTS="",更新为 DOCKER_OPTS="-H tcp://0.0.0.0:2375"

DOCKER_OPTS="-H tcp://0.0.0.0:2375"

重新启动Docker,再次通过curl命令访问,问题解决。

root@ubuntu:~# /etc/init.d/docker restart

备注:使用Ubuntu后,只解决了最初的第一个问题,插拔网线的问题仍然存在,但是现在的结果已经能够满足我们的要求了。

参考

/que...

/que...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。