安装
二进制包下载地址
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