docker 多容器连接
docker 多容器访问
使用场景
比如MySQL是使用docker运行的,另一个docker容器需要访问,这就需要一个容器访问另一个容器
容器链接 --link
# --link 依赖的容器名:别名
docker run -itd --name containeraName --link mysql:mysqlAlias -p 7000:7000 containeraName:latest
查看hosts文件
$ cat /etc/hosts
# /etc/hosts
#
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
172.17.0.5 mysqlAlias mysql mysql
172.17.0.14 63fd381e0ef2
注意以下几点:
- 使用link选项建立的容器运行时需要所链接的容器也必须是运行状态。没运行会有提示的。
- 使用link选项链接的主机ip不需要固定,因为每次新建容器都会检查所链接容器的ip,在/etc/hosts里生成新的alias 名称对应的ip
容器网络
1.创建网络
docker network create test-network
2.启动MySQL容器
# --network 加入的网络名称
# --network-alias 当前容器的别名,其它容器访问该容器使用。
docker run -d `
--network test-network --network-alias mysql `
-e MYSQL_ROOT_PASSWORD=123456 `
-p 3306:3306 `
mysql
3.启动应用容器
应用容器就可以访问mysql
docker run -itd --network test-network --name containeraName -p 7001:7001 containeraName:latest
注意: 上述两种方案不能同时使用
说明
上述两种方式都可以使用各种别名(alias)的原因在于:Docker 能够将其解析为具有该网络别名的容器的 IP 地址
