您现在的位置是:首页 >技术交流 >docker的底层原理,带你上天网站首页技术交流
docker的底层原理,带你上天
1、docker的层级怎么看
先查看当前机器上有哪些镜像
docker images
这里选看mysql的层级
docker image inspect mysql:5.7.29 命令。其中RootFS部分则是表示了分层信息。
2、查看docker的系统信息
因为这台机器的docker不是我安装的,所以不知道具体的根目录在哪里,可以使用下面的命令
docker info
上面可以看到docker的信息
3、Docker 的默认工作目录 各文件夹的意义
Docker 的默认工作目录是 /var/lib/docker/,该目录包含了 Docker 的所有数据,包括镜像、容器、卷、网络等等。下面是 /var/lib/docker/ 目录下的一些常见子目录及其意义:
1. /var/lib/docker/containers/: 包含所有 Docker 容器的数据,每个容器会在该目录下创建一个子目录,存储该容器的相关数据,例如容器的元数据、日志和文件系统等。
2. /var/lib/docker/image/: 包含所有 Docker 镜像的数据,每个镜像会在该目录下创建一个子目录,存储该镜像的相关数据,例如镜像的元数据、层信息等。
3. /var/lib/docker/volumes/: 包含所有 Docker 卷的数据,每个卷会在该目录下创建一个子目录,存储该卷的相关数据,例如卷的元数据和卷中的文件。
4. /var/lib/docker/network/: 包含所有 Docker 网络的数据,每个网络会在该目录下创建一个子目录,存储该网络的相关数据,例如网络的元数据和配置等。
5. /var/lib/docker/plugins/: 包含所有 Docker 插件的数据,每个插件会在该目录下创建一个子目录,存储该插件的相关数据,例如插件的元数据和配置等。
6. /var/lib/docker/swarm/: 包含 Docker Swarm 的相关数据,例如节点的元数据、服务的配置、证书和密钥等。
7./var/lib/docker/overlay2:镜像和容器的层文件的实际存储目录
4、docker守护程序的日志在哪
Docker 守护进程的日志记录在系统日志中,具体位置和命名方式可能因操作系统而异。下面是一些常见的操作系统和对应的 Docker 日志文件位置:
- Ubuntu 16.04及更早版本: /var/log/upstart/docker.log
- Ubuntu 18.04及更高版本: /var/log/syslog
- CentOS 7: /var/log/messages
- Debian/Ubuntu: /var/log/daemon.log
5、docker Overlay2 文件系统原理
拉取一个nginx镜像,观察拉取过程:可以看到镜像一共被分为6层拉取。
/var/lib/docker/overlay2/ 目录下也多了6个文件夹
可以通过上面的docker image inspect nginx查看层级
在下载镜像时,Docker Daemon会检查镜像中的镜像层与宿主机文件系统中的镜像层进行对比,如果存在则不下载,只下载不存在的镜像层。
分层的原因:
- 分层最大的一个好处就是共享资源
- 有多个镜像都从相同的base镜像构建而来,那么宿主机只需在磁盘上保存一份base镜像;
- 同时内存中也只需加载一份base镜像,就可以为所有容器服务了,而且镜像的每一层都可以被共享。