【发布时间】:2019-12-16 11:32:36
【问题描述】:
目标是在连接到 VPN 时使用 Docker 容器作为代理服务器,以便可以通过容器重定向流量。
我有以下 Dockerfile。
FROM ubuntu:latest
RUN apt-get update -y
RUN apt-get install -y unzip \
nano \
iputils-ping \
wget \
telnet
COPY MotionPro_Linux_Ubuntu_x64_v1.2.5.sh /MotionPro_Linux_Ubuntu_x64_v1.2.5.sh
RUN chmod +x /MotionPro_Linux_Ubuntu_x64_v1.2.5.sh
RUN printf '%s\n' '#!/bin/bash' 'exit 0' | tee -a /etc/rc.local
RUN chmod +x /etc/rc.local
RUN sh /MotionPro_Linux_Ubuntu_x64_v1.2.5.sh
第一个问题:
我无法在图像创建期间安装应用程序。但是,一旦进入容器,我就可以毫无问题地执行脚本。
Docker 构建输出:
Uncompressing MotionPro Setup..........................................................................................................
./install.sh: 31: [: !=: unexpected operator
installing vpnd...
starting vpnd...
installing MotionPro...
creating desktop shortcut for MotionPro...
install MotionPro successfully.
vpnd 似乎是一旦启动容器的原因,因为它没有启动或什么的。
我该如何解决这个问题?
问题 2:
像这样启动容器:
docker run --name=motionpro -t -d --device=/dev/net/tun --cap-add=net_admin --privileged motionpro
我再次安装了 VPN 应用程序并且可以成功连接,但我无法 ping vpn 网络上的任何主机。
在容器内使用 netstat 我可以看到,一旦 vpn 连接成功,就不会添加任何路由。路由通常添加在我自己的主机上。
【问题讨论】:
-
查看 ENTRYPOINT 指令。这是一个类似的问题stackoverflow.com/questions/59287314/…
-
容器里有install.sh文件吗?第 31 行是什么?你是说你 docker exec 进入容器并执行: sh /MotionPro_Linux_Ubuntu_x64_v1.2.5.sh 它工作正常吗?
-
是的,当使用 RUN 执行脚本时,它会安装,但是当启动容器时,除非我再次执行,否则 vpn 应用程序将无法工作。我认为它安装了一个无法以某种方式启动容器的 vpnd 守护进程,但是 idk。
标签: docker containers ibm-cloud vpn ibm-cloud-infrastructure