Shell安装Docker脚本(包括内网)

 声明:借鉴于CSDN创作者  神志不清.

Shell脚本一键部署Docker(包含内网环境)icon-default.png?t=N7T8https://blog.csdn.net/s1608818981/article/details/132854276?spm=1001.2014.3001.5502

改动汇总:

增加了进度条显示,(众所周知,进度条多半只是告诉你程序还在运行)。

修改为全 "tee" 写入,(作用一样,只因强迫症)。

以下只提供内网安装脚本,需要 docker 安装包和 .sh 在同一目录下 执行脚本即可(bash ./ sh )

#!/bin/bash
# 定义一个函数来显示进度条
progress_bar() {
    local i=0
    local str=""
    local label=('|' '/' '-' '\\')
    local index=0
    while [ $i -le 20 ] # 增加迭代次数到20
    do
        let index=i%4
        let jinshu=$i*5 # 调整进度条的百分比计算
        printf "    Docker_install: \e[47m\e[31m[%-20s]\e[0m\e[47;32m[%c]\e[1;0m\e[47;35m[%-3d%%]\e[1;0m\r" $str ${label[$index]} $jinshu
        let i++
        str+="#"
        sleep 0.08
    done
    echo
}

# 在后台启动进度条
printf "\n"
progress_bar &
# 保存进度条的进程ID,以便稍后停止它
progress_pid=$!

# 安装脚本
# tar包需要和脚本在同一路径下,解压后在/usr/local
# Docker tar包下载地址:https://download.docker.com/linux/static/stable/x86_64/
tar -zxvf docker*.tgz -C /usr/local >/dev/null
cd /usr/local && cp docker/* /usr/bin

# 让某个用户能够管理Docker服务,只需要将这个用户添加到'docker'组
# usermod -aG docker 用户名
tee /etc/systemd/system/docker.socket >/dev/null <<EOF
[Unit]
Description=Docker Socket for the API
PartOf=docker.service
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF

tee /etc/systemd/system/docker.service >/dev/null <<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd --registry-mirror=http://3cda3ca9.m.daocloud.io -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF

tee /etc/systemd/system/containerd.service > /dev/null <<EOF
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target
[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
TasksMax=infinity
OOMScoreAdjust=-999
[Install]
WantedBy=multi-user.target
EOF

# 停止进度条
if ps -p $progress_pid > /dev/null
then
   kill $progress_pid >/dev/null
fi

# 启动检查
echo -e "\n正在启动Docker守护进程。"
systemctl daemon-reload
echo -e "\n创建管理Docker组。"
groupadd docker
echo -e "\n正在启动Docker。"
systemctl start docker
echo -e "\n正在设置Docker开机自启。"
systemctl enable docker.service >/dev/null
echo -e "\n正在检查Docker状态。"
systemctl status docker >/dev/null
return_code=$?
if [ $return_code -eq 0 ]; then
    echo -e "\n恭喜!Docker部署完成。"
else
    echo -e "\nDocker部署出错,请手动排查。\r"
fi

# 一键卸载Docker
del(){
systemctl stop docker
systemctl disable docker.service
rm -rf /usr/local/docker*
rm -rf /usr/bin/docker*
groupdel docker
find / -name docker |xargs -i rm -rf {}
find / -name docker
rm -rf /etc/systemd/system/docker.socket
rm -rf /etc/systemd/system/docker.service
rm -rf /etc/systemd/system/containerd.service
}
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值