拷贝的意思就是复制,比如拷贝文件,就是复制文件。
文件,是汉语词语,拼音是wén jiàn,意思是有关政治理论、时事政策、学术研究等方面的文章。文件 record;document国家机构、社会组织或个人在履行其法定职责或处理事务中形成的各种形式的信息记录。
主机就是机箱和内部的配件,即机箱、电源、处理器、主板、内存、硬盘、独显等。
点击右上角加'关注',全国产经信息不错过
写时复制是一种共享和复制文件的策略,可最大程度地提高效率。如果文件或目录位于映像的较低层中,而另一层(包括可写层)需要对其进行读取访问,则它仅使用现有文件。另一层第一次需要修改文件时(在构建映像或运行容器时),将文件复制到该层并进行修改。这样可以将I / O和每个后续层的大小最小化。这些优点将在下面更深入地说明。
共享可以提升较小的图像
当您用于docker pull从存储库中下拉映像时,或者当您从本地尚不存在的映像中创建容器时,每个层都会被分别下拉,并存储在Docker的本地存储区域中,该区域通常/var/lib/docker/在Linux主机上。在此示例中,您可以看到这些层被拉出:
$ docker pull ubuntu:1804
1804: Pulling from library/ubuntu
f476d66f5408: Pull complete
8882c27f669e: Pull complete
d9af21273955: Pull complete
f5029279ec12: Pull complete
Digest: sha256:ab6cb8de3ad7bb33e2534677f865008535427390b117d7939193f8d1a6613e34
Status: Downloaded newer image for ubuntu:1804
这些层中的每一层都存储在Docker主机的本地存储区域内的自己的目录中。要检查文件系统上的各层,请列出的内容/var/lib/docker/。本示例使用overlay2 存储驱动程序:
$ ls /var/lib/docker/overlay2
16802227a96c24dcbeab5b37821e2b67a9f921749cd9a2e386d5a6d5bc6fc6d3
377d73dbb466e0bc7c9ee23166771b35ebdbe02ef17753d79fd3571d4ce659d7
3f02d96212b03e3383160d31d7c6aeca750d2d8a1879965b89fe8146594c453d
ec1ec45792908e90484f7e629330666e7eee599f08729c93890a7205a6ba35f5
l
目录名称与层ID不对应(自Docker 110开始就是如此)。
现在,假设您有两个不同的Dockerfile。您使用第一个创建名为的图像acme/my-base-image:10。
# syntax=docker/dockerfile:1
FROM ubuntu:1804
COPY /app
第二acme/my-base-image:10层基于,但具有一些附加层:
# syntax=docker/dockerfile:1
FROM acme/my-base-image:10
CMD /app/hellosh
第二个图像包含第一个图像的所有层,再加上带有CMD指令的新层,以及一个可读写容器层。Docker已经具有第一个映像中的所有层,因此不需要再次将其拉出。这两个图像共享它们共有的任何图层。
如果从两个Dockerfile构建映像,则可以使用docker image ls和 docker history命令来验证共享层的密码ID是否相同。
1创建一个新目录cow-test/并更改到该目录中。
2在中cow-test/,创建一个hellosh具有以下内容的新文件:
#!/bin/sh
echo "Hello world"
保存文件,并使其可执行:
chmod +x hellosh
3将上面第一个Dockerfile的内容复制到一个名为的新文件中 Dockerfilebase。
4将上面第二个Dockerfile的内容复制到一个名为的新文件中 Dockerfile。
5在cow-test/目录中,构建第一个映像。不要忘记在命令中包含final 。设置了PATH,它告诉Docker在哪里寻找需要添加到映像中的任何文件。
$docker build -t acme/my-base-image:10 -f Dockerfilebase
6建立第二张镜像。
$docker build -t acme/my-final-image:10 -f Dockerfile
7检查镜像的大小:
$docker image ls
8检出构成每个镜像的图层:
$docker history bd09118bcef6
请注意,除了第二个图像的顶层以外,所有层都是相同的。所有其他层在两个图像之间共享,并且仅在中存储一次/var/lib/docker/。实际上,新层根本不占用任何空间,因为它不更改任何文件,而仅运行命令。
全国产经平台联系电话:010-65367702,邮箱:hz@people-energycomcn,地址:北京市朝阳区金台西路2号人民日报社
Docker容器是基于一个Docker镜像创建的,而Docker镜像本身则可以通过Docker命令行工具或者Dockerfiles来生成。在容器之间拷贝数据是Docker一个重要而且基本的功能,拷贝数据到其他容器是一个经常使用到的场景。那么,如何将Docker容器中的文件导入主机呢?下面小编就给大家介绍下Docker容器中的文件导入到主机的 *** 作方法。docker cp 容器ID:容器中文件的绝对路径 主机路径
docker cp使用方法
docker cp 03091bf3d393:/root/Documents/combocpp 。/
上面这条命令就是把ID为03091bf3d393的容器中的/root/Documents/目录下的combocpp文件拷贝到主机的当前目录下。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)