docker二进制包部署(带arm版自动部署包)

发布于:2024-08-02 ⋅ 阅读:(125) ⋅ 点赞:(0)

1.概述

最近需要在Linux上部署docker,于是自己做了一个自动部署包。脚本的写法不区分X86或arm,通用的。

2.Docker二进制包下载

arm V8的从该地址下载:

  • https://download.docker.com/linux/static/stable/aarch64/

X86的从改地址下载:

  • https://download.docker.com/linux/static/stable/x86_64/

3.安装脚本制作

  • 首先解压下载的Docker安装包。tar -zxvf XXX.tar.gz
  • 在Docker文件夹所在目录制作安装脚本 install.sh ,脚本里写入如下内容,并保存。
#!/bin/bash
cp -a ./docker/* /usr/bin/
cat > /usr/lib/systemd/system/docker.service <<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF

chmod +x /usr/lib/systemd/system/docker.service
systemctl daemon-reload

mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

systemctl daemon-reload
systemctl start docker
systemctl enable docker
  • 给该脚本增加执行权限
  • chmod +x install.sh

4.安装

然后就可以安装了,执行./install.sh即可完成安装。

5.卸载

某些情况可能需要卸载已安装的docker,比如切换docker版本。
在install.sh 同级目录新建 uninstall.sh文件,在 uninstall.sh 文件里写入如下内容完成

#!/bin/bash

dir="/usr/bin/"
files=("containerd" "containerd-shim-runc-v2"  "ctr"  "docker"  "dockerd"  "docker-init"  "docker-proxy"  "runc")

systemctl stop docker

cd "$dir" || exit 1 # 如果切换失败则退出脚本

#循环删除文件
for file in "${files[@]}";
do 
  if [ -f "$file" ]; then
    rm -rf "$file"
  else
    echo "$file not found"
  fi
done

rm -rf /etc/docker/daemon.json

rm -rf /etc/docker

rm -rf /var/lib/docker

rm -rf /usr/lib/systemd/system/docker.service

systemctl daemon-reload

echo "Done"

增加执行权限 chmod +x uninstall.sh
执行卸载./uninstall.sh即可完成卸载。

6.注意事项

使用过程中镜像和容器默认存储于/var/lib/docker目录,容器和镜像逐渐增长会使磁盘空间耗尽导致运行失效,有两个解决办法。

  • 方法1:安装阶段就把存储位置配置到其他大空间的磁盘,在/etc/docker/daemon.json文件里指定存储路径,比如"data-root":"/data/mypath",可在安装脚本里把/etc/docker/daemon.json的内容改为如下内容。
{  
  "data-root":"/data/mypath",
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
  • 方法2:软连接。通过软连接把存储位置指向其它位置,当然原有/var/lib/docker目录的内容要移动过去。比如
systemctl stop docker        # 停止docker
mv /var/lib/docker /usr1/docker     # 迁移docker数据到新路径,新路径只需保证在/usr1下即可。阿里云版docker容器目录位于/usr/libexec/docker
ln -s /usr1/docker /var/lib/docker  # 创建软连接
systemctl start docker                # 重新启动docker
# 查看容器和镜像的目录
docker info | grep "Dir"

7.分享一个arm版自动部署安装包

该自动部署安装包是arm版的,麒麟 KyLin SP3 系统测试正常。
arm版Docker 27.1.1自动部署包蓝奏云超链接

或者扫码下载
在这里插入图片描述

8.懒人 X86 版安装包

如果觉得复制上面的安装脚本也觉得麻烦怕操作有误,那换种方式吧。首先下载 X86 版docker二进制包解压,然后把我上面蓝奏云共享的arm包下载了解压,注意X86版和arm版不要放在同一目录,解压时会相互覆盖。把arm版的脚本拷贝到 X86版对应位置并执行install.sh即可运行。