【问题标题】:Docker VPN container unable to pingDocker VPN 容器无法 ping
【发布时间】: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


【解决方案1】:

我能够使用以下 docker run 命令解决有关 ping 的问题:

docker run --hostname motionpro --name motionpro --privileged --network awxcompose_default --device /dev/net/tun --cap-add NET_ADMIN --sysctl net.ipv6.conf.all.disable_ipv6=0 -t -d motionpro bash

看来我不得不禁用 IPv6。

【讨论】:

  • 并安装 net-tools、iptables 和 iproute2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-12
  • 2021-05-22
  • 2021-12-24
  • 2023-03-23
  • 1970-01-01
相关资源
最近更新 更多