Linux-Server
Debian
APT Update 版本更新提示
重新更新,并允许版本更新:
apt-get update --allow-releaseinfo-change
登陆时间长
目前仅在Debian12的LXC特权容器出现。
表现为输入密码后需要约二十秒进入SHELL环境,使用:
pam-auth-update
取消勾选Register user sessions in the systemd control group hierarchy
.
安装Docker
先卸载旧的:
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
安装新的:
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Alpine
安装Docker
# 安装Docker
apk add docker
# 启动时运行Docker daemon
rc-update add docker default
service docker start
# 添加用户组
addgroup ${USER} docker
# 安装Compose
apk add docker-cli-compose
详情可以看:Docker - Alpine Linux
安装SSH
# 安装openssh-server
apk add openssh-server
# 启动时运行sshd
rc-update add sshd
安装NFS
apk update
apk add nfs-utils
挂载NFS
如果需要挂载NFS的话,需要保证NFS状态就绪,可以通过自启动脚本(/etc/init.d/mount-nfs
)来实现这个功能:
#!/sbin/openrc-run
description="Auto mount NFS shares"
depend() {
need networking rpcbind
use logger
after firewall
}
SERVER="192.168.31.4"
MOUNTPOINT="/mnt/nfs"
LOGFILE="/var/log/mount-nfs.log"
test_folder() {
local FOLDER_PATH="$1"
if [ ! -d "$FOLDER_PATH" ]; then
mkdir -p "$FOLDER_PATH"
return $?
fi
}
mount_nfs() {
local REMOTE="$1"
local LOCAL="$2"
test_folder "$MOUNTPOINT/$LOCAL"
if [ $? -ne 0 ]; then
echo "[$(date)] Failed to mkdir $MOUNTPOINT/$LOCAL" >> $LOGFILE
return 1
fi
if mountpoint -q "$MOUNTPOINT/$LOCAL"; then
echo "[$(date)] $MOUNTPOINT/$LOCAL already mounted." >> $LOGFILE
return 0
fi
if mount -t nfs4 "$SERVER:$REMOTE" "$MOUNTPOINT/$LOCAL"; then
echo "[$(date)] Successfully mounted $MOUNTPOINT/$LOCAL." >> $LOGFILE
else
echo "[$(date)] Mount $SERVER:$REMOTE failed." >> $LOGFILE
fi
}
start() {
test_folder "$MOUNTPOINT"
if [ $? -ne 0 ]; then
echo "[$(date)] Failed to mkdir $MOUNTPOINT" >> $LOGFILE
exit 1
fi
for i in $(seq 1 30); do
if showmount -e $SERVER >/dev/null 2>&1; then
echo "[$(date)] NFS on $SERVER ready" >> $LOGFILE
break
else
echo "[$(date)] NFS on $SERVER not ready" >> $LOGFILE
sleep 10
fi
done
mount_nfs "/mnt/BigStorage/Media" "Media"
}
stop() {
umount "$MOUNTPOINT/Media"
}
注意这里写入文件后,通过rc-update add mount-nfs default
来自启动。
为Alpine启用glibc支持
apk add gcompat
即便启用了glibc的支持,也是无法启动Jetbrains的Backend的,放弃了此方案,准备切换到Debian
RockyLinux
安装Docker
首先添加Docker的源:
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
然后安装Docker:
dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
配置开机启动:
systemctl enable --now docker
Docker在LXC中的问题解决
在LXC中会出现奇奇怪怪的问题,因此需要开启LXC的特权容器选项,然后在权限中选中嵌套:
还需要修改一下LXC的配置,配置文件在/etc/pve/lxc/
目录,修改对应自己的VMID的配置文件:
arch: amd64
cores: 4
features: mount=nfs,nesting=1
hostname: linux-server
memory: 8192
net0: name=eth0,bridge=vmbr0,firewall=1,gw=192.168.31.2,hwaddr=BC:24:11:67:FD:D3,ip=192.168.31.6/24,ip6=2408:8207:30c1:b80:be24:11ff:fe5a:1ec2/64,type=veth
ostype: alpine
protection: 1
rootfs: local-lvm:vm-104-disk-0,size=40G
swap: 0
lxc.cgroup2.devices.allow: a
lxc.cap.drop:
最主要的是添加最后两行的cgroup
和cap
的配置。