管理主页分类

拖动分类调整顺序,并选择是否在主页显示。设置仅保存在当前浏览器。

  • 微服务课件 31
  • Java 基础 28
  • Java Web 开发 25
  • 多来买 18
  • LeetCode 题解 8
  • 开发工具 8
  • 网络工具 2
  • 黑马头条 2
  • Java 记忆恢复 1

创建和管理 shared_db 网络

890 字
4 分钟
创建和管理 shared_db 网络

创建和管理 shared_db 网络#

shared_db 是一个 Docker 自定义网络,用于让多个容器在同一个内部网络中通信。

例如,MySQL、WordPress、phpMyAdmin 加入同一个网络后,可以通过容器名或 Compose 服务名互相访问。


1. 创建 shared_db#

Terminal window
docker network create shared_db

这个命令只需要执行一次。


2. 查看网络是否创建成功#

Terminal window
docker network ls

如果列表中出现:

shared_db

说明网络已经创建成功。

查看详细信息:

Terminal window
docker network inspect shared_db

3. 让已经运行的容器加入 shared_db#

命令格式:

Terminal window
docker network connect shared_db 容器名

例如:

Terminal window
docker network connect shared_db mysql
docker network connect shared_db phpmyadmin
docker network connect shared_db wordpress

加入完成后,可以执行:

Terminal window
docker network inspect shared_db

检查这些容器是否已经出现在 Containers 中。


4. 容器之间如何互相调用#

只要容器加入同一个自定义网络,就可以使用下面的格式互相访问:

容器名或服务名:容器内部端口

例如,其他容器访问 MySQL:

mysql:3306

其中:

  • mysql 是 MySQL 的容器名或 Compose 服务名;
  • 3306 是 MySQL 的容器内部端口。

WordPress 连接 MySQL 时,可以填写:

mysql:3306

phpMyAdmin 连接 MySQL 时,可以配置:

environment:
PMA_HOST: mysql
PMA_PORT: 3306

如果 WordPress 的服务名是:

services:
wordpress:

同一网络中的其他容器访问 WordPress,可以使用:

wordpress:80

如果 phpMyAdmin 的服务名是:

services:
phpmyadmin:

同一网络中的其他容器访问 phpMyAdmin,可以使用:

phpmyadmin:80

需要注意:

mysql:3306

使用的是容器内部端口,不是宿主机映射端口。

例如:

ports:
- "8081:80"

表示:

  • 宿主机访问:服务器IP:8081
  • 同一 Docker 网络中的容器访问:容器名:80

容器之间不要使用:

localhost

因为容器中的 localhost 指向当前容器自身。


5. 在 Docker Compose 中加入 shared_db#

如果容器由 Docker Compose 管理,可以在 compose.yml 中添加:

services:
app:
networks:
- shared_db
networks:
shared_db:
external: true

例如 MySQL:

services:
mysql:
image: mysql:8.4
networks:
- shared_db
networks:
shared_db:
external: true

例如 WordPress:

services:
wordpress:
image: wordpress:latest
environment:
WORDPRESS_DB_HOST: mysql:3306
networks:
- shared_db
networks:
shared_db:
external: true

其中:

external: true

表示 shared_db 已经提前创建,当前 Compose 项目只负责使用它。

修改完成后执行:

Terminal window
docker compose up -d

6. 检查哪些容器加入了 shared_db#

Terminal window
docker network inspect shared_db

重点查看输出中的:

Containers

这里会显示已经加入该网络的容器。

也可以只查看容器名称:

Terminal window
docker network inspect shared_db --format '{{range .Containers}}{{println .Name}}{{end}}'

7. 测试容器之间是否能互相访问#

进入某个容器:

Terminal window
docker exec -it 容器名 sh

测试 MySQL 名称解析:

Terminal window
getent hosts mysql

测试 MySQL 端口:

Terminal window
nc -zv mysql 3306

测试 HTTP 容器:

Terminal window
curl http://wordpress:80

如果容器中没有 curlncgetent,需要根据镜像安装对应工具,或者临时使用测试容器。

例如:

Terminal window
docker run --rm -it --network shared_db alpine sh

进入后安装测试工具:

Terminal window
apk add --no-cache curl busybox-extras

然后测试:

Terminal window
nc -zv mysql 3306
curl http://wordpress:80

8. 让容器退出 shared_db#

命令格式:

Terminal window
docker network disconnect shared_db 容器名

例如:

Terminal window
docker network disconnect shared_db wordpress

强制断开:

Terminal window
docker network disconnect -f shared_db wordpress

9. 删除 shared_db#

删除前,应先确保没有容器正在使用该网络。

先检查:

Terminal window
docker network inspect shared_db

逐个断开容器:

Terminal window
docker network disconnect shared_db 容器名

然后删除:

Terminal window
docker network rm shared_db

如果仍有容器连接,Docker 会拒绝删除。


10. 常用命令#

Terminal window
# 创建网络
docker network create shared_db
# 查看所有网络
docker network ls
# 查看网络详细信息
docker network inspect shared_db
# 查看网络中的容器名称
docker network inspect shared_db --format '{{range .Containers}}{{println .Name}}{{end}}'
# 容器加入网络
docker network connect shared_db 容器名
# 容器退出网络
docker network disconnect shared_db 容器名
# 删除网络
docker network rm shared_db

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

创建和管理 shared_db 网络
https://firefly-mu-weld.vercel.app/posts/docker-shared-db-network/
作者
Daisy
发布于
2026-06-28
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Daisy
Hello, I'm Daisy.
公告
欢迎来到我的博客!这是一则示例公告。
分类
标签

文章目录