# Some setup at first, skip if you already have those..
sudo apt-get install ca-certificates curl gnupg lsb-release
# add key and sources
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# install docker
sudo apt-get update \
&& sudo apt-get install docker-ce docker-ce-cli containerd.io
# disable docker services
sudo systemctl disable --now docker.service docker.socket
# setup docker for rootless usage and switch to that context
dockerd-rootless-setuptool.sh install
docker context use rootless
# add the following to your bashrc or zshrc and source it ofc
export DOCKER_HOST=unix:///run/user/1000/docker.sock
# user start the docker service again (no sudo)
systemctl --user start docker
6条答案
按热度按时间cngwdvgl1#
我真的很喜欢OpenConnect(它支持比network-manager-openconnect更多的配置选项)。即使是需要csd-wrapper的可怕安装通常也能很好地工作。
AnyConnect以一种奇怪的方式破坏Docker网络,即使在您退出VPN后(即使您之后停止vpnagentd),它们也会保持断开状态。
解决方法是停止docker,清除其所有网络和网桥,然后才启动AnyConnect VPN。您可以在VPN会话结束后启动docker,它将重新创建所有必要的东西。
我创建了一个脚本来解决这个不幸的行为,它确实是这样做的:
注意:VPN管理员可以阻止您使用OpenConnect并强制您仅使用Cisco AnyConnect,但如果在VPN配置文件中启用
LocalLanAccess
,您可能会获得更好的体验。mw3dktmi2#
下面这些对我很有效。
尝试使用OpenConnect而不是Anyconnect:
然后(至少对于Ubuntu 16)注解掉
dns=dnsmasq
行,所以它变成这样:然后使用NetworkManager添加连接到您的VPN提供商并连接。(NetworkManager -〉编辑连接-〉添加。然后选择连接类型为VPN -〉Cisco Annyconnect)
重新启动并重新连接,现在Docker容器应该可以访问互联网。
pftdvrlh3#
Docker默认会在路由表中添加一个条目,该条目会通过环回地址转发目的地为172.17.X.X的所有流量。在您的示例中,如果AnyConnect分配给您的计算机的IP地址以172.17开头,则两个子网重叠,Docker将冻结vpn连接(你可以通过查看anyconnect分配给你的IP并将其与docker机器的路由表进行比较来检查)。
如果是这种情况,您可以通过将以下内容添加到**%programdata%\docker\config\daemon.json**来更改Docker使用的默认子网
在这些配置更改之后,重新启动Docker服务并验证新的子集已经设置(您可以使用
netstat -rn
)。Linux here中的步骤。
1bqhqjot4#
你可以配置你的本地路由表。通常docker_endpoint是192.168.x.x,为了让它去本地网络而不是vpn,你可以添加路由规则如下。
route add 192.168.0.0 mask 255.255.0.0 192.168.0.1 -p
-p表示永久添加。然后运行下面的命令看看是否设置。route print
ibps3vxo5#
我遇到了完全相同的问题- Docker容器网络在Cisco Anyconnect VPN下无法工作。我尝试了网上发布的一堆解决方案-从Cisco Anyconnect启用本地LAN地址,更新IP路由表等。绝对没有对我起作用。然后,我安装了Docker桌面应用程序,可用于Linux包括。随着Docker桌面应用程序打开,我重新启动了我所有的容器,容器网络重新在线并工作。
9o685dep6#
我知道这个问题有点老了..但它的第一个stackoverflow击中如果你谷歌docker思科vpn相关问题.因为我有我的问题,这个问题自己在过去几天,我发现网上似乎没有工作,我想在这里分享我的解决方案.
希望这至少能帮助到一些人。