arm版本群晖安装docker
非套件安装
arm版本群晖安装Docker,非套件.
安装
安装目录
# 命令存放目录
BIN_PATH='/usr/sbin'
DATA_ROOT='/volume1/docker'
# 准备目录
mkdir -p /etc/docker
mkdir -p /var/lib/docker
mkdir -p $DATA_ROOT
下载安装docker
# docker 版本
DOCKER_VER='20.10.9'
# 下载镜像地址
# DOCKER_MIRROR='https://download.docker.com'
DOCKER_MIRROR='https://mirrors.163.com/docker-ce'
GITHUB_MIRROR='https://cors.isteed.cc'
# 安装docker
curl -fLo docker.tgz "$DOCKER_MIRROR/linux/static/stable/$(uname -m)/docker-${DOCKER_VER}.tgz" && tar xvf docker.tgz && chmod -R +x docker && mv docker/* $BIN_PATH && rm -rf docker docker.tgz
# 安装docker-compose
curl -fLo $BIN_PATH/docker-compose "$GITHUB_MIRROR/https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" && chmod +x $BIN_PATH/docker-compose
docker控制脚本
tee /etc/docker/daemon.json <<-EOF
{
"storage-driver": "vfs",
"data-root": "$DATA_ROOT",
"experimental": true,
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
]
}
EOF
tee $BIN_PATH/docker.sh <<-'EOF'
#!/bin/sh
set -e
if [ "$(id -u)" != 0 ]; then
echo >&2 "error: must be root to invoke $0"
exit 1
fi
PIDFILE='/var/run/docker.pid'
pid() {
if [ -s "$PIDFILE" ]; then
local pid
pid="$(cat "$PIDFILE")"
if ps "$pid" > /dev/null 2>&1; then
echo "$pid"
return 0
fi
fi
return 1
}
start() {
if pid="$(pid)"; then
echo >&2 "error: Docker daemon is already running ($pid)"
exit 1
fi
local KER_MOD="aufs macvlan ip_tables iptable_filter iptable_nat ip_conntrack ipt_state"
for mod in $KER_MOD; do
checkmod=`lsmod | grep -i ${mod} | wc -l`
if [[ $checkmod -eq 0 ]]; then
modprobe ${mod}
fi
done
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv6.conf.all.forwarding=1
EXTRA_ARGS="-H tcp://0.0.0.0:2375"
mkdir -p /var/lib/docker/log
echo "Starting dockerd"
dockerd -H unix:// $EXTRA_ARGS --pidfile "$PIDFILE" >> /var/lib/docker/log/docker.log 2>&1 &
}
stop() {
if pid="$(pid)"; then
echo "Stopping dockerd ($pid)"
kill "$pid"
i=30
while pid > /dev/null; do
sleep 1
i=$(expr $i - 1)
if [ "$i" -le 0 ]; then
echo >&2 "error: failed to stop Docker daemon"
exit 1
fi
done
fi
if ! pid="$(pid)"; then
for mod in $KER_MOD; do
checkmod=`lsmod | grep -i ${mod} | wc -l`
if [[ $checkmod -ge 1 ]]; then
modprobe -r ${mod}
fi
done
fi
}
restart() {
stop
start
}
reload() {
if ! pid="$(pid)"; then
echo >&2 "error: Docker daemon is not running"
exit 1
fi
kill -s HUP "$pid"
}
status() {
if pid > /dev/null; then
echo "Docker daemon is running"
exit 0
else
echo "Docker daemon is not running"
exit 1
fi
}
case "$1" in
start|stop|restart|reload|status)
"$1"
;;
*)
echo "Usage $0 {start|stop|restart|reload|status}"
exit 1
;;
esac
EOF
脚本执行权限
chmod +x $BIN_PATH/docker.sh
使用方法
# 启动
docker.sh start
# 停止
docker.sh stop
# 重启
docker.sh restart
可在计划任务中设置启动执行 docker.sh start
卸载
rm /usr/local/bin/ctr
rm /usr/local/bin/containerd-shim-runc-v2
rm /usr/local/bin/containerd
rm /usr/local/bin/containerd-shim
rm /usr/local/bin/dockerd
rm /usr/local/bin/runc
rm /usr/local/bin/docker-proxy
rm /usr/local/bin/docker
rm /usr/local/bin/docker-init
rm /usr/local/bin/docker-compose
rm /usr/local/bin/docker.sh
rm -rf /var/lib/docker
- 安装
- 安装目录
- 下载安装docker
- docker控制脚本
- 脚本执行权限
- 使用方法
- 卸载