docker学习整理五 容器间通信
Posted 不要做程序员的小松鼠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker学习整理五 容器间通信相关的知识,希望对你有一定的参考价值。
docker学习整理五 容器间通信
通过之前的几篇,我们已经可以拉起来一个mysql容器和一个centos容器,那么他们之间怎么通信呢?
容器间连接
- 拉起两个容器,mysql,centos,为了便于区分分别命名与镜像一致。
- 查看mysql的ip
docker inspect mysql
可以看到IPAddress项,这就是这个容器的ip地址。 - 进入centos容器,安装mysql客户端```yum install mysql``
- 尝试在centos中连接mysql
mysql -h这是刚才查的ip地址 -uroot -p这是密码
- 此时可能会报2059错误,若成功请忽略。错误说明客户端不支持新的加密方式,通过以下方式处理:
- 从宿主进入mysql
docker exec -it mysql mysql -uroot -p密码
use mysql;
alter user 'root'@'%' identified with mysql_native_password by '数据库密码';
flush privileges;
- 从宿主进入mysql
- 重新登陆成功。
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学习整理五 容器间通信的主要内容,如果未能解决你的问题,请参考以下文章