不建议在生产环境中使用二进制文件安装Docker,因为它们不会随着安全更新而自动更新。
前提
官网地址
在尝试从二进制文件安装Docker之前,请确保您的主机满足以下先决条件:
• A 64-bit installation
• Linux内核的3.10或更高版本。建议您的平台使用最新版本的内核
• iptables版本1.4或更高版本
• git版本 1.7 或更高版本
• ps可执行文件,通常由或类似procps的包提供。
• XZ Utils 4.9 或更高版本
• 正确安装的cgroupfs层次结构;单个无所不包的cgroup装载点是不够的
操作系统注意事项
如果可能,启用SELinux或AppArmor。 如果您的Linux发行版支持AppArmor或SELinux中的任何一个,那么推荐使用这两个版本。这有助于提高安全性并阻止某些类型的利用。查看您的Linux发行版的文档,以获得启用和配置AppArmor或SELinux的说明。
安全警告
如果启用了其中一种安全机制,不要禁用它作为使Docker或其容器运行的变通办法。相反正确配置它以修复任何问题。
安装
1.下载docker二进制版本
wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.9.tgz
2.解压出二进制文件
tar -xf docker-20.10.9.tgz
cp docker/* /usr/bin/
docker -v
3.配置systemctl 启动命令并设置开机启动
以上步骤安装成功后,shell命令行下 sudo dockerd & 即可启动docker,但一般我们采用 systemctl 方式启动docker服务并设置开机启动
创建 /usr/lib/systemd/system/docker.service 文件
vim /usr/lib/systemd/system/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
# 默认情况下不为cgroups使用systemd,因为委托问题仍然存在,而且systemd目前不支持docker运行的容器所需的cgroup特性集
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
# 由于内核中的会计开销,使用非零Limit*s会导致性能问题。我们建议使用cgroup来进行容器本地计费
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# 注释TasksMax如果您的systemd版本不支持它,只有systemd 226和更高版本支持此选项
TasksMax=infinity
TimeoutStartSec=0
# 将delegate设置为yes,这样systemd就不会重置docker容器的cgroups
Delegate=yes
Restart=on-failure
# 请注意在systemd 229中,StartLimit*选项已从“Service”移至“Unit”。旧的和新的位置都被systemd 229及以上接受,所以使用旧的位置使它们在systemd的任何版本中工作
StartLimitBurst=3
# 注意,在systemd 230中,StartLimitInterval被重命名为StartLimitIntervalSec。旧的和新的名称都被systemd 230及以上系统接受,因此使用旧的名称使此选项适用于任何版本的systemd
StartLimitInterval=60s
# 仅终止docker进程,而不是cgroup中的所有进程
KillMode=process
OOMScoreAdjust=-500
[Install]
WantedBy=multi-user.target
# 需要什么参数自行添加
详解 参数
更改Docker文件驱动 --exec-opt native.cgroupdriver=cgroupfs
忽略https协议连接目标镜像库 --insecure-registry=http://***
修改默认容器存储路径 --graph /home/docker
采用 systemctl 设置自动重启
systemctl daemon-reload && systemctl start docker.service && sudo systemctl enable docker
4.验证docker 是完成安装
ps ef |grep docker
# 添加配置文件
cat >/etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/var/lib/docker"
}
EOF
systemctl restart docker
Do your best for the purest dream at the most beautiful age