赞
踩
本文是紧接着上一节 docker入门与实战
# 查看容器支持的网络模式
docker network ls
# 指定网络模式启动容器
docker run -d --net=host mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"
使用场景,企业应用服务,与mysql数据库服务。两个服务分别部署不同容器,但是只需要企业应用服务能访问mysql数据库服务,反过来则没有必要
解决方案:容器间基于Link实现单向通信
# 启动mysql服务 必须指定名字 docker run --name=mymysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mycentos:mysql # 启动一个应用(此处用centos7代替) link mysql容器 docker run -itd --name=mycentos --link mymysql centos:7 # 使用命令查看 mycentos 与 mymysql 容器ip, 属性为 Networks.bridge.IPAddress docker inspect mymysql # 172.17.0.2 docker inspect mycentos # 172.17.0.4 # 进入mycentos ping mymysql docker exec -it mymysql /bin/bash [root@7ed31839001e /]# ping mymysql PING mymysql (172.17.0.2) 56(84) bytes of data. 64 bytes from mymysql (172.17.0.2): icmp_seq=1 ttl=64 time=0.281 ms 64 bytes from mymysql (172.17.0.2): icmp_seq=2 ttl=64 time=0.172 ms # 进入mymysql ping mycentos docker exec -it mymysql /bin/bash # 由于此mysql镜像是基于debian而不是基于centos所以需要安装ping命令工具 apt-get update && apt-get install net-tools && apt install -y iputils-ping # ping mycentos root@7ea8c4cbed8b:/docker-entrypoint-initdb.d# ping mycentos ping: mycentos: Name or service not known root@7ea8c4cbed8b:/docker-entrypoint-initdb.d#
link 总结,其实就是将 link 的容器的ip地址与容器名 记录到本地。类似于本地hosts 文件或者说是 DNS 解析。
使用场景,企业应用服务,相互之间需要有网络通信。
解决方案:容器间基于brige网桥实现双向通信
# 创建一个网桥
docker network create -d bridge my_bridge
# 查看网络模式
docker network ls
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。