在容器化服务时会遇到调用物理机服务的问题。此篇会示范将Docker中运行ovs-vsctl命令调用物理机openvswitch的配置信息。
用此命令启动要使用ovs的容器
docker run -it -d \
--restart=always -u root \
-v /usr/bin/ovs-vsctl:/usr/bin/ovs-vsctl \
-v /var/run/openvswitch/db.sock:/var/run/openvswitch/db.sock \
-v /usr/sbin/ovs-vswitchd:/usr/sbin/ovs-vswitchd \
-v /lib/x86_64-linux-gnu/libssl.so.1.0.0:/lib/x86_64-linux-gnu/libssl.so.1.0.0 \
-v /lib/x86_64-linux-gnu/libcrypto.so.1.0.0:/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 <image>
-u root
使容器以root权限运行
-v /usr/bin/ovs-vsctl:/usr/bin/ovs-vsctl \
将宿主机的ovs-vsctl命令挂载,如有需要也可将ovs-ofctl,ovs-appctl等挂载进去
-v /var/run/openvswitch/db.sock:/var/run/openvswitch/db.sock \
-v /usr/sbin/ovs-vswitchd:/usr/sbin/ovs-vswitchd \
和ovs的守护进程及数据库通信
-v /lib/x86_64-linux-gnu/libssl.so.1.0.0:/lib/x86_64-linux-gnu/libssl.so.1.0.0 \
-v /lib/x86_64-linux-gnu/libcrypto.so.1.0.0:/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
挂载ovs相关的函数依赖库,此处为ubuntu下的目录。
演示
docker run -it -d \
--restart=always -u root \
-v /usr/bin/ovs-vsctl:/usr/bin/ovs-vsctl \
-v /var/run/openvswitch/db.sock:/var/run/openvswitch/db.sock \
-v /usr/sbin/ovs-vswitchd:/usr/sbin/ovs-vswitchd \
-v /lib/x86_64-linux-gnu/libssl.so.1.0.0:/lib/x86_64-linux-gnu/libssl.so.1.0.0 \
-v /lib/x86_64-linux-gnu/libcrypto.so.1.0.0:/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 --name=u2 ubuntu
docker exec -it u2 ovs-vsctl show
47068f42-68bb-473a-94a8-1ccccc3aed38
ovs_version: "2.5.5"
所有ovs-vsctl的命令将在宿主机执行。