一个NAS也能玩出花来?记一次折腾拾光坞容器的过程

大约在去年3月份左右,我爸买了一个拾光坞NAS,其中里面就含有Docker的功能。当时因为高三,就没有去怎么折腾。最近由于开始接触Linux系统,便想到了NAS里面有个容器的功能,便想着去利用一下。

本人对于Docker啥的其实是个小白,我也只是将自己的折腾经历发出来,文章中也可能有错误、不足之处,内容仅供参考

部署容器

虽说拾光坞自带有一个ubuntu的镜像,但是自动部署不会挂载NAS磁盘,不能满足我的需求,手动部署又不知道怎么回事会报错,故本人使用了在拾光坞镜像商店中的centos镜像。

镜像下载并导入完成后,在镜像管理处点击创建容器

根据自己的需要开放端口,挂载存储等,并进行创建和启动容器。

创建完成后,在拾光坞客户端内进入容器

使用容器

由于我需要在容器内部署一些项目,所以我想将Docker当作正常的操作系统使用,但由于Docker镜像较为精简,故我便直接装了一个宝塔,在宝塔安装的时候会补上部分组件缺失的问题。

补全基本组件

1.补全基本命令

yum install -y sudo
yum install -y passwd
yum install -y which

2.启用SSH

首先通过命令yum install openssh-server -y安装SSH服务

输入命令/usr/sbin/sshd,会发现文件缺失

直接将另一个Linux系统中的key文件放入即可

再次运行,又提示文件权限过高

使用chmod命令修改权限为600即可

若没有报错,则ssh启动成功,使用sudo passwd root命令修改密码即可

若使用SSH工具连接提示"System is booting up. Unprivileged users are not permitted to log in yet. Please come back later. For technical details, see pam_nologin(8)."

执行命令sudo sed -i -r 's/^(.*pam_nologin.so)/#\1/' /etc/pam.d/sshd即可

3.设置开机自启动

在任意目录下创建一个ssh脚本,并授予该文件可执行权限

touch /root/start.sh
chmod +x /root/start.sh

将你要执行的命令写在脚本中,这里以启动SSH服务为例,内容如下

/usr/sbin/sshd

接着去修改/root/.bashrc文件,在末尾处添加如下内容即可实现脚本开机自启

# startup run
if [ -f /root/start.sh ]; then
    /root/start.sh
else
    echo "start.sh does not exist in /root directory"
fi

(虽说本人后来发现这样的话其实是每次连接SSH都会执行,后面有空再想办法)

如果想隐藏命令执行日志的话,在命令后面加上> /dev/null 2>&1 &就行

4.其他乱七八糟的情况修复

1.执行yum命令报Module yaml error: Unexpected key in data: static_context [line 9 col 3]

执行dnf upgrade libmodulemd即可

2.时区调整

在容器中不能使用timedatectl set-timezone Asia/Shanghai调整,会报错

原因是容器的PID 1不是systemd,无法使用systemd管理器,使用如下命令修改即可

echo "Asia/Shanghai" > /etc/timezone
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

THE END

语景小站