网站建设 淘宝详情,南昌网站建设服务,电子工程师社区,广告效果图用什么软件做文章目录 1. Docker容器之间通信的主要方式1.1 通过容器ip访问1.2. 通过宿主机的ip:port访问1.3. 通过link建立连接#xff08;官方不推荐使用#xff09;1.4. 通过 User-defined networks#xff08;推荐#xff09; 2. 参考资料 1. Docker容器之间通信的主要方式
1.1 通… 文章目录 1. Docker容器之间通信的主要方式1.1 通过容器ip访问1.2. 通过宿主机的ip:port访问1.3. 通过link建立连接官方不推荐使用1.4. 通过 User-defined networks推荐 2. 参考资料 1. Docker容器之间通信的主要方式
1.1 通过容器ip访问
容器重启后ip会发生变化。通过容器ip访问不是一个好的方案。
1.2. 通过宿主机的ip:port访问
通过宿主机的ip:port访问只能依靠监听在暴露出的端口的进程来进行有限的通信。
容器之间通信不能用 localhost、127.0.0.1只能用宿主机的 ip:port 通信但是主机的ip地址会随着宿主机的重启而变化
以 MySQL 容器为例如下 创建容器 docker run -it -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORDroot mysql:5.7主机直接访问暴露的端口 如下图暴露端口的方式很方便主机与容器之间的通信跟连接主机本地一样
1.3. 通过link建立连接官方不推荐使用
运行容器时指定参数link使得源容器与被链接的容器可以进行相互通信并且接受的容器可以获得源容器的一些数据比如环境变量。
# 源容器mysql
docker run -itd --name mysql_test -e MYSQL_ROOT_PASSWORDroot mysql:5.7
#被链接容器 centos
docker run -itd --name centos_test --link test-mysql:mysql centos /bin/bash
#进入test-centos
docker exec -it centos_test /bin/bash1.4. 通过 User-defined networks推荐
先给出结论 配置 -p 选项让宿主机和容器之间通过 暴露端口 来通信 配置 --network 选项让容器加入同一个网络也配置 --network-alias 选项让容器间相互连接
以centos和mysql容器之间通信为例使用方法步骤如下 创建网络 docker network来创建一个桥接网络在docker run的时候将容器指定到新创建的桥接网络中这样同一桥接网络中的容器就可以通过互相访问。 docker network create dockerbetweennetwork启动mysql容器时加入创建的网络 创建mysql容器加入到dockerbetweennetwork网络也暴露了3306端口给主机使用 # 创建mysql容器
docker run -it -p 3306:3306 --name mysql_test \
--network dockerbetweennetwork --network-alias mysql_network \
-e MYSQL_ROOT_PASSWORDroot \
-d mysql:5.7启动centos容器时加入创建的网络 # 创建centos容器
docker run -it --name centos_test \--network dockerbetweennetwork --network-alias centos_network \
-d centos验证结果 查看mysql容器的ip地址 # 查看mysql容器ip地址
docker inspect mysql_test我的mysql_test的ip地址是 172.21.0.2(mysql) 进入centos容器中查看是否跟mysql容器在同一个网络 # 进入centos容器中
docker exec -it centos_test /bin/bash
# ping 上面得到的mysql容器的地址
ping mysql_test2. 参考资料
我的文章《如何查看一个Docker镜像有哪些版本.md》
我的文章《Docker设置国内镜像源.md》
我的文章《Docker快速入门实用教程.md》
我的文章《Docker安装MySQL、Redis、RabbitMQ、Elasticsearch、Nacos等常见服务.md》
我的文章《Docker安装Nacos服务.md》
我的文章《如何修改Docker中的文件.md》
我的文章《Docker容器间的连接或通信方式.md》
我的文章《Docker安装的MySQL如何持久化数据库数据.md》
我的文章《制作Docker私有仓库.md》
我的文章《使用docker-maven-plugin插件构建发布推镜像到私有仓库.md》
我的文章《解决Docker安装Elasticsearch后访问9200端口失败.md》 传送门保姆式Spring5源码解析
欢迎与作者一起交流技术和工作生活
联系作者