赞
踩
Docker has been widely adopted and is used to run and scale applications in production. Additionally, it can be used to start applications quickly by executing a single Docker command.
Docker已被广泛采用,并用于在生产中运行和扩展应用程序。 此外,它可以通过执行单个Docker命令来快速启动应用程序。
Companies also are investing more and more effort into improving development in local and remote Docker containers, which comes with a lot of advantages as well.
公司还投入越来越多的精力来改善本地和远程Docker容器的开发,这也具有很多优势。
You can get the basic information about your Docker configuration by executing:
您可以通过执行以下命令获取有关Docker配置的基本信息:
- $ docker info
-
- ...
- Storage Driver: overlay2
- Docker Root Dir: /var/lib/docker
- ...
The output contains information about your storage driver and your docker root directory.
输出包含有关存储驱动程序和docker根目录的信息。
A Docker container consists of network settings, volumes, and images. The location of Docker files depends on your operating system. Here is an overview for the most used operating systems:
Docker容器由网络设置,卷和映像组成。 Docker文件的位置取决于您的操作系统。 以下是最常用的操作系统的概述:
Ubuntu: /var/lib/docker/
Ubuntu: /var/lib/docker/
Fedora: /var/lib/docker/
Fedora的: /var/lib/docker/
Debian: /var/lib/docker/
Debian: /var/lib/docker/
Windows: C:\ProgramData\DockerDesktop
Windows: C:\ProgramData\DockerDesktop
MacOS: ~/Library/Containers/com.docker.docker/Data/vms/0/
MacOS: ~/Library/Containers/com.docker.docker/Data/vms/0/
In macOS and Windows, Docker runs Linux containers in a virtual environment. Therefore, there are some additional things to know.
在macOS和Windows中,Docker在虚拟环境中运行Linux容器。 因此,还有一些其他事情要知道。
Docker is not natively compatible with macOS, so Hyperkit is used to run a virtual image. Its virtual image data is located in:
Docker与macOS本身不兼容,因此Hyperkit用于运行虚拟映像。 其虚拟图像数据位于:
~/Library/Containers/com.docker.docker/Data/vms/0
~/Library/Containers/com.docker.docker/Data/vms/0
Within the virtual image, the path is the default Docker path /var/lib/docker
.
在虚拟映像中,该路径是默认Docker路径/var/lib/docker
。
You can investigate your Docker root directory by creating a shell in the virtual environment:
您可以通过在虚拟环境中创建外壳来调查Docker根目录:
$ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
You can kill this session by pressing Ctrl+a, followed by pressing k and y.
您可以通过按Ctrl + a ,然后按k和y终止此会话。
On Windows, Docker is a bit fractioned. There are native Windows containers that work similarly to Linux containers. Linux containers are run in a minimal Hyper-V based virtual environment.
在Windows上,Docker有点分散。 有些本机Windows容器的工作方式与Linux容器类似。 Linux容器在最小的基于Hyper-V的虚拟环境中运行。
The configuration and the virtual image to execute linux images are saved in the default Docker root folder.
执行Linux映像的配置和虚拟映像保存在默认Docker根文件夹中。
C:\ProgramData\DockerDesktop
C:\ProgramData\DockerDesktop
If you inspect regular images then you will get linux paths like:
如果您检查常规映像,则将获得linux路径,例如:
- $ docker inspect nginx
-
- ...
- "UpperDir": "/var/lib/docker/overlay2/585...9eb/diff"
- ...
You can connect to the virtual image by:
您可以通过以下方式连接到虚拟映像:
docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -i sh
There, you can go to the referenced location:
在这里,您可以转到参考位置:
- $ cd /var/lib/docker/overlay2/585...9eb/
- $ ls -lah
-
- drwx------ 4 root root 4.0K Feb 6 06:56 .
- drwx------ 13 root root 4.0K Feb 6 09:17 ..
- drwxr-xr-x 3 root root 4.0K Feb 6 06:56 diff
- -rw-r--r-- 1 root root 26 Feb 6 06:56 link
- -rw-r--r-- 1 root root 57 Feb 6 06:56 lower
- drwx------ 2 root root 4.0K Feb 6 06:56 work
Inside /var/lib/docker
, different information is stored. For example, data for containers, volumes, builds, networks, and clusters.
在/var/lib/docker
,存储了不同的信息。 例如,容器,卷,构建,网络和群集的数据。
$ ls -la /var/lib/docker total 152 drwx--x--x 15 root root 4096 Feb 1 13:09 . drwxr-xr-x 13 root root 4096 Aug 1 2019 .. drwx------ 2 root root 4096 May 20 2019 builder drwx------ 4 root root 4096 May 20 2019 buildkit drwx------ 3 root root 4096 May 20 2019 containerd drwx------ 2 root root 12288 Feb 3 19:35 containers drwx------ 3 root root 4096 May 20 2019 image drwxr-x--- 3 root root 4096 May 20 2019 network drwx------ 6 root root 77824 Feb 3 19:37 overlay2 drwx------ 4 root root 4096 May 20 2019 plugins drwx------ 2 root root 4096 Feb 1 13:09 runtimes drwx------ 2 root root 4096 May 20 2019 swarm drwx------ 2 root root 4096 Feb 3 19:37 tmp drwx------ 2 root root 4096 May 20 2019 trust drwx------ 15 root root 12288 Feb 3 19:35 volumes
The heaviest contents are usually images. If you use the default storage driver overlay2, then your Docker images are stored in /var/lib/docker/overlay2
. There, you can find different files that represent read-only layers of a Docker image and a layer on top of it that contains your changes.
最重的内容通常是图像。 如果使用默认的存储驱动程序overlay2,则您的Docker映像将存储在/var/lib/docker/overlay2
。 在这里,您可以找到不同的文件,这些文件分别代表Docker映像的只读层和其上包含您的更改的层。
Let’s explore the content by using an example:
让我们通过一个示例来探索内容:
$ docker image pull nginx $ docker image inspect nginx [ { "Id": "sha256:207...6e1", "RepoTags": [ "nginx:latest" ], "RepoDigests": [ "nginx@sha256:ad5...c6f" ], "Parent": "", ... "Architecture": "amd64", "Os": "linux", "Size": 126698063, "VirtualSize": 126698063, "GraphDriver": { "Data": { "LowerDir": "/var/lib/docker/overlay2/585...9eb/diff: /var/lib/docker/overlay2/585...9eb/diff", "MergedDir": "/var/lib/docker/overlay2/585...9eb/merged", "UpperDir": "/var/lib/docker/overlay2/585...9eb/diff", "WorkDir": "/var/lib/docker/overlay2/585...9eb/work" }, ...
The LowerDir contains the read-only layers of an image. The read-write layer that represents changes are part of the UpperDir. In my case, the NGINX UpperDir folder contains the log files:
LowerDir包含图像的只读层。 表示更改的读写层是UpperDir的一部分。 就我而言,NGINX UpperDir文件夹包含日志文件:
- $ ls -la /var/lib/docker/overlay2/585...9eb/diff
-
- total 8
- drwxr-xr-x 2 root root 4096 Feb 2 08:06 .
- drwxr-xr-x 3 root root 4096 Feb 2 08:06 ..
- lrwxrwxrwx 1 root root 11 Feb 2 08:06 access.log -> /dev/stdout
- lrwxrwxrwx 1 root root 11 Feb 2 08:06 error.log -> /dev/stderr
The MergedDir represents the result of the UpperDir and LowerDir that is used by Docker to run the container. The WorkDir is an internal directory for overlay2 and should be empty.
MergedDir表示Docker用于运行容器的UpperDir和LowerDir的结果。 WorkDir是overlay2的内部目录,应该为空。
It is possible to add a persistent store to containers to keep data longer than the container exists or to share the volume with the host or with other containers. A container can be started with a volume by using the -v option:
可以向容器添加持久性存储,以使数据保存的时间长于容器的存在,或者可以与主机或其他容器共享卷。 可以使用-v选项以卷启动容器:
$ docker run --name nginx_container -v /var/log nginx
We can get information about the connected volume location by:
我们可以通过以下方式获取有关已连接卷位置的信息:
$ docker inspect nginx_container ... "Mounts": [ { "Type": "volume", "Name": "1e4...d9c", "Source": "/var/lib/docker/volumes/1e4...d9c/_data", "Destination": "/var/log", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } ], ...
The referenced directory contains files from the location /var/log
of the NGINX container.
引用的目录包含来自NGINX容器的/var/log
位置的文件。
- $ ls -lah /var/lib/docker/volumes/1e4...d9c/_data
-
- total 88
- drwxr-xr-x 4 root root 4.0K Feb 3 21:02 .
- drwxr-xr-x 3 root root 4.0K Feb 3 21:02 ..
- drwxr-xr-x 2 root root 4.0K Feb 3 21:02 apt
- -rw-rw---- 1 root 43 0 Jan 30 00:00 btmp
- -rw-r--r-- 1 root root 34.7K Feb 2 08:06 dpkg.log
- -rw-r--r-- 1 root root 3.2K Feb 2 08:06 faillog
- -rw-rw-r-- 1 root 43 29.1K Feb 2 08:06 lastlog
- drwxr-xr-x 2 root root 4.0K Feb 3 21:02 nginx
- -rw-rw-r-- 1 root 43 0 Jan 30 00:00 w
It is recommended to use the Docker command to clean up unused containers. Container, networks, images, and the build cache can be cleaned up by executing:
建议使用Docker命令清理未使用的容器。 可以通过执行以下操作清除容器,网络,映像和构建缓存:
$ docker system prune -a
Additionally, you can also remove unused volumes by executing:
此外,您还可以通过执行以下操作来删除未使用的卷:
$ docker volumes prune
Docker is an important part of many people’s environments and tooling. Sometimes, Docker feels a bit like magic by solving issues in a very smart way without telling the user how things are done behind the scenes. Still, Docker is a regular tool that stores its heavy parts in locations that can be opened and changed.
Docker是许多人的环境和工具的重要组成部分。 有时候,Docker通过非常聪明的方式解决问题而又不告诉用户幕后事情是如何做的,有点像魔术。 不过,Docker是一种常规工具,可将重型零件存储在可以打开和更改的位置。
Sometimes, storage can fill up quickly. Therefore, it’s useful to inspect its root folder, but it is not recommended to delete or change any files manually. Instead, the prune commands can be used to free up disk space.
有时,存储空间可能会很快用完。 因此,检查其根文件夹很有用,但不建议手动删除或更改任何文件。 而是可以使用prune命令释放磁盘空间。
I hope you enjoyed the article. If you like it and feel the need for a round of applause, follow me on Twitter.
希望您喜欢这篇文章。 如果您喜欢它并感到需要掌声,请在Twitter上关注我 。
I am a co-founder of our revolutionary journey platform called Explore The World. We are a young startup located in Dresden, Germany and will target the German market first. Reach out to me if you have feedback and questions about any topic.
我是我们的创新旅程平台“ 探索世界”的共同创始人。 我们是一家年轻的初创公司,位于德国德累斯顿,并将首先瞄准德国市场。 如果您有关于任何主题的反馈和问题,请与我联系。
Happy Docker exploring :)
快乐的Docker探索:)
Docker storagediver documentation
Docker Storagediver文档
Docker storagediver documentationhttps://docs.docker.com/storage/storagedriver/
Docker storagediver文档https://docs.docker.com/storage/storagedriver/
Documentation Overlay filesystem
文档覆盖文件系统
Documentation Overlay filesystemhttps://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt
文档覆盖文件系统https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt
翻译自: https://www.freecodecamp.org/news/where-are-docker-images-stored-docker-container-paths-explained/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。