centos7下如何离线安装docker和docker-compose

  • 来源:网络
  • 更新日期:2020-09-23

摘要:具体安装步骤如下:(推荐教程:docker教程)实测版本说明centos:7.5docker:19.03.5docker-compose:1.24.3官方资源下载地址自行下载需要的版本。 [docker](https://download.docker.co

具体安装步骤如下:

(推荐教程:docker教程)

实测版本说明

centos:7.5

docker:19.03.5

docker-compose:1.24.3

官方资源下载地址

自行下载需要的版本。
[docker](https://download.docker.com/linux/static/stable/x86_64/)
[docker-compose](https://github.com/docker/compose/releases)

上传到服务器

上传 install-docker-offline.sh docker.service docker-ce docker-compose-Linux-x86_64压缩包到任意的同一文件夹下  
建议到/home

执行

sh install-docker-offline.sh

其他的根据脚本提示操作

install.sh

#!/bin/sh
echo -e '作者:Teler'
echo -e '版本:v0.0.1'
echo -e '创建时间:2020-02-02'
echo -e '更新时间:2020-02-02 22:21'

echo -e '给自己赋权限\\n'
chmod +x ./$0

#初始化
function init(){
    clear
    echo -e '请选择操作\\n'
    echo -e '1.安装docker\\n'
    echo -e '2.安装docker-compose\\n'
    echo -e 'exit:退出'
    
    call
} 

#决定调用什么方法
function call(){
    echo -e '\\n'
    read -p '请输入:' INPUT
    case $INPUT in
        1)
        installDocker
        ;;
        2)
        installDockerCompose
        ;;
               
        *)
        #noFound
        echo '感谢使用........'
        exit
        ;;
    esac

    if [ $? -eq 0 ];then
        init
    fi 
}

#安装docker
function installDocker(){
    read -p '请输入完整的docker压缩包文件名:' FILENAME

    searchFile $FILENAME

    if [ $? -ne 0 ];then
        echo -e '\\n文件不存在'
        installDocker
    fi

    echo -e '\\n解压文件...'
    tar -xzvf $FILENAME
    if [ $? -eq 0 ];then
        echo -e '\\n将docker目录移到/usr/bin目录下...'
        cp docker/* /usr/bin/
        if [ $? -ne 0 ];then
            echo -e '\\n复制失败'
            exit
        fi
        echo -e '\\n将docker.service 移到/etc/systemd/system/ 目录...'
        cp docker.service /etc/systemd/system/
        if [ $? -eq 0 ];then
            echo -e '\\n添加文件权限...'
            chmod +x /etc/systemd/system/docker.service
            if [ $? -ne 0 ];then
                echo -e '\\n添加失败'
                exit
            fi
            echo -e '\\n重新加载配置文件...'
            systemctl daemon-reload
            if [ $? -ne 0 ];then
                echo -e '\\n加载失败'
                exit
            fi
            echo -e '\\n启动docker...'
            systemctl start docker
            if [ $? -ne 0 ];then
                echo -e '\\n启动失败'
                exit
            fi
            echo -e '\\n设置开机自启...'
            systemctl enable docker.service
            if [ $? -ne 0 ];then
                echo -e '\\n开机启动失败'
                exit
            fi
            echo -e '\\ndocker版本:'
            docker -v
        else
            echo -e '\\n复制失败'
            exit
        fi
    else
        echo -e '\\n解压失败'
        exit    
    fi
    return 0
}
#安装docker-compose
function installDockerCompose(){
    read -p '请输入完整的docker compose文件名:' FILENAME

    searchFile $FILENAME

    if [ $? -ne 0 ];then
        echo -e '\\n文件不存在'
        installDockerCompose
    fi

    echo -e '\\n复制文件到/usr/local/bin下 并重命名为docker-compose'
    cp -y $FILENAME /usr/local/bin/docker-compose
    if [ $? -ne 0 ];then
        echo -e '\\n赋予执行权限'
        chmod +x /usr/local/bin/docker-compose

        echo '\\ndocker-compose版本:'
        docker-compose -v
    else 
        echo '\\n复制失败'
    fi


    return 0
}

#暂未支持
function noFound(){
    echo -e '暂未支持'
    return 0
}

#检查文件是否存在
#存在返回0 不存在返回1
function searchFile(){
    if [ -f "$1" ]; then
        return 0
    else 
        return 1
    fi
}




init

docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
 
[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
ExecReload=/bin/kill -s HUP $MAINPID
# 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
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# 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
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
 
[Install]
WantedBy=multi-user.target