在Docker容器中调用OpenConnect VPN客户端显示TUNSETIFF失败:不允许操作
我在基于Ubuntu的docker容器里面调用openconnect。 它成功地连接到服务器,并提示input密码,但是
Got CONNECT response: HTTP/1.1 200 OK CSTP connected. DPD 30, Keepalive 20 TUNSETIFF failed: Operation not permitted
我searchTUNSETIFF单词,每个答案都是关于不在sudo中运行的命令,但我已经在容器内的root。 还有什么可以出错?
默认情况下,Docker容器是以一组减less的linuxfunction启动的(请参阅man capabilities
)。 减less的集合不包括一些networking相关的function(大概是这样,容器不能嗅探来自主机或其他容器的stream量)。
要启动具有完整networkingfunction的容器,可以使用--cap-add
参数明确添加SYS_NET_ADMIN
function,例如:
docker run -d --cap-add SYS_NET_ADMIN myimage
或者给容器提供全部的特权,例如:
docker run -d --privileged myimage
用–privileged启动容器。 (感谢Adrian Mouat的回答)。