1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本

2、使用 root 权限登录 Centos。确保 yum 包更新到最新
1 |
yum update |
3.卸载旧版本
1 2 3 4 5 6 7 8 |
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine |
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
1 |
yum install -y yum-utils device-mapper-persistent-data lvm2 |
5、设置yum源
1 2 3 |
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
6、可以查看所有仓库中所有docker版本,并选择特定版本安装(可省略…)
1 |
yum list docker-ce --showduplicates | sort -r |
7. 安装docker
1 2 3 |
yum install --allowerasing docker-ce docker-ce-cli containerd.io #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版 yum install -y docker-ce-18.09.0-3.el7 #按照版本安装 yum install -y docker-ce-20.10.9-3.el7 #新 |
8.加入开机启动
1 2 |
systemctl enable docker #设置docker开机启动 systemctl start docker #启动docker |
9. 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
1 |
docker version |

10.还可以 通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。
1 |
docker run hello-world |

看到此显示信息,说明docker已经安装成功。
推送镜像成功后如何查看本地仓库镜像列表呢,往下看
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
1、获取仓库类的镜像: [root@shanghai docker]# curl -XGEThttp://192.168.1.8:5000/v2/_catalog {"repositories":["nginx"]} 2、获取某个镜像的标签列表: [root@shanghai docker]# curl -XGEThttp://192.168.1.8:5000/v2/image_name/tags/list {"errors":[{"code":"NAME_UNKNOWN","message":"repositoryname not known toregistry","detail":{"name":"image_name"}}]} [root@shanghai docker]# curl -XGEThttp://192.168.1.8:5000/v2/nginx/tags/list {"name":"nginx","tags":["latest"]} |
docker-composer安装
1 2 3 4 5 |
https://docs.docker.com/compose/install/ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose |
修改docker存放目录(有2种办法)
1.修改docker.service
1 |
vim /usr/lib/systemd/system/docker.service |
1 2 |
在ExecStart 后面添加 --graph [你的docker存放目录] ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --graph /var/data/docker |

2.修改daemon.json
1 2 3 4 5 6 7 8 9 |
vim /etc/docker/daemon.json { "registry-mirrors": ["https://registry.docker-cn.com"], "data-root": "/home/data/docker" "log-driver":"json-file", "log-opts": {"max-size":"100m"} } |
1 2 3 |
systemctl enable docker systemctl daemon-reload systemctl restart docker |
以下内容docker单用户可以忽略
修改docker的cgroup driver为systemd
1、什么是cgroups?
1 2 3 4 5 6 7 8 9 |
cgroups(Control Groups) 是 linux 内核提供的一种机制 它可以限制、记录任务组所使用的物理资源 它是内核附加在程序上的hook, 使程序运行时对资源的调度触发相应的钩子, 达到资源追踪和限制资源使用的目的 |
2、cgroupfs是什么?
1 2 3 4 5 6 7 |
docker默认的Cgroup Driver是cgroupfs cgroupfs是cgroup为给用户提供的操作接口而开发的虚拟文件系统类型, 它和sysfs,proc类似,可以向用户展示cgroup的hierarchy,通知kernel用户对cgroup改动 对cgroup的查询和修改只能通过cgroupfs文件系统来进行 |
3、为什么要修改为使用systemd(因为k8s默认推荐systemd)
1 2 3 4 5 6 7 |
Kubernetes 推荐使用 systemd 来代替 cgroupfs 因为systemd是Kubernetes自带的cgroup管理器, 负责为每个进程分配cgroups, 但docker的cgroup driver默认是cgroupfs, 这样就同时运行有两个cgroup控制管理器(并且docker是cgrooupfs ,kubelet是systemd ,不一致), 当资源有压力的情况时,这2个组件不同德cgroup控制器有可能出现不稳定的情况,最好是统一他们, 或者都用cgroup, 或者都用systemd |
如果不修改配置,会在kubeadm init时有提示:
1 2 3 |
[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/ |
4.开始修改(任选一种方式)
4.1、 编辑docker的配置文件,如果不存在就创建,增加如下一行
1 2 3 4 |
vi /etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"] } |
4.2、编辑docker.service
1 |
vim /usr/lib/systemd/system/docker.service |
1 |
在 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 后面添加 --cgroup-driver=systemd |
1 |
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --cgroup-driver=systemd |
5、 修改完成后重启docker服务
1 |
systemctl restart docker |
6、查看
1 |
docker info | grep Cgroup |
1 2 3 |
#cgroup报错解析 https://www.bbsmax.com/A/gGdXBArvJ4/ https://www.jianshu.com/p/8a62750c0eef |
- 本文固定链接: https://www.yoyoask.com/?p=28
- 转载请注明: shooter 于 SHOOTER 发表