【Docker 容器互联和桥接网络】笔记📒

2025-10-24 10:11:48

需求:创建数据库容器 db 和 ubuntu 容器,希望在 ubuntu 容器内能访问 db 容器内的 Mysql 数据库。

目录:

容器互联

创建一个数据库容器 db,不需要对外暴漏端口。

$ docker run -it -d -e MYSQL_ROOT_PASSWORD=123 --name db mysql:8.0

创建一个 ubuntu 容器,使用 --link 关联 db 容器。

格式:--link 容器名:别名

$ docker run -it -d --link db:mysql --name ubuntu ubuntu:latest

进入 ubuntu 容器内部,安装 MySQL 客户端,然后使用 MySQL 客户端连接 db 容器内的 Mysql 数据库。

$ docker exec -it ubuntu /bin/bash
# apt update
# apt install -y mysql-client 
# mysql -h db -u root -p123
# 或者使用别名连接也是可以的
# mysql -h mysql -u root -p123
>

网络桥接

创建一个名为 my-network 的桥接网络。

$ docker network create my-network

创建一个数据库容器 db,使用 --network 绑定到 my-network 网络,不需要对外暴漏端口。

$ docker run -it -d -e MYSQL_ROOT_PASSWORD=123 --network my-network --name db mysql:8.0

创建一个 ubuntu 容器,使用 --network 绑定到 my-network 网络。

$ docker run -it -d --network my-network --name ubuntu ubuntu:latest

进入 ubuntu 容器内部,安装 MySQL 客户端,然后使用 MySQL 客户端连接 db 容器内的 Mysql 数据库。

$ docker exec -it ubuntu /bin/bash
# apt update
# apt install -y mysql-client 
# mysql -h db -u root -p123
>

端口映射

上面介绍的容器互联和桥接网络主要是处理容器与容器之间的通信,如果是本机想要访问容器内的服务,需要端口映射来实现。

创建数据库容器 db,使用 -p 参数将容器内 3306 端口映射到本地的 13306 端口。

$ docker run -it -d -p 13306:3306 -e MYSQL_ROOT_PASSWORD=123 --name db mysql:8.0

本机需要提前安装好 MySQL 客户端,使用 mysql 命令进行连接。

$ mysql -h 127.0.0.1 -P 13306 -u root -p123

-h 127.0.0.1 一定要加上,不然会报 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' 错误。

返回首页

本文总阅读量  次
皖ICP备17026209号-3
总访问量: 
总访客量: