你好,我是docker network的新手。基本上,我想启动一个码头容器,应该与现有主机操作系统网络接口映射。
例如,主机OS网络接口列表
$>>ip a
1. ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
4. ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000现在,我想创建一个Docker网络桥(用ens192/ens224映射)
$ docker网络创建-d桥-桥-网络
然后使用docker network运行容器。
$ docker run -itd
但是,通过上述步骤,我无法将network interfaces映射到docker networks。
发布于 2021-02-23 18:22:18
目标
假设您希望您的Docker容器以普通设备的形式显示到网络上,您可以使用macvlan桥“映射”主机接口。你会得到什么:
访问与主机相同的主机。
如果这不是你的意思,请留下评论,并进一步解释你的情况。
它是怎么做的
检查是否安装了天气macvlan模块
lsmod | grep macvlan如果未列出,则通过发出
modprobe macvlan使用Docker CLI
创建一个具有您希望共享的接口的网络,并指定子网和网关(如果要通过该网络使用internet,则可以选择网关):
docker network create -d macvlan --subnet=1.2.3.4/24 --gateway=1.2.3.1 -o parent=eth0 nice_name(父级必须从eth0更改为您的接口)
使用码头组合
您还可以根据需要创建这些网络,并将它们包括在您的docker-compose.yml文件中,如下面的示例所示:
version: '3.3'
services:
nginx1:
restart: unless-stopped
image: nginx:latest
networks:
- nice_name
networks:
private:
nice_name:
driver: macvlan
driver_opts:
parent: eth0 # change this
ipam:
config:
- subnet: "1.2.3.0/24" # change this
gateway: "1.2.3.1" # change this (optional)
# Be aware that there is no "-" before "gateway" as it belongs to the subnet!如果您已经在Docker之外创建了网络,则仍然可以通过使用external参数将客户端连接到使用Docker的网络:
version: '3.3'
services:
nginx1:
restart: unless-stopped
image: nginx:latest
networks:
- nice_name
networks:
nice_name:
external: truehttps://stackoverflow.com/questions/66046596
复制相似问题