Py学习  »  docker

Docker网络

dotNET跨平台 • 2 年前 • 446 次点击  

本文分成两个部分,第一个部分是一个关于docker网络的相关知识和命令, 第二部分是踩的一些坑

docker网络

docekr0

docker0是Docker中的默认网络接口。当启动Docker时,它会在主机上创建一个名为docker0的虚拟网络接口。docker0主要用于容器和宿主机之间的通信以及容器与外部网络的连接。

docker0是一个桥接网络接口,它在Docker安装和启动时自动生成。

容器互联 --link (了解)

我们通过容器的名字是无法ping通的,例如【docker exec -it tomcat02 ping tomcat01】是没有办法ping通的,

当然我们可以使用--link可以解决网络连通问题 使用docker run -d -P --name tomcat03 --link tomcat02 tomcat运行tomcat03并且连通tomcat02是可以的,并且通过docker exec -it tomcat03 ping tomcat02可以ping通。

但是反向就不能ping通了【docker exec -it tomcat02 ping tomcat03】就会ping失败。

网络模式

  • • bridge:桥接docker(默认,自己创建也使用bridge模式);

  • • none:不配置网络;

  • • host:和宿主机共享网络;

  • • container:容器网络连通!(用的少,局限很大);

命令

  • • 创建一个虚拟的网络

--driver bridge  # 桥接模式
--subnet 192.168.0.0/16  # 配制一个子网,65535个字段  192.168.0.2——192.168.255.255
--gateway 192.168.0.1   # 配制默认的路由网关
mynet #表示自定义的网络名
  • • 查看docker network ls

  • • 查看详情 docker network inspect mynet

  • • 将容器加入网络 docker network connect mynet rongqiid

更多docker推荐这一片详细的文章【真的是一片文章就学的清清楚楚的】,不是笔者写的,里面包含部署Redis集群(可以尝试下)。

https://blog.csdn.net/weixin_43246215/article/details/108934216

踩的一部分坑

docker连接mysql SQLSTATE[HY000] [2002] Connection refused, No route to host怎么办

使用docker生成mysql容器,

在连接时,

如果你把host写成 localhost $host='localhost';

会报错:SQLSTATE[HY000] [2002] No such file or directory

如果把 host 写成 IP 地址,

$host='127.0.0.1';

会报错 SQLSTATE[HY000] [2002] Connection refused

解决:

应该写成mysql容器的名称,

例如 $host='lnmp_mysql';

这里有个前提, 需要你的mysql容器和php容器在同一个docker网络,

或者使用 --link lnmp_mysql指定。

感谢前辈们提供的解决办法

原文:https://www.cnblogs.com/maowenqiang/p/16010447.html

推荐阅读

欢迎关注我的公众号“Net分享”,技术文章第一时间推送,随缘更新 , 分享一些你可能注意不到的细节。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/160452