2. 一键安装脚本内容如下step 1: 安装所需的工具程序
step 2: 安装GPG证书
step 3: 更新 apt sources.list
step 4: apt 安装 docker-ce
step 5: 更新 /etc/docker/daemon.json 文件
step 6: 迁移 docker 目录 到 /data/docker
_setupDocker() {
local flg=0
# [检查是否强制重新安装]
[ X$flg = X0 ] && [ X$(command -v docker) = X ] && flg=1
[ X$flg = X0 ] && [ X$1 = X-f -o X$1 = X--force-reinstall ] && flg=1
[ X$flg = X0 ] && {
echo 'Usage: bash -x '$0' [-f,--force-reinstall]'
return
}
## step 1: 安装所需的工具程序
local lTools='rsync curl apt-transport-https '
lTools+='ca-certificates software-properties-common '
apt-get update
apt-get -y install $lTools
## step 2: 安装GPG证书
local lMirUrl='https://mirrors.aliyun.com/docker-ce/linux/ubuntu'
curl -fsSL $lMirUrl/gpg | apt-key add -
## step 3: 更新Apt source
local lArch='amd64'
local lAptSrc='/etc/apt/sources.list'
[ X$(arch) = Xaarch64 ] && lArch='arm64'
local lUbtVer=$(awk -F'=' '/^UBUNTU_CODENAME=/{print $2}' /etc/os-release 2>/dev/null)
[ X$lUbtVer = X ] && lUbtVer='bionic'
{
sed -i '//docker/d' $lAptSrc
rm -f ${lAptSrc}.d/docker*.list
} 2>/dev/null
{
printf 'deb [arch=%s] ' $lArch
printf '%s ' $lMirUrl
printf '%s stablen' $lUbtVer
} >>${lAptSrc}
## step 4: apt 安装 docker-ce
apt update
apt install -y docker-ce --reinstall
## step 5: 更新 docker/daemon.json 文件
local lDockerRegistry="https://docker.mirrors.ustc.edu.cn"
local lInsecSvrip="192.168.100.86:8080"
{
printf '{n "dns": [ "114.114.114.114", "8.8.8.8" ],n'
printf ' "registry-mirrors": [ "%s" ],n' $lDockerRegistry
printf ' "insecure-registries": [ "%s" ],n' $lInsecSvrip
# printf ' "storage-driver":"btrfs",n'
printf ' "experimental": truen}n'
} >/etc/docker/daemon.json
## step 6: 迁移 docker 目录 到 /data/docker
local lSvcFile=/lib/systemd/system/docker.service
if ! grep -Eq '/data/docker' $lSvcFile; then
sed -i -r '/^ExecStart=/ s@$@ --graph=/data/docker@' $lSvcFile
fi
systemctl stop docker.service docker.socket
rm -rf /data/docker 2>/dev/null
mkdir -p /data 2>/dev/null
rsync -avzP /var/lib/docker /data
}
[ "X$0" = "X$BASH_SOURCE" ] && _setupDocker $@



