docker通信及路径映射
docker通信
- docker相关基础命令
# 开启docker,需要cd到docker_app的目录 docker compose up -d # 关闭docker,同上 docker compose down # 显示正在运行的docker docker ps
- docker的通信原理
模式 | 特点 | 适用场景 |
---|---|---|
Bridge | 每个容器分配独立 IP,通过 docker0 虚拟网桥与宿主机通信。容器间可通过 IP 或容器名(需在同一自定义网络)通信。 | 多容器隔离环境(如开发、测试) |
Host | 容器直接使用宿主机的网络栈,无独立 IP。性能高,但端口冲突风险大。 | 高性能需求(如负载均衡器) |
None | 完全禁用网络 | 仅用于特殊场景(如离线数据处理) |
Overlay | 用于跨主机的容器通信 | Swarm 集群 |
- 查看docker_app网络模式
# 查询当前Docker网络和容器 docker network ls
- 查看docker_app的ip
# 查看docker_app的容器子网和网关,docker_app_network用上面的docker network ls看 docker network inspect [docker_app_network] | grep -E "Subnet|Gateway"
- 固定docker的容器ip
直接修改docker_app所在文件夹下docker-compose.yml
文件,在文末加上ip配置即可。networks: app_network: driver: bridge ipam: config: - subnet: 172.28.0.0/16 gateway: 172.28.0.1
- 实操案例
- llonebot与nonebot反向ws通信
- llonebot使用docker版安装、启动
- docker-compose.yml文件固定ip
- llonebot开启反向ws
- 反向ws地址填写:
ws://172.28.0.1:3004/onebot/v11/ws
- nonebot监听端口:
0.0.0.0:3004
(端口相同,必须0.0.0.0)
docker路径映射
- Docker 无法直接访问宿主机文件系统,需要像挂载U盘一样,通过
volume
挂载将宿主机目录绑定到容器内的指定路径。例如,使用-v
参数将主机上的~/host_folder
映射到容器内的/app/data
。