docker入门——多用户服务器管理(小白)
我也是小白,其实也不确定对不对,目前ssh连接是没问题的,但是xftp还不可以,应该是配置文件还有点问题。。。。我后续肯定会改哒!
要求:实现对多用户服务器的分离管理,各个用户之间互不干涉,实现各用户默认登陆直接进入到容器内部。
1.首先需要把待管理的账号添加到docker用户组
这里需要切换到root目录下面进行执行(毕竟权限更高一点),假设目前系统已经有sunjh帐号了
sudo -i
sudo usermod -aG docker sunjh
2.强制 sunjh 用户登录后执行指定命令
首先需要更改/etc/ssh/sshd_config文件,我这里使用的是vim,需要把下面内容加入到文件中
先按i进入编辑模式,然后把下面的粘贴进去,然后按esc键,:+wq回车后进行强制保存退出(这里设置的是sunjh账号登陆后默认进入/home/sunjh文件夹)
Match User sunjh
ForceCommand docker exec -it sunjh_container sh -c 'cd /home/sunjh && exec bash'
AllowTcpForwarding no
GatewayPorts no
X11Forwarding no
以上完成后需要重启一下ssh生效
sudo systemctl restart sshd
3.拉取Ubuntu服务器镜像
我们实验室的服务器系统装的Ubuntu24.04的系统,我这里docker拉取的镜像也是Ubuntu24.04的(其他版本的估计也可以,但是我没尝试)。
docker pull ubuntu:24.04
这里为sunjh账号创建容器,并获取用户的UID和GID
启动容器并映射本地目录到 容器内的用户主目录里
这里我给用户分配的服务器本地地址为/mnt/disk1/sunjh
SUNJH_UID=$(id -u sunjh)
SUNJH_GID=$(id -g sunjh)
docker run -d --name=sunjh_container \
-v /mnt/disk1/sunjh:/home/sunjh \
-e HOME=/home/sunjh \
ubuntu:24.04 \
/bin/sh -c "groupadd -g ${SUNJH_GID} sunjh && useradd -m -s /bin/bash -u ${SUNJH_UID} -g ${SUNJH_GID} sunjh && exec su - sunjh -c 'tail -f /dev/null'"
4.遇到的某些问题
创建容器的时候有些命令写的不是很到位,所以来来回回写了好几次,最后改成了上面这个样子的,但是还是有点问题就是xftp没有办法连接上。
上面由于创建容器的时候经常出问题,所以需要来回删除容器,特别需要注意的问题就是需要先停止容器才可以进行删除!!!
docker stop sunjh_container
docker rm sunjh_container