use*_*806 2 virtualization networking bridge docker
我正在尝试使用Docker容器技术.
我需要一个特定的理由将两个veth容器接口连接在一起而不使用桥接器,Docker默认创建一个桥接器,所以我不想使用它.
我很困惑,想知道这样做是否正确.任何人都可以提供建议并指出一些链接或方法?我会很感激.
非常感谢.
+--------------+??????????+--------------+
|??????????????|??????????|??????????????|
|?Container?X??|??????????|?Container?Y??|
|??????????????|??????????|???????????? ?|
+--------------+??????????+--------------+
????????????^?veth???????????^?veth???????
????????????|????????????????|????????????
????????????+----------------+????????????
Run Code Online (Sandbox Code Playgroud)
当然,这是可能的,虽然你无法让Docker自动为你做这件事.首先创建没有网络的两个容器:
# docker run --net=none --name container_x ...
# docker run --net=none --name container_y ...
Run Code Online (Sandbox Code Playgroud)
现在创建一veth对:
# ip link add c_x_eth0 type veth peer name c_y_eth0
Run Code Online (Sandbox Code Playgroud)
将对的每一侧分配veth给一个容器.您需要知道容器的PID才能执行此操作,例如:
docker inspect --format '{{.State.Pid}}' container_x
Run Code Online (Sandbox Code Playgroud)
我假设你已经把它放在一个名为的shell脚本中docker-pid.在第一个veth链接上设置名称空间:
# ip link set netns $(docker-pid container_x) dev c_x_eth0
Run Code Online (Sandbox Code Playgroud)
在第二个:
# ip link set netns $(docker-pid container_y) dev c_y_eth0
Run Code Online (Sandbox Code Playgroud)
现在,您需要在每个容器内配置链接.如果您还没有启动容器--privileged,则需要使用nsenter以下方法执行此操作:
# nsenter -t $(docker-pid container_x) -n ip link set c_x_eth0 up
# nsenter -t $(docker-pid container_y) -n ip link set c_y_eth0 up
Run Code Online (Sandbox Code Playgroud)
然后为它们分配ip地址:
# nsenter -t $(docker-pid container_x) -n ip addr add 10.10.10.1/24 dev c_x_eth0
# nsenter -t $(docker-pid container_y) -n ip addr add 10.10.10.2/24 dev c_y_eth0
Run Code Online (Sandbox Code Playgroud)
你应该全力以赴.
更新
如果nsenter不可用......
最简单的解决方案就是nsenter在您的系统上安装; 如果您能够创建新veth接口并启动Docker容器,您应该拥有所需的所有权限.
nsenter如果以特权模式(docker run --privileged...)运行容器,则无需完成上述操作.这将允许您的容器执行通常禁止的操作 - 例如运行网络配置命令.在这种情况下,您只需在容器中运行ip link和ip addr命令,可以是从您开始使用的shell docker run或使用类似的东西docker exec.您应该知道,以特权模式运行容器会删除通常放在容器上的许多限制,因此如果其他人有权访问这些容器,则不会执行此操作.
| 归档时间: |
|
| 查看次数: |
1481 次 |
| 最近记录: |