Fork me on Gitee

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

image-20250110102737608

检查两个容器间的网络通信

# 默认bridge网络
docker network inspect bridge

image-20250110112050763

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

image-20250110113945594

  • 连接上创建的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

image-20250110114836297

  • 移除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

posted @   shine-rainbow  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示