簡體   English   中英

Docker 容器和host.network VPN

[英]Docker container and host network VPN

我正在嘗試在打開 VPN 的 MacOS 上運行 docker 圖像(TUN 設備)。 Docker 容器可以訪問inte.net,但是無法訪問vpn后面的資源。 使 Docker go 到 VPN.network 的正確方法是什么?

我試過docker run -.net host使 docker 共享 host.network,但沒有幫助。 Host可以訪問VPN資源,docker容器無法解析他們的名字..

將主機連接到 VPN 后,我不得不重新啟動 docker。

sudo systemctl restart docker docker start {name-of-container}

不確定這是否是最佳解決方案。

連接到 VPN 后,我使用了出現在主機上的 DNS

scutil --dns | grep 'nameserver\[[0-9]*\]'
nameserver[0] : xxx.xxx.xxx.xxx

修改 docker run 命令:

docker run --cidfile="docker.pid" --dns=xxx.xxx.xxx.xxx --publish-all

現在docker容器可以訪問VPN后面的資源了...它可以工作,但我不知道它是好是壞...

有類似的問題。 OP 的解決方案有效,但只需重新啟動我的 docker vm:

docker-machine restart $host

靈感: https : //www.reddit.com/r/docker/comments/39z4xd/when_my_docker_host_is_connected_to_vpn_i_can_no/

我有這個確切的問題。 我嘗試了此處建議的其他解決方案,但它們對我不起作用。 經過大量試驗和錯誤,這個解決方案非常有效:

在 daemon.json 配置文件中添加 "bip": "192.168.1.5/24"。 該文件可以在 docker 引擎下的 docker 桌面設置或 /etc/docker/daemon.json 中找到。 BIP 是橋接 IP 地址的設置,將更改 docker 在其子網中分配的 IP。 通過更改此設置,我避免了 VPN 和 docker ip 地址之間的沖突。

重新啟動 docker 守護進程。

停止所有容器。

運行“docker network prune”以刪除未使用的網絡。

重啟所有容器。 這將使用新的 IP 地址重新創建他們的網絡。

以后連接到VPN后,您可能仍需要重新啟動docker。 有關其他解決方案和想法,請參閱此線程: https : //github.com/docker/for-mac/issues/2820

在 Mac 上運行的 docker version 3.6.0 (67351) 上有這個問題

對我有用的是結合@Sheridan Rea 和@Marco 發布的解決方案

  1. 將 Docker 子網更改為192.168.65.0/28 之前設置為 192.168.63.0/24。 單擊“應用並重啟”/“重啟 Docker”

  2. 運行docker network prune

  3. 運行docker compose up

簡單地更改 Docker 子網對我不起作用

現在我可以 ping VPN 后面的 IP 地址

對我有用的是將 docker 子網掩碼從 /24 更改為 /28,然后重新啟動,我現在可以在我的 vpn 網絡上執行 ping、telnet 和其他操作。 它說默認值是 /28,但 docker desktop 附帶了 /24。 也許這是一個錯字,我不知道。

不知道為什么,但正如其他人在這里建議的那樣,更改 Docker su.net 有效。 唯一的區別是在 Docker 桌面上,Windows v4.14.0 將 su.net 設置為 /28 不起作用。

錯誤消息的屏幕截圖

但是只要將 su.net IP 地址從 192.168.65.0/24 修改為 192.168.66.0/24 就可以了。

之前發布的解決方案都不適用於帶有 OpenVPN 客戶端的 MacOS。 我想我只需要像這樣定義extra_hosts

version: "3.9"
services:
    app:
        extra_hosts:
            - "something.vpn:192.168.196.3"

現在訪問 Docker 容器內的 something.vpn 會導致 192.168.196.3。 無需更改 docker su.net 或其他任何內容。

使用docker run -.net nat對我有用。 這是針對在 Docker 上運行的 Windows 容器的桌面版 (Windows)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM