Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker存储-获得外行';答案_Docker_Storage_Dockerfile_Windows Server 2016 - Fatal编程技术网

Docker存储-获得外行';答案

Docker存储-获得外行';答案,docker,storage,dockerfile,windows-server-2016,Docker,Storage,Dockerfile,Windows Server 2016,我刚刚发现了Docker——我发现了这么多信息,但我似乎无法直接回答这个选项。如果有人能根据我的理解给我一个清晰的解释,我将不胜感激 我正在本地下载docker映像—比如说,使用Microsoft/dotnet samples:dotnetapp nanoserver从Microsoft下载的默认映像我不知道该映像下载到哪里?是否将其作为程序下载并安装在主机上,并使用一个控制容器的独立脚本?下载量约为1.3 Gig,因为它包含.NETCore 在另一个例子中,如果我下载apache2以作为web

我刚刚发现了Docker——我发现了这么多信息,但我似乎无法直接回答这个选项。如果有人能根据我的理解给我一个清晰的解释,我将不胜感激

我正在本地下载docker映像—比如说,使用Microsoft/dotnet samples:dotnetapp nanoserver从Microsoft下载的默认映像我不知道该映像下载到哪里?是否将其作为程序下载并安装在主机上,并使用一个控制容器的独立脚本?下载量约为1.3 Gig,因为它包含.NETCore

在另一个例子中,如果我下载apache2以作为web服务器运行,它是否会将其安装在主机系统的默认路径中,但我要使用的每个容器都会插入其中,或者每个容器都包含它的独立版本的apache2

我问这个问题是因为我找不到模仿这些程序文件大小的文件

我知道它们不是完整的VM,但我在哪里可以找到与容器关联的文件

我正在使用Windows Server 2016和Mac,因为我想对容器进行一些试验。

映像是一个文件系统 Docker映像是封装的文件系统。内部的软件和文件没有直接安装到您的系统上

你可以像想象.zip文件一样想象Docker图像。你可以从某处下载一个.zip文件,它是一个单独的文件。它可能包含一个文件,或者几十个文件,或者一个目录和文件的嵌套树。但在您的磁盘上,它作为一个文件存在

Docker图像是类似的(至少在概念上……细节更复杂)

图像存储 存储图像的位置因平台而异。在Linux系统上,它们通常位于
/var/lib/docker
下。我不知道它们在Windows上的存储位置,但这是一个或多或少不透明的存储。不管怎样,在里面乱翻也不会对你透露太多

要查看您拥有的内容,应使用
docker images
命令。它将显示您在本地存储的图像

正如我前面所说,每个图像可能由多个层组成。默认情况下,该命令将仅显示运行容器所需的顶层。从技术上讲,还有其他层,您可以使用
docker images-a
查看所有层

软件安装在哪里? 下载Apache映像时,系统上根本没有安装任何东西。将下载并存储图像文件。隐藏在里面的是Apache和Apache运行所需的一切,但Apache并没有安装到任何地方的Windows操作系统上

当您想要使用Apache时,您将运行一个容器。Docker获取Apache映像,并将其用作起始模板,创建一个正在运行的进程容器,Apache正在其中运行。这与您的操作系统是隔离的。Apache只在容器内部运行

如果从Apache映像运行第二个容器,那么现在有两个完全独立的Apache实例在运行,每个实例都在各自独立的文件系统环境中

我在哪里可以找到这些文件? 如果您只想查看容器文件系统,可以在交互模式下启动容器,并运行shell,而不是它通常运行的任何程序(如Apache)。例如,如果您有一个映像
apache:latest
,则可以执行以下操作:

docker run --rm -it apache:latest bash
这将运行一个
apache:latest
的实例,但它不会启动apache,而是运行一个bashshell并将您放入其中

--rm
标志适用于此类情况。它告诉Docker在其进程退出时移除正在运行的容器。这样的话,对于像这样的“只是看东西”容器,它会在自己之后进行清理

-it
实际上是两个标志
-i
是交互模式,
-t
分配终端。当您想要直接与容器交互时,这是一个要传递的公共标志

进入后,您可以使用常用命令查看文件和目录列表。但请注意,许多容器都被剥离。你并不总是拥有你习惯拥有的所有工具。Linux中的
ls
之类的东西通常都有,但很多东西都没有

当你环顾四周想退出时,只需退出即可

在进程运行时四处查看 您还可以在Apache运行时查看容器。首先正常启动

docker run -d apache:latest
这将返回一个容器ID。您还可以从
docker ps
获取ID。然后,您可以通过执行shell来附加到具有该ID的容器

docker exec -it <container_id> bash
docker exec-it bash
现在您在shell中的容器中,但Apache正在其中运行。

映像是一个文件系统 Docker映像是封装的文件系统。内部的软件和文件没有直接安装到您的系统上

你可以像想象.zip文件一样想象Docker图像。你可以从某处下载一个.zip文件,它是一个单独的文件。它可能包含一个文件,或者几十个文件,或者一个目录和文件的嵌套树。但在您的磁盘上,它作为一个文件存在

Docker图像是类似的(至少在概念上……细节更复杂)

图像存储 存储图像的位置因平台而异。在Linux系统上,它们通常位于
/var/lib/docker
下。我不知道它们在Windows上的存储位置,但这是一个或多或少不透明的存储。不管怎样,在里面乱翻也不会对你透露太多

要查看您拥有的内容,应使用
docker images
命令。它将显示您在本地存储的图像

正如我前面所说,每个图像可能由多个层组成。默认情况下,该命令将仅显示顶层