容器网络
Docker 网络让容器能够相互通信,并与外部世界连接。
网络类型
Docker 提供了多种网络驱动:
bridge(桥接网络)
默认网络类型,用于同一主机上的容器通信。
# 创建自定义桥接网络docker network create my-network
# 运行容器并连接到网络docker run -d --name web --network my-network nginxhost(主机网络)
容器直接使用主机网络栈。
docker run -d --network host nginxnone(无网络)
容器没有网络连接。
docker run -d --network none nginx容器间通信
使用容器名称
# 创建网络docker network create app-network
# 运行数据库docker run -d --name db --network app-network postgres
# 运行应用(可以通过 'db' 访问数据库)docker run -d --name web --network app-network \ -e DATABASE_HOST=db myapp端口映射
# 映射到主机端口docker run -d -p 8080:80 nginx
# 映射到本地回环地址docker run -d -p 127.0.0.1:8080:80 nginx
# 映射所有端口docker run -d -P nginx网络管理
# 列出网络docker network ls
# 查看网络详情docker network inspect my-network
# 连接容器到网络docker network connect my-network container_name
# 断开连接docker network disconnect my-network container_name
# 删除网络docker network rm my-network实战示例
多容器应用网络
# 创建网络docker network create web-app
# 启动数据库docker run -d \ --name db \ --network web-app \ -e POSTGRES_PASSWORD=secret \ postgres
# 启动 Redisdocker run -d \ --name redis \ --network web-app \ redis
# 启动应用docker run -d \ --name api \ --network web-app \ -e DB_HOST=db \ -e REDIS_HOST=redis \ myapp
# 启动 Nginxdocker run -d \ --name nginx \ --network web-app \ -p 80:80 \ nginx现在所有容器都可以通过名称相互访问!
下一步
- Docker Compose - 更方便的多容器管理
- 数据卷管理 - 持久化数据