【问题标题】:openVPN inside docker imagedocker镜像中的openVPN
【发布时间】:2021-06-21 04:51:10
【问题描述】:

我正在尝试创建一个 docker 映像,其中包含一个 python 脚本,该脚本使用 openVPN 通过 VPN 连接到 API,但是,我似乎无法让 openVPN 正常工作。

我有我的 docker 文件

# Install openVPN and get confi files
RUN mkdir /config
ADD ./config/. /config
RUN apt-get install -y openvpn 

# Run openvpn and script
CMD openvpn --config config/fremsyn.ovpn --auth-user-pass config/login.txt --askpass config/password.conf && python3 src/cli/getStatus.py

但我不断收到错误:

ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)

这个问题有解决办法吗?

附带说明,我需要在 Azure 中将容器作为容器实例运行。

【问题讨论】:

    标签: docker openvpn


    【解决方案1】:
    1. 使用 Dockerfile 中的守护进程运行 ovpn
    CMD openvpn --daemon --config config/fremsyn.ovpn --auth-user-pass config/login.txt --askpass config/password.conf && python3 src/cli/getStatus.py
    
    1. 要运行服务,请使用 docker-compose.yml,如下所示:

    docker-compose.yml

    version: "3.3"
    services: 
      name_of_your_service:
        image: your_image_from_Dockerfile_build
        restart: always
        sysctls:
          - net.ipv6.conf.all.disable_ipv6=0
        cap_add: 
          - NET_ADMIN
        devices:
          - /dev/net/tun
        volumes:
          - /etc/timezone:/etc/timezone:ro
    

    运行命令

     $ docker-compose up -d
    

    【讨论】:

    • 当我尝试使用 Devops Pipelines 构建并推送到 Azure 容器注册表时,docker compose 似乎需要很长时间,并且我收到以下消息:“您尝试重新创建的服务的映像已已删除。如果继续,卷数据可能会丢失。请考虑在继续之前备份数据。” (我确实更改了图像的名称)
    【解决方案2】:

    尝试使用称为NET_ADMIN 的附加功能运行您的容器。同时挂载/dev/net/tun 设备。

    docker run --cap-add NET_ADMIN -v /dev/net/tun:/dev/net/tun …
    

    【讨论】:

      猜你喜欢
      • 2022-10-15
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-26
      • 1970-01-01
      • 2020-01-20
      • 2017-12-31
      相关资源
      最近更新 更多