docker容器间通讯

场景案例

需要通过容器部署一个wordpress应用,wordpress容器依赖mysql容器,二者要相互通信

一、--link方式

1. 创建mysql5.7容器

docker run -d --name=db1 -e MYSQL_DATABASE=wordpress -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
  • 设置mysql的root密码为123456
  • 同时创建好名为wordpress的数据库

2. 创建wordpress容器,并关联mysql容器

docker run --name wp1 --link db1:mysql -d -p 9011:80 wordpress
  • --link db1:mysql 表示该容器要与db1容器通信,:mysql表示db1容器的别名
  • 然后就可以在wp1容器里使用db1或者mysql作为hostname访问db1容器了,wp1容器中会dns自动解析db1或者mysql

这里有篇文章写的比较全面

二、network方式

1. 创建网络

docker network create wpnet

2. 创建mysql5.7容器,并加入到wpnet网络里

docker run -d --name=db2 -e MYSQL_DATABASE=wordpress -e MYSQL_ROOT_PASSWORD=123456 --network wpnet --network-alias mysql -d mysql:5.7
  • --network wpnet:将容器加入到wpnet网络中(如果不指定默认是bridge网络)
  • --network-alias mysql:指定容器在wpnet网络中的别名是mysql

3. 创建wordpress容器,并加入到wpnet网络里

docker run --name wp2 --network wpnet --network-alias wordpress -d -p 9012:80 wordpress
  • --network wpnet:将容器加入到wpnet网络中,与mysql数据库在同个网络中
  • --network-alias wordpress:指定容器在网络中的别名是wordpress,这个可以不要,因为在其他容器中基本不访问这个容器
  • 在wp2中要访问db2容器,则可以通过网络别名mysql作为hostname访问,同理--link容器内会自动dns解析

可以通过docker network inspect wpnet查看那些容器在wpnet网络里

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注