安装

二进制包下载地址

Index of linux/static/stable/x86_64/

安装步骤

1.解压docker二进制包到当前目录

tar -zxvf docker-19.03.9.tgz

2.将docker二进制文件复制到/usr/bin目录下

主要是为了让操作系统直接识别docker相关命令,这样的步骤也可以通过添加PATH环境变量进行操作,不做过多赘述;

cp docker/* /usr/bin

3.创建docker.service文件,加入systemctl进行管理

# 创建文件
cat > /etc/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
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
EOF

# 给文件赋予可执行权限
chmod a+x /etc/systemd/system/docker.service

4.创建docker服务配置文件

# 创建docker配置文件目录
mkdir -p /etc/docker

# 注意,如果不设置docker默认部署目录配置项docker-root,
# 那么docker服务将被部署到/var/lib/docker目录下
# 如果docker-root目录不存在,请先手动创建目录
cat > /etc/docker/daemon.json << EOF
{
    "data-root": "/home/docker_data",
    "log-driver": "json-file",
    "log-opts": {"max-size": "500m", "max-file": "3"}
}
EOF

5.启动docker服务

systemctl start docker

6.验证docker服务是否正常启动

docker ps -a

自动安装脚本

集合以上步骤的脚本(由于不知道如何直接上传文件,这里直接贴上所有代码)

#!/bin/bash -
#===============================================================================
#
#          FILE: deploy_docker.sh
#
#         USAGE: sh deploy_docker.sh
#                1.将deploy_docker.sh和${DOCKER_TAR_FILE}放到同一目录下(任意目录)
#                2.修改docker运行目录(注意这个目录挂载容量不要过小)
#                3.开始部署(请确保执行用户为root或拥有sudo权限)
#                   root用户:sh deploy_docker.sh docker二进制包路径
#                   sudo用户:sudo sh deploy_docker.sh docker二进制包路径
#
#   DESCRIPTION: 自动部署二进制版本docker服务
#
#       OPTIONS: ---
#  REQUIREMENTS: ---
#          BUGS: ---
#         NOTES: ---
#        AUTHOR: HU SONG (HU SONG), 598897034@qq.com
#  ORGANIZATION: ---
#       CREATED: 2020年12月15日 15时15分29秒
#      REVISION: 0.0.2
#===============================================================================

# docker 运行目录
# 根据想要部署目录进行修改,如果目录不存在,则脚本会自动创建该目录
# 注意这里最后一级目录不建议取名docker,可能与二进制解压包解压目录造成冲突
DOCKER_ROOT=/home/docker_data

# docker 二进制包名
DOCKER_TAR_FILE=$1

if [ -z ${DOCKER_TAR_FILE} ]; then
    echo "ERROR: 请传入正确的二进制docker包路径"
    echo "USAGE: $0 docker二进制包路径"
    exit 1
fi

echo "[*] create docker root direcorty ..."
mkdir -p ${DOCKER_ROOT}

echo "*** start deploy docker server ***"
echo "[*] decompress docker tar file ..."
tar -zxvf ${DOCKER_TAR_FILE}

echo "[*] copy docker binary file to /usr/bin ..."
cp docker/* /usr/bin/

echo "[*] check docker version ..."
docker -v

echo "[*] register docker service ..."
cat > /etc/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
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
EOF

chmod a+x /etc/systemd/system/docker.service

echo "[*] create docker config and modify it ..."
mkdir -p /etc/docker 
cat > /etc/docker/daemon.json << EOF
{
    "data-root": "${DOCKER_ROOT}",
    "log-driver": "json-file",
    "log-opts": {"max-size": "500m", "max-file": "3"}
}
EOF

echo "[*] start docker service ..."
systemctl start docker

echo "[*] check docker status ..."
systemctl status docker

docker ps -a

echo "*** deploy finished ***"

卸载

完全卸载

1.删除所有容器和镜像

这一步可以不做,直接第2步,停止服务既可

# 停止所有容器
docker stop $(docker ps -a -q)
# 删除所有容器
docker rm $(docker ps -a -q)
# 删除所有镜像
docker rmi $(docker iamges -a -q)

2.停止docker服务

systemctl stop docker

3.删除docker配置文件目录

rm -rf /etc/docker

4.删除docker service文件目录

rm -rf /etc/systemd/system/docker.service

5.删除docker部署目录

# 如果配置文件中指定了docker-root配置项,则删除该配置项对应的目录
rm -rf /home/docker_data
# 如果配置项中未指定docker-root配置项,则docker会被部署到/var/lib/docker目录下
rm -rf /var/lib/docker

6.删除docker可执行文件

cd /usr/bin
rm -rf containerd containerd-shim ctr docker dockerd docker-init docker-proxy runc

7.删除docker0网桥

ifconfig docker0 down
brctl delbr docker0

8.删除docker其他文件

# 这里默认网络命令空间需要先卸载再删除,否则会提示:
# device or resource busy
umount /var/run/docker/netns/default
rm -rf /var/run/docker