二进制部署Docker

不建议在生产环境中使用二进制文件安装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

猜你喜欢

转载自blog.csdn.net/qq_50573146/article/details/126358086