资讯专栏INFORMATION COLUMN

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

Lin_YT / 950人阅读

摘要:最近在学习微服务,不可避免的会涉及到将微服务容器化。为了尝试解决上述问题,我们基于,安装了官网提供的的虚拟机镜像。下面说一下在中安装了之后出现困扰我们一天的问题。增加如下内容将,更新为重新启动,再次通过命令访问,问题解决。

最近在学习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    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

Cannot 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 status
docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since vr 2017-09-25 12:41:48 EDT; 15min ago
     Docs: https://docs.docker.com
 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后,只解决了最初的第一个问题,插拔网线的问题仍然存在,但是现在的结果已经能够满足我们的要求了。 参考

https://stackoverflow.com/que...
https://stackoverflow.com/que...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27040.html

相关文章

  • 各平台安装和使用Docker的差异

    摘要:在上运行使用系统要求开启虚拟化的硬件支持可以通过命令来检查或者更高版本至少内存安装最新点击下载安装下载的文件安装完成后,启动使用镜像加速地址使用自带的使用的系统要求运行或者以上版本支持硬件虚拟化技术并且已启用虚拟化安装点击下载运行在上运行使 在Mac上运行Docker 使用Docker for Mac 系统要求 开启虚拟化的硬件支持,可以通过命令来检查:sysctl kern.hv_...

    Thanatos 评论0 收藏0
  • Docker的大坑小洼

    摘要:正在学习,留着看看转自的大坑小洼成为云计算领域的新宠儿已经是不争的事实,作为高速发展的开源项目,难免存在这样或那样的瑕疵。话不多说,一起来领略的大坑小洼。原因回归至上文的第一个坑。如此一来,只要内部涉及到域名解析,则立即受到影响。 正在学习Docker,留着看看 转自Docker的大坑小洼 Docker成为云计算领域的新宠儿已经是不争的事实,作为高速发展的开源项目,难免存在这样或那样...

    My_Oh_My 评论0 收藏0
  • docker网络方案简介

    摘要:模式容器直接使用宿主机的网络配置,包括网卡,路由等,这种方案下,从网络层面来看,容器就不是容器了,只是一个宿主机上的进程端口而已。 注:本篇仅仅是对各个网络方案的简介和思考。需要深入学习如何部署和使用的同学请自行度娘~ 中小docker用户的苦恼 docker的使用者十分广泛,不止有网易蜂巢,daocloud,时速云这类的已经成熟化的公有云服务,许多中小型企业内部也在试图将docker...

    bbbbbb 评论0 收藏0
  • docker网络方案简介

    摘要:模式容器直接使用宿主机的网络配置,包括网卡,路由等,这种方案下,从网络层面来看,容器就不是容器了,只是一个宿主机上的进程端口而已。 注:本篇仅仅是对各个网络方案的简介和思考。需要深入学习如何部署和使用的同学请自行度娘~ 中小docker用户的苦恼 docker的使用者十分广泛,不止有网易蜂巢,daocloud,时速云这类的已经成熟化的公有云服务,许多中小型企业内部也在试图将docker...

    ?xiaoxiao, 评论0 收藏0

发表评论

0条评论

Lin_YT

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<