Docker内无法使用systemctl 手动启动 sshd服务

如何解决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

完成后,  查看端口监听状态

启动成功

你可能感兴趣的:(Docker容器学习)