优雅的安装Docker以及Docker-compose(附带镜像加速哦)

前言

有人会问:为什么不直接apt 或者 yum 安装?
我的回答:我喜欢把控每个细节的感觉

安装了的需要卸载 Docker !!!
里面有两个文件可能直接在 linux 下载不下来,需要手动下载后上传到 linux ,脚本中会根据不同的 linux 架构输出不同的地址

安装脚本

使用说明:直接复制后重命名(随便): install_docker.sh
运行脚本方式1:chmod +x install_docker.sh && ./install_docker.sh
运行脚本方式2:bash install_docker.sh

#!/bin/bash

echoRed() {
    echo -e "\e[31m$1\e[0m"
}

echoGreen() {
    echo -e "\e[32m$1\e[0m"
}

# 获取当前文件夹
get_project_root() {
    project_root=$(pwd) #
}

# 获取系统架构
get_arch() {
    arch=$(uname -m)
}

# 下载 Docker-compose
download_docker_compose() {
    echoRed "如果下载不下来直接去手动下载后放到当前文件夹:https://github.com/docker/compose/releases/download/${docker_compose_version}/docker-compose-linux-${arch}"
    echoRed "然后注释掉结尾第 3 步 download_docker_compose 方法的调用"
    curl -o ${project_root}/docker-compose https://github.com/docker/compose/releases/download/${docker_compose_version}/docker-compose-linux-${arch}
}

# 下载 docker tar 包
download_docker_tar() {
    echoRed "如果下载不下来直接去手动下载后放到当前文件夹:https://download.docker.com/linux/static/stable/${arch}/docker-${docker_version}.tgz"
    echoRed "然后注释掉结尾第 4 步 download_docker_tar 方法的调用"
    curl -o ${project_root}/docker-${docker_version}.tgz https://download.docker.com/linux/static/stable/${arch}/docker-${docker_version}.tgz
}

# 安装 docker-compose
install_docker_compose() {
    mkdir -p /usr/local/bin
    chmod +x ${project_root}/docker-compose-linux-${arch}
    mv -f ${project_root}/docker-compose-linux-${arch} /usr/local/bin/docker-compose
}

# 写入 docker.service
write_docker_service() {
    mkdir -p /lib/systemd/system
    cat <<EOF >/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket containerd.service

[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
OOMScoreAdjust=-500
[Install]
WantedBy=multi-user.target
EOF
}
# 写入 docker 加速镜像
write_docker_daemon_json() {
    mkdir -p /etc/docker
    cat <<EOF >/etc/docker/daemon.json
{
   "registry-mirrors": [
       "https://mirror.ccs.tencentyun.com"
  ]
}
EOF
}

# 写入 docker.socket
write_docker_socket() {
    cat <<EOF >/lib/systemd/system/docker.socket
[Unit]
Description=Docker Socket for the API

[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target
EOF
}

# 写入 containerd.service
write_containerd_service() {
    cat <<EOF >/lib/systemd/system/containerd.service
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target
[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/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
}

# 安装 docker
install_docker() {
    # 解压docker二进制文件到 /usr/bin ,与官网保持一致
    tar -zxvf ${project_root}/docker-${docker_version}.tgz
    cp -f ${project_root}/docker/* /usr/bin
    rm -rf ${project_root}/docker
    # 创建 docker.socket
    systemctl daemon-reload
    groupadd docker >/dev/null 2>&1 || true
    systemctl start docker.socket
    systemctl enable docker.socket
    # 创建containerd.service
    systemctl start containerd.service
    systemctl enable containerd.service
    # 启动 docker
    systemctl start docker
    systemctl enable docker
    # 查看docker版本
    docker version
}

# 安装完成
install_complete() {
    echoGreen "Docker以及Docker-compose 已安装完成"
    echoGreen "可以手动清理以下安装文件:"
    echoGreen "1、${project_root}/docker-compose-linux-${arch}"
    echoGreen "2、${project_root}/docker-${docker_version}.tgz"
}

docker_version="20.10.23"
docker_compose_version="v2.17.2"

# 1、获取当前文件夹
get_project_root

# 2、获取系统架构
get_arch

# 3、下载 Docker-compose
download_docker_compose

# 4、下载 docker tar 包
download_docker_tar

# 5、安装 docker-compose
install_docker_compose

# 6、写入 docker.service
write_docker_service

# 7、写入 docker.socket
write_docker_socket

# 8、写入 containerd.service
write_containerd_service

# 9、写入 docker 加速镜像
write_docker_daemon_json

# 10、安装 docker
install_docker

# 11、安装完成
install_complete
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值