一、docker 离线安装

1 下载压缩包

官网下载地址:https://download.docker.com/linux/static/stable/x86\_64/
选择适合的版本,这里以docker-27.2.1.tgz 进行示意。

2 上传压缩包并解压

把下载好的docker-27.2.1.tgz,上传到linux服务器任意路径后,执行解压:

tar zxvf docker-27.2.1.tgz

3 部署docker

在解压路径下执行:

cp docker/* /usr/bin/

4 验证安装结果

docker -v

5 设置docker开机自启

5.1 注册docker服务

vi /etc/systemd/system/docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
# BindsTo=containerd.service
# After=network-online.target firewalld.service containerd.service
After=network-online.target firewalld.service
Wants=network-online.target
# Requires=docker.socket

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3

# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s

# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
# TasksMax=infinity

# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes

# kill only the docker process, not all processes in the cgroup
KillMode=process

[Install]
WantedBy=multi-user.target

保存服务配置文件并退出vim

:wq

5.2 启动服务

# 给启动配置添加执行权限
chmod +x /etc/systemd/system/docker.service
# 重载Unit服务配置
systemctl daemon-reload
# 添加 docker 开机自启
systemctl enable docker
# 启动 docker
systemctl start docker

注意:如果你的服务已经启动,一定要先停止,否则启动失败,此时 systemctl start docker 无法停止,需要手动 kill掉

二、docker-buidlx 插件离线安装

1 手动创建docker插件目录

mkdir -p /usr/local/lib/docker/cli-plugins/

2 下载docker-buildx到插件目录并授权

curl -Lo /usr/local/lib/docker/cli-plugins/docker-buildx https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-amd64

# 赋予可执行权限
chmod +x /usr/local/lib/docker/cli-plugins/docker-buildx

3 验证buildx

docker buildx ls