嗨,我是 docker network
的新人。基本上我想启动一个应该与现有 HOST OS 网络接口映射的 docker 容器。
例如HOST 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 network create -d bridge my-bridge-network
然后使用 docker network
$ docker run -itd --network=my-bridge-network mydocker
但通过上述步骤,我无法将 network interfaces
与 docker networks
映射。
答案 0 :(得分:1)
假设您希望 Docker 容器作为普通设备显示在网络上,您可以使用 macvlan
网桥“映射”主机接口。你会得到什么:
如果这不是您的意思,请发表评论并进一步解释您的情况。
检查天气 macvlan
模块是否安装使用
lsmod | grep macvlan
如果未列出,请通过发出安装
modprobe macvlan
使用您要共享的接口创建网络并指定子网和网关(如果您想通过此网络使用互联网,网关是可选的):
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-Compose 之外创建了网络,您仍然可以使用 external
参数将使用 Docker-Compose 的客户端连接到它:
version: '3.3'
services:
nginx1:
restart: unless-stopped
image: nginx:latest
networks:
- nice_name
networks:
nice_name:
external: true