同宿主机,docker中服务间的通信
docker中容器间的通信是使用bridge;
默认情况下,启动的容器是添加在名字为bridge中的network中,如果添加在其他的network中,那么默认是加入
--link的,即可以使用容器name通信;
同一个bridge中的容器是可以通信的,ping ip地址可以ping通,但是ping 容器name不能ping通,需要加--link 服务name;
不同bridge之间不能通信,只能ping同网关;
如何从宿主机访问到docker中的服务呢? -p 8080:8080, 通过宿主机的端口映射docker中的端口实现互通,另外一个就是,把服务的network设置为host;
docker run
--it(启动容器,并且进入到容器内部)
-d(后台运行,不占用命令行窗口)
--network network的Name(指定network,默认是添加在bridge中的)
--name mytomcat:指定容器的名字为mytomat
-p 8080:8080(主机和docker之间进行映射,用于从宿主机访问docker;宿主机端口:docker中的端口)
tomcat:1.0 (镜像名字:镜像的版本号)
命令:
docker network list : 查看network列表

docker network inspect network的Name: 查看network的信息,container中包含的服务是可以互相通信的,ping ip地址是可以ping通的,但是ping容器的名字是不能通的。

docker exec test1 ping ip地址:在test1中执行命令:ping ip地址。

docker container inspect 容器id: 查看容器的详细信息。

多宿主机,docker的通信


- 使用的是etcd用来通过主机间的设置
- 设置一个network,是overlay类型的, 这样能通过这个network实现通信
docker compose的使用
通过配置docker-compose.yml文件,整理应用中需要哪些服务,约定服务之间的通信方式。
可能用到的命令:
如果需要自己build镜像,需要先执行:docker-compose build
启动应用: docker-compose up
scale的使用
scale可以创建多个容器,docker-compose scale 容器名称=需要创建的个数
docker-compose scale web=5: 创建了5个名称是web的服务。