Docker网络
Docker网络
Docker内共有四种网络类型bridge | host | portMap | None
bridge(默认网络)
创建两个容器
docker container run -d --rm --name box1 busybox /bin/sh -c "while true; do sleep 3600; done"
docker container run -d --rm --name box2 busybox /bin/sh -c "while true; do sleep 3600; done"
查看容器状态信息
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58af8fedc744 busybox "/bin/sh -c 'while t…" 49 seconds ago Up 49 seconds box2
a81ec5e91c6d busybox "/bin/sh -c 'while t…" About a minute ago Up About a minute box1
查看两个容器间的通信情况
docker network ls
检查两个容器间的网络通信
# 默认bridge网络
docker network inspect bridge
docker container inspect --format '{{.NetworkSettings.IPAddress}}' box1
172.17.0.2
docker container inspect --format '{{.NetworkSettings.IPAddress}}' box2
172.17.0.3
- 创建brige网络
# 创建
docker network create -d bridge mybridge
56e23b2a9d33b9956b0045b6a392c8e42943ffadbf8329d8695b9c0638dd36f0
# 查看网络
docker network ls
NETWORK ID NAME DRIVER SCOPE
d19a6486b6af bridge bridge local
7fe99f54dac4 host host local
56e23b2a9d33 mybridge bridge local
64652d45f969 none null local
23756c9e36ca o2o-network bridge local
- 查看mybridge子网信息
docker network inspect mybridge
- 连接上创建的bridge
# 创建命令上加 --network {brigeName}
docker container run -d --rm --name box3 --network mybridge busybox /bin/sh -c "while true; do sleep 3600; done"
#查看mybridge连接状态
docker network inspect mybridge
当前box3连接了mybridge,也可以继续连接bridge网络
# 连接bridge
docker network connect bridge box3
# 查看box3网络信息
docker container inspect box3
- 移除bridge
docker network disconnect bridge box3
使用自定义bridge,可以使用ip地址。也可以使用container_name
# 创建box4连接到mybridge
docker container run -d --rm --name box4 --network mybridge busybox /bin/sh -c "while true; do sleep 3600; done"
# 进入box4后尝试ping box3
docker exec -it box4 ping box3
发现网络是通的,也可以使用 ip地址
docker exec -it box4 ping 172.18.0.2
- 指定gateway和subnet
docker network create -d bridge --gateway 172.200.0.1 --subnet 172.200.0.0/16 demo
更多的参数,可以使用 docker network create --help
host
host模式就类似于直接在宿主机上开启了一个服务,使用宿主机的网络。
# --network中指定 host
docker container run -d --rm --name box2 --network host busybox /bin/sh -c "while true; do sleep 3600; done"
查看box2的网络,会发现与宿主机的网络一模一样。
docker exec -it box2 sh
portMapping
端口映射的方式,类似于端口转发的方式
# 将宿主机8080端口与容器的80端口映射
docker run -d -p 8080:80 --name nginx_1.19 nginx:1.19
None
docker run -d --network none --name web3 nginx:1.19
不常用,不具备任何网络属性,希望docker创建无网络环境。可使用一些job类型的任务。
可以使用 --net 简写代替 --network
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律