如何解决Docker容器使用 systemctl
使用特权,同时,启动 /usr/sbin/init
docker run --privileged 其他参数 镜像版本 /usr/sbin/init
如何便可解决,
如何分配docker容器权限
针对: Operation not permitted 相关问题
使用 --cap-add/--cap-drop 开启/禁用 容器功能,具体权限,参考文档
http://man7.org/linux/man-pages/man7/capabilities.7.html
注意: --privileged 相当于 --cap-add=ALL 但我在测试过程中,发现使用 --cap-add=ALL 也无法解决容器内使用systemctl问题,必须使用 --privileged, 开启拓展属性, 但如果你使用了--privileged , 容器对宿主硬件资源全部可见, 又无法进行资源分配操作(也许测试不充分导致)。使用--cap-add=ALL 虽然无法使用systemctl操作, 但是宿主资源可分配。
容器内手动启动sshd服务
首先确保,容器内安装了sshd,
yum install -y openssh-server
如果使用了 --privileged , 直接使用 systemctl , 否则需要进行如下:1 生成 host_key 2. 启动 sshd
如果未生成key 将提示无法加载key文件
按需生成指定的key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key
可默认不写参数,回车{Enter}即可
生成完成后,再次启动sshd, 指定配置文件
/usr/sbin/sshd -f /etc/ssh/sshd_config
完成后, 查看端口监听状态
启动成功