您现在的位置是:首页 >其他 >十三、Docker调优网站首页其他

十三、Docker调优

margu_168 2024-10-05 00:01:02
简介十三、Docker调优

本章节将分享一些常见的docker调优方法,不尽完全,慢慢优化。

一、修改数据存放目录
由于docker默认的数据存放目录/var/lib/docker/,该目录默认是创建在根文件目录下的。而我们一般在安装系统时给系统盘分配的磁盘空间一般不会太大,一般情况下几十G到一百G,用一段时间后可能造成系统盘被占满。所以有时候我们需要修改docker的默认目录。

1)首先通过df -h查看文件系统的挂载和使用情况

[root@k8s-m3 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 3.9G     0  3.9G   0% /dev
tmpfs                    3.9G     0  3.9G   0% /dev/shm
tmpfs                    3.9G  304M  3.6G   8% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root   38G   27G   11G  73% /
/dev/sda1               1014M  181M  834M  18% /boot
/dev/mapper/centos-home   19G   33M   19G   1% /home
tmpfs                    3.9G   12K  3.9G   1% /var/lib/kubelet/pods/e65ed600-84a6-48d1-a05d-ff75703deb37/volumes/kubernetes.io~secret/sleep-token-gg8gq
......

2)新创建目录,并将准备好的数据盘挂载到该目录下:

[root@k8s-m3 ~]# mkdir /data/docker
[root@k8s-m3 ~]# fdisk  /dev/sdb
[root@k8s-m3 ~]# mkfs.ext4 /dev/sdb1
[root@k8s-m3 ~]# blkid /dev/sdb1 -sUUID -ovalue
e197c176-49c4-4dae-86e3-d5d7d96b6510
[root@k8s-m3 ~]# mount UUID=$(blkid /dev/sdb1 -sUUID -ovalue)  /data/docker
[root@k8s-m3 ~]# echo "mount UUID=$(blkid /dev/sdb1 -sUUID -ovalue)  /data/docker" >> /etc/rc.d/boot.local

3)先关闭docker服务,目的为了在拷贝过程中容器数据发生改变。通过cp -R将docker默认目录/var/lib/docker下的文件拷贝到/data/docker目录下:

[root@k8s-m3 ~]#cp -R  /var/lib/docker/* /data/docker

4)修改docker的相关配置,打开/usr/lib/systemd/system/docker.service文件,在ExecStart后面添加 --graph=/data/docker
或者直接修改/etc/docker/daemon.json文件,如下。其他的修改方法请自行测试,应该还可以通过修改其他文件实现该功能。

[root@k8s-m3 ~]# vim /etc/docker/daemon.json 
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": [
      "https://fz5yth0r.mirror.aliyuncs.com",
      "http://hub-mirror.c.163.com/",
      "https://docker.mirrors.ustc.edu.cn/",
      "https://registry.docker-cn.com"
  ],

  "insecure-registries":["192.168.2.142:5000"],
  "data-root":"/data/docker", 

  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}

4)修改完毕之后重启docker服务,并且通过docker info查看docker信息,发现docker目录已经改变:

[root@k8s-m3 ~]# systemctl daemon-reload 
[root@k8s-m3 ~]# systemctl restart docker
[root@k8s-m3 ~]# docker info

5)docker ps -a查看容器,之前的容器都还在。

二、镜像加速
由于种种原因,国内从 Docker Hub 拉取镜像有时会比较慢或者根本就拉取不下来,此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务,例如:

阿里云加速器:(登陆阿里云 -> 找到容器镜像服务 -> 左侧镜像工具 -> 镜像加速器 -> 复制加速器地址进行配置)地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors (应该能跳转到自己的)
1、安装/升级Docker客户端
推荐安装1.10.0以上版本的Docker客户端,参考文档docker-ce

2、配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户
可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://5sssm2l6.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

网易云加速器 https://hub-mirror.c.163.com
百度云加速器 https://mirror.baidubce.com

由于镜像加速服务器可能出现宕机,建议同时配置多个镜像加速器,国内各大云服务商(腾讯云、阿里云、百度云)均提供了 Docker 镜像加速服务。各个镜像站测试结果请到 https://github.com/docker-practice/docker-registry-cn-mirror-test/actions查看。
如下是我的配置的镜像加速服务:

[root@k8s-m1 ~]# cat /etc/docker/daemon.json 
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": [
      "https://fz5yth0r.mirror.aliyuncs.com",
      "http://hub-mirror.c.163.com/",
      "https://docker.mirrors.ustc.edu.cn/",
      "https://registry.docker-cn.com"
  ],
  "insecure-registries": [
    "192.168.2.140"
  ],
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}

注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。之后重新启动服务。

[root@k8s-m1 ~]# systemctl daemon-reload
[root@k8s-m1 ~]# systemctl restart docker

检查加速器是否生效,执行 docker info,如果从结果中看到了如下内容,说明配置成功。

 Registry Mirrors:
  https://fz5yth0r.mirror.aliyuncs.com/
  http://hub-mirror.c.163.com/
  https://docker.mirrors.ustc.edu.cn/
  https://registry.docker-cn.com/
 Live Restore Enabled: false

三、镜像替代
有时候我们部署k8s的时候,发现很多镜像默认是从k8s.gcr.io 拉取镜像,绝大多数时候都很慢或者根本就拉取不下来。这个时候就可以镜像替代,如:
k8s.gcr.io/coredns:1.7.0镜像可以用 registry.aliyuncs.com/google_containers/coredns:1.7.0 替代。
事实上,我们一般部署k8s的时候都是改变了拉取镜像的仓库,如下通过命令行指定:
–image-repository registry.aliyuncs.com/google_containers
或者修改配置文件。
imageRepository: registry.aliyuncs.com/google_containers (高版本地址已经发生改变)
某些云服务商提供了 仅供内部 访问的镜像服务,当您的 Docker 运行在云平台时可以选择它们。如阿里云、腾讯云、AWS等等。

其他优化,如存储格式、日志大小就不一一介绍了,比较简单。更多优化方法后期介绍。

更多关于docker容器和运维的相关知识,可以前往博客主页查看。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。