[英]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 發布的解決方案
將 Docker 子網更改為192.168.65.0/28 。 之前設置為 192.168.63.0/24。 單擊“應用並重啟”/“重啟 Docker”
運行docker network prune
運行docker compose up
簡單地更改 Docker 子網對我不起作用
現在我可以 ping VPN 后面的 IP 地址
對我有用的是將 docker 子網掩碼從 /24 更改為 /28,然后重新啟動,我現在可以在我的 vpn 網絡上執行 ping、telnet 和其他操作。 它說默認值是 /28,但 docker desktop 附帶了 /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.