创建和管理 shared_db 网络
创建和管理 shared_db 网络
shared_db 是一个 Docker 自定义网络,用于让多个容器在同一个内部网络中通信。
例如,MySQL、WordPress、phpMyAdmin 加入同一个网络后,可以通过容器名或 Compose 服务名互相访问。
1. 创建 shared_db
docker network create shared_db这个命令只需要执行一次。
2. 查看网络是否创建成功
docker network ls如果列表中出现:
shared_db说明网络已经创建成功。
查看详细信息:
docker network inspect shared_db3. 让已经运行的容器加入 shared_db
命令格式:
docker network connect shared_db 容器名例如:
docker network connect shared_db mysqldocker network connect shared_db phpmyadmindocker network connect shared_db wordpress加入完成后,可以执行:
docker network inspect shared_db检查这些容器是否已经出现在 Containers 中。
4. 容器之间如何互相调用
只要容器加入同一个自定义网络,就可以使用下面的格式互相访问:
容器名或服务名:容器内部端口例如,其他容器访问 MySQL:
mysql:3306其中:
mysql是 MySQL 的容器名或 Compose 服务名;3306是 MySQL 的容器内部端口。
WordPress 连接 MySQL 时,可以填写:
mysql:3306phpMyAdmin 连接 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 项目只负责使用它。
修改完成后执行:
docker compose up -d6. 检查哪些容器加入了 shared_db
docker network inspect shared_db重点查看输出中的:
Containers这里会显示已经加入该网络的容器。
也可以只查看容器名称:
docker network inspect shared_db --format '{{range .Containers}}{{println .Name}}{{end}}'7. 测试容器之间是否能互相访问
进入某个容器:
docker exec -it 容器名 sh测试 MySQL 名称解析:
getent hosts mysql测试 MySQL 端口:
nc -zv mysql 3306测试 HTTP 容器:
curl http://wordpress:80如果容器中没有 curl、nc 或 getent,需要根据镜像安装对应工具,或者临时使用测试容器。
例如:
docker run --rm -it --network shared_db alpine sh进入后安装测试工具:
apk add --no-cache curl busybox-extras然后测试:
nc -zv mysql 3306curl http://wordpress:808. 让容器退出 shared_db
命令格式:
docker network disconnect shared_db 容器名例如:
docker network disconnect shared_db wordpress强制断开:
docker network disconnect -f shared_db wordpress9. 删除 shared_db
删除前,应先确保没有容器正在使用该网络。
先检查:
docker network inspect shared_db逐个断开容器:
docker network disconnect shared_db 容器名然后删除:
docker network rm shared_db如果仍有容器连接,Docker 会拒绝删除。
10. 常用命令
# 创建网络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文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!