跳转至

Docker

在线安装(官方脚本)

官方脚本支持的发行版有限,常见的 Debian/Ubuntu,红帽系仅有 RHEL/CentOS。

docker-ce

sudo apt insatll curl
###下载官方脚本
sudo curl -fsSL https://get.docker.com -o get-docker.sh
###阿里云源
sudo DOWNLOAD_URL=https://mirrors.aliyun.com/docker-ce sh get-docker.sh
###ustc源自动安装(不支持过时的系统)
sudo DOWNLOAD_URL=https://mirrors.ustc.edu.cn/docker-ce sh get-docker.sh

docker-compose

在线安装 docker-ce 的脚本已包含,一般情况无需额外安装。

dnf install docker-compose-plugin -y
apt insatll docker-compose-plugin -y

手动安装(阿里云源)

适用于 Rocky Linux。可参考阿里云官方文档:https://help.aliyun.com/zh/ecs/use-cases/install-and-use-docker-on-a-linux-ecs-instance

###添加源:官方
#sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
###添加源:阿里云
sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
###安装
sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
###启动
sudo systemctl start docker
sudo systemctl enable docker

开启远程 API

配置(手动)

#### 打开docker的systemd服务注册文件
sudo nano /lib/systemd/system/docker.service

#### 找到[Service]下面的(修改前)
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
#### 改为如下(修改后)
ExecStart=/usr/bin/dockerd  -H fd:// -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --containerd=/run/containerd/containerd.sock

sudo systemctl daemon-reload          # 重新加载守护进程配置
sudo systemctl restart docker.service # 重启 docker 服务

Shell 脚本(自动化)

每次使用包管理器升级 docker 后,配置都会重置,需要重新添加。这里提供一个 Shell 脚本用于定时作业自动化执行,减少繁琐的手动配置。

Shell 脚本内容如下:

if test -z "$(cat /usr/lib/systemd/system/docker.service | grep 2375)"; #判断是否不存在关键字2375
then
    echo "不存在关键字2375,执行自动添加。"
    sudo sed -i 's#ExecStart=.*#ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --containerd=/run/containerd/containerd.sock#' /usr/lib/systemd/system/docker.service
    sudo systemctl daemon-reload          # 重新加载守护进程配置
    sudo systemctl restart docker.service # 重启 docker 服务
    echo "不存在关键字2375,自动添加、重启服务完成。"
else
  echo "存在关键字2375,结束。"
fi

这里使用 1Panel 的计划任务功能实现定时作业,如下图:OS_UPDATE为每月一次的自动更新系统,ENABLE_DOCKER_API放在其之后执行。

https://cdn.jsdelivr.net/gh/dsf1995cn/PicHub@main/imgs/Snipaste_2024-04-27_15-32-02.png

添加私有仓库(http)

直接docker login XXX登录私有仓库会报错:

dsf@jump-server:~# docker login reg.proxy.onehat.cn
Username: admin
Password: 
Error response from daemon: Get "https://reg.proxy.onehat.cn/v2/": remote error: tls: unrecognized name

需要修改配置文件,添加可信仓库insecure-registries

sudo nano /etc/docker/daemon.json
/etc/docker/daemon.json
{
        "exec-opts": [
                "native.cgroupdriver=systemd"
        ],
        "registry-mirrors": [
                "https://dockerproxy.com",
                "https://docker.mirrors.sjtug.sjtu.edu.cn"
        ], 
        "insecure-registries": [
                 "reg.proxy.onehat.cn"
        ]
}

修改完成后重启 docker 服务生效。

sudo service docker restart