docker学习整理五 容器间通信

Posted 不要做程序员的小松鼠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker学习整理五 容器间通信相关的知识,希望对你有一定的参考价值。

docker学习整理五 容器间通信

通过之前的几篇,我们已经可以拉起来一个mysql容器和一个centos容器,那么他们之间怎么通信呢?

容器间连接

  • 拉起两个容器,mysql,centos,为了便于区分分别命名与镜像一致。
  • 查看mysql的ipdocker inspect mysql可以看到IPAddress项,这就是这个容器的ip地址。
  • 进入centos容器,安装mysql客户端```yum install mysql``
  • 尝试在centos中连接mysqlmysql -h这是刚才查的ip地址 -uroot -p这是密码
  • 此时可能会报2059错误,若成功请忽略。错误说明客户端不支持新的加密方式,通过以下方式处理:
    • 从宿主进入mysqldocker exec -it mysql mysql -uroot -p密码
    • use mysql;
    • alter user 'root'@'%' identified with mysql_native_password by '数据库密码';
    • flush privileges;
  • 重新登陆成功。

docker的通信方式

桥接模式bridge

  • 这是docker的默认通信方式
  • 启docker时,宿主会创建docker0网桥,可以理解为一个交换机。
  • 之后每次拉起一个容器,无特殊说明,均连接到此交换机上。
  • 启动一个容器,会在宿主创建虚拟网卡veth,而在容器中同时生成对应的eth0
  • 网关就是docker0的地址。

自定义网络

  • docker network create 网络名
  • docker network ls可以看到你自己新建的网络
  • 当拉起容器时候,通过--network=网络名就可以把容器连接到这个网络,多个连接到这个网络的容器之间就可以进行通信。

link方式

  • docker run -it --link 已存在容器名:起个别名 --name centos2 centos bash
  • 这样,在centos2中就可以通过ping容器名测试是否能够访问:ping 起的别名
  • 这是旧版本常用的连接方式,如docker compose等都是使用该方式,docker会逐渐淘汰该方式。

host

none

overlay

(待续)

以上是关于docker学习整理五 容器间通信的主要内容,如果未能解决你的问题,请参考以下文章

docker 容器与其宿主机之间的进程间通信

docker网络-2

docker宿主机两台容器间无法通信问题

docker与宿主通信突然断了

Docker Nework

Docker Nework