最近在学习Java微服务,不可避免的会涉及到将微服务容器化。
因为使用Windows7做为开发环境,最初几天用了VirtualBox 和 boot2docker,可是常常会出现以下两个问题:
1,在电脑重启后,全部在docker-machine中的配置信息都会丢失;
2,插拔网线后,运行中的容器没法再访问。docker
这两个问题不是只有我遇到过,和我一块儿研究docker的同事也遇到一样的状况。shell
为了尝试解决上述问题,咱们基于VirtualBox,安装了Oracle官网提供的Ubuntu的虚拟机镜像。ubuntu
首先咱们决定网络选用桥接模式,主要基于几点考虑:
1, Ubuntu中的Docker须要可以链接外网以获取须要的公共镜像;
2, 本地的开发环境或其余机器,须要可以直接访问Docker容器的宿主机(即Ubuntu VM),以便经过maven或命令行的方式执行Docker命令;或者经过浏览器访问容器化的eureka以及其余应用。浏览器
桥接模式的设定,能够经过在VirtualBox中选择Ubuntu实例,点击Settings->Network->Adapter1,而后选择Bridged Adapter,以后保存便可。(须要注意的是Ubuntu实例要在中止状态才能够选择)网络
关于Ubuntu具体的安装步骤和其余配置,网上有不少文章介绍,这里再也不赘述。curl
下面说一下在Ubuntu中安装了Docker以后出现困扰咱们一天的问题。maven
经过本地环境尝试链接Ubuntu的Docker Daemon(即监听Docker并对外提供服务的进程)tcp
$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
这点咱们能够经过docker ps,docker pull或docker push等命令确认。
发现此端口没有处于监听状态。
输出包括相似以下信息:
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
https://stackoverflow.com/que...
https://stackoverflow.com/que...