Docker简介:
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口。
我的理解:对应用更加深层次的封装,是应用完全不受真实运行环境的影响!
CMD: 命令式的Docker (默认访问的2375端口
)
构建镜像:
mvn clean package docker:build
- 运行镜像:
docker run -p 8888: 8888 -t 镜像名称
填坑:
问题1:本地和Docker中起项目,占用主机相同的port,但是不报错,还都能运行???
因为Docker端口映射所说的宿主机,并不是指本地的机器;可以简单认为,Docker是先在本地的机器上安装了一个虚拟机,这个虚拟机才是所说的宿主机;
Docker上所有的应用都是运行在这个宿主机上的。
问题2:
Docker进程间通信,服务间的调用
举个栗子:实现服务注册的功能
eureka-server部署使用name参数指定名字: docker run --name eureka-server【容器名字】 -p 8888:8888 镜像名
eureka-client中部署使用link参数链接注册服务器: docker run --link eureka-server【要链接的容器名字】:eureka-server 【配置中写的注册服务器的地址】 -p 8801:8801 镜像名
注:link的功能相当于做一个映射和绑定
GUI:图形式的Docker
推荐博文:http://www.solinx.co/archives/875
安装Docker插件
Docker全局配置:
编写Dockerfile文件: 略
dockerfile基础命令学习:http://www.cnblogs.com/wenbronk/p/6387830.html
Dokcer Deployment运行配置:
发布:
访问验证
过程填坑:
报错:
Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect
原因:其实是由于你没有安装docker server,用maven插件编译生成docker镜像的时候,默认访问的server是本机的2375端口
解决方法:
你可以在自己电脑上安装一个docker ,参考:http://www.cnblogs.com/zhaojinxin/p/7580881.html
或者
在远程服务器上安装docker:
第一步:
(亲测有效)Mac for docker 开启Remote API(远程接口) : https://my.oschina.net/u/2306127/blog/777695
总得来说三种方式:
方式一:运行
docker-proxy镜像
:docker run -p 2375
:2375 -v /var/run/docker.sock:/var/run/docker.sock -d -e PORT=2375 shipyard/docker-proxy
解释:运行docker-proxy
,将docker-proxy镜像
的2375端口映射为本地的2375端口;
方式二:图形化设置
Ubuntu上修改配置:http://www.cnblogs.com/zqifa/p/linux-docker-3.html
(亲测有效)CentOs7上修改配置:http://blog.csdn.net/faryang/article/details/75949611
注: 如果还是连接不上,可是时防火墙的原因:
防火墙开放该端口:
firewall-cmd --zone=public --add-port=2375/tcp --permanent
重启防火墙
firewall-cmd --reload