第5节 Docker配置优化

docker 工作是基于镜像,而镜像存储的驱动,通过docker info可见是overlay2。

image-20240401113801442

image-20240401114202132

这些存储引擎不管是那种,都是联合文件系统

image-20240401114700537

比如ext4 xfs的文件系统,磁盘挂载到目录,是不可以重复挂载的,也就是一个目录你两个硬盘挂载的时候,前面一个就被顶掉了。

而docker的联合文件系统时可以把多个设备(所谓设备就是硬盘、分区、lvm这些)挂载到一个目录下,其效果就是这个目录下既可以看到设备1上的数据,也能看到设备2上的数据。

​ 为什么可以采用联合文件系统,就是因为docker的image是多层镜像。

image-20240401115713714

image是一层层构建出来的

容器生成,是复制一份镜像,并在其上又添加了一层writable可读可写层,这层就用来存放容器自己的数据--比如LOG。

docker stop xxx ,就是把复制过来的image层删了,其上的容器子深深的writable层还在的。

image-20240401120512888

容器启动的时候其实是可以修改存储驱动的

image-20240401133623870

不过,想来一般是不会去改的。确认是overlay2就行了。万一不是就换docker版本~

查看支持的文件系统👇注意aufs是aufs,autofs是autofs,不要瞎搞

image-20240401134116982

docker优化

下载源,其实应该私有库作缓存来弄比如nexus

可以使用阿里的个人镜像加速地址

image-20240401135538590

image-20240401140127212

其实最好是用私有缓存库比如nexushttps://cloud.tencent.com/developer/article/1764866

socket通信-docker-client和server之间的通信

image-20240401142344030

默认走的本地socket文件,无法支持远端的调用。

配置方法👇下图绿框框;但是用的不太多。一般就是本地连接。

image-20240401142523157

该配置文件类似cli里的-H选项,既有socket文件也有tcp,可能就是写两个-H咯

image-20240401143339943

还可以改service文件

image-20240401143508966

先通过修改daemon.json去试下

image-20240401165325655

但是报错了👆

换个思路,去service文件里改改

image-20240401170558409

然后把daemon.json里的hosts那行删了,修改为

image-20240402171915073

再reload 和 restart

image-20240401172813797

此时tcp和socket文件都好了

image-20240401172847800

image-20240401173610011

此时就可以远端client 调用 server 了,也就是docker cli 连接 docker server引起后 调用命令了

image-20240402173332905

然后远程跑一个nginx看看,此时容器都是退出的

image-20240402173559934

去远端windows的cmd里执行远程cli,run一个nginx

image-20240402173718678

然后去server看下docker ps

image-20240402173933777

这就实现了远程执行docker cli

同时curl 瞧瞧,因为是容器里的ip没有暴露出来呢,所以ipsect看到ip后宿主机上curl下👇

image-20240402174041031

要注意docker engine也就是服务端在哪,容器就运行在哪里,客户都的cli只是一个连接调用工具,很好理解,好比mysql 远程执行命令一样。

将来在K8S里的跨主机的远程docker调用可能就是用的这个。目前docker学习阶段还用不到。

image-20240402180552713

image-20240402180924506

看来是查不到就往下一个地址查找。

现在都是systemd了👇image-20240402181155813

不用改了,以前是这么改的👇也是daemon.json里

image-20240402181223650

还有这个容器和镜像存放的路径-迁移就是复制粘贴该路径

image-20240402181409786

默认是这里👆,这么改👇改到单独的高性能ssd上去,前文讲过了,目录不该直接挂到新磁盘上去,或者该目录这个目录挂过去也行👇

在旧版本的 Docker 中,可以使用 "graph" 指定 Docker 存储容器和镜像的路径。但是在较新的 Docker 版本中,该选项已被废弃,取而代之的是 data-root。因此,您可以尝试将 "graph":"/data/docker" 替换为 "data-root":"/data/docker"

修改后的配置文件内容如下所示:

jsonCopy code{
  "registry-mirrors":["https://si7y70hh.mirror.aliyuncs.com/"],
  "data-root":"/data/docker"
}

修改完成后保存文件,并尝试重新启动 Docker 服务。您可以执行以下命令:

bashCopy codesystemctl daemon-reload
systemctl restart docker

还可以在service文件里配置

image-20240403094352046

systemctl daemon-reload下,再重启一下systemctl restart docker

此时,会自动创建文件夹,但是docker images里是空的了,docker ps -a也是空的,之前退出的那些容器都没了。

image-20240403094723888

原来的容器和镜像的文件都没过去

image-20240403095136140

image-20240403095416380

max-concurrent-dowload|upload,同时拉去和上传的限制

image-20240407160040343

这个操作会涉及max-concurrent-dowload参数的限制,但不是完全涉及,如果images在本地就不用担心,知识限制了和docker 仓库之间的下载/上传的并发数。

日志的问题

1、容器的日志都是默认放在硬盘上的

2、日志的大小要限制下

3、日志文件也是落在容器和镜像存放的路径/var/lib/docker下的

通过docker info可见,👇当然我的路径改过的

image-20240407162310329

log就在docker root下的container文件夹里的每个容器文件夹里。

image-20240407162632176

image-20240407162713268

限制配置

image-20240407162944133

日志的最大值和滚动覆盖👆

docker日志越来越大把硬盘撑满了,如何解决

1、上图👆限制+滚动日志

2、docker也是在容器和镜像的目录下的也就是/var/lib/docker/,将这个目录挂到单独的磁盘就行了。

3、周期清除无用的镜像和容器👇

curl伪装浏览器,也就是伪装访问方式-A可以-H也行

image-20240407171220746

实验

1、先跑一个nginx

image-20240407171513771

2、然后curl访问这个容器的ipimage-20240407171550512

image-20240407171619823

image-20240407171633114

image-20240407171727841

这就使用curl 伪装了一个用户访问方式--user-agent

3、找到有该user-agent关键词的日志

总之就在这些文件里

image-20240407172254206

很贱的grep -r就行了,不要用-R

image-20240407173417843

-R是会继续搜索软连接的,比如上图的第一个No such file or directory就是一个ln -s👇这种搜索一般没必要

image-20240407173521193

image-20240407180954931

将来日志会越来越大,而且不仅仅日志,images和容器也会越来越多,之前的处理方式有一种(是在runner上的操作可能会简单的),

清除无用的镜像容器慎用

image-20240407181257657

live-restore

image-20240407183134092

如果docker服务重启了,容器会不会重启?不会,docker重启,容器就停掉了👇image-20240407184241248

image-20240408092457691

image-20240408092652340

反之删除配置文件里的live-restore,重启docker后,所有容器就停了

image-20240408092839909

image-20240408092903232

Copyright 🌹 © oneyearice@126.com 2022 all right reserved,powered by Gitbook文档更新时间: 2024-08-06 11:16:22

results matching ""

    No results matching ""