-
查看物理机上的网卡名称:
使用sh命令:ip addr
查看本地网络接口名称,找到物理网卡名称,如下图:

-
使用macvlan模式创建一个容器网络模式:
- 创建ipv4网络命令:
sudo docker network create -d macvlan \
--subnet=192.168.10.0/24 \ # 物理机所在局域网网段,就是容器所在的物理机上的IP地址所属的网段
--gateway=192.168.10.1 \ # 局域网网段网关
--ip-range=192.168.10.160/29 \ #允许这个新创建的名字为pyslocal的网络分配的局域网ip地址范围,“/29”掩码表示这个pyslocal 网络具有局域网的8个ip地址的分配权,从160到167,实际能分配6个,也就是161到166.
-o parent=enp2s0 pyslocal # enp2s0 就是容器所在物理机物理网卡的名称,pyslocal 就是创建的容器网络的名称
2. 创建开启ipv6网络的命令:
sudo docker network create -d macvlan \
--subnet=192.168.10.0/24 \
--gateway=192.168.10.1 \
--ip-range=192.168.10.160/29 \
--ipv6 \
--subnet=abcd:efgh:hijk:lmno::/64 \ # 这个地址要从你的局域网路由器上找了,我这里随便诌了个地址
--ip-range=abcd:efgh:hijk:lmno:1234:5678:9123:4569/125 \ # 这个根据subnet的值,自己设置一个把,我这里随便诌了个地址。不知道怎么算可以问问豆包,“/125”这个掩码也是用来规定新创建的网络pyslocalv6预先支配的ip地址范围。这里的例子是从4569地址开始。
-o parent=enp2s0 pyslocalv6
注意:如果上面的两端创建网络的命令运行时出现错误,也可能时命令的文本格式不对,ssh执行时有点严格。
容器网络创建完毕之后,使用该网络的容器都会获得一个和物理机同网段的ip地址。
另外,如果你想多个容器公用一个局域网ip地址的话,可以使用容器附加网络,就是使用另一个容器的网络作为本容器的网络,具体例子(dlts-net和dlts-tr两个服务都是使用161这个局域网ip地址):
services:
dlts-net: # 这个容器就是用来被其他容器共享网络的,当然你也可以用一个有实用意义的容器
image: library/alpine:latest
container_name: DLTS-NET
command: tail -f /dev/null
networks:
pyslocalv6: # 引用外部创建的网络
ipv4_address: 192.168.10.161 # 确保在pyslocalv6的IPv4运行的范围内,且要根据自己的局域网网段设置
ipv6_address: abcd:efgh:hijk:lmno:1234:5678:9123:4570 # 确保在IPv6的/125范围内,诌的值,不可直接用
ports:
- "9091:9091"
restart: always
sysctls:
- net.ipv6.conf.all.disable_ipv6=0 # 启用IPv6
# Transmission容器 (4.0.5版本)
dlts-tr:
image: linuxserver/transmission:4.0.5
container_name: DLTS-TR
network_mode: "service:dlts-net" # 共享dlts网络
environment:
- PUID=0 # 替换为你的用户ID
- PGID=0 # 替换为你的组ID
- TZ=Asia/Shanghai
- TRANSMISSION_DOWNLOAD_DIR=/downloads/transmission
- TRANSMISSION_INCOMPLETE_DIR=/incomplete/transmission
- TRANSMISSION_WATCH_DIR=/watch/transmission
- TRANSMISSION_WEB_HOME=/trguing-web-v1.3.0-zh-240607a
volumes:
- ./Tr-Seed/config:/config
- ./Tr-Seed/trguing-web-v1.3.0-zh-240607a:/trguing-web-v1.3.0-zh-240607a
# 文件目录 在下载器中具体配置下载文件夹
- /vol2/1000/Media:/Media
restart: always
depends_on:
- dlts-net
networks:
pyslocalv6: # 声明使用外部已创建的网络
external: true # 关键:表示该网络由外部手动创建,Compose不管理其生命周期