公司对网站排名如何做绩效,移动电子商务网站设计,做3d图的网站有哪些软件,河南住建局和城乡建设Docker中的镜像分层
Docker 支持通过扩展现有镜像#xff0c;创建新的镜像。实际上#xff0c;Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的。
1、Docker 镜像为什么分层
镜像分层最大的一个好处就是共享资源。 比如说有多个镜像都从相…
Docker中的镜像分层
Docker 支持通过扩展现有镜像创建新的镜像。实际上Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的。
1、Docker 镜像为什么分层
镜像分层最大的一个好处就是共享资源。 比如说有多个镜像都从相同的 base 镜像构建而来那么 Docker Host 只需在磁盘上保存一份 base 镜 像同时内存中也只需加载一份 base 镜像就可以为所有容器服务了。而且镜像的每一层都可以被共 享。
如果多个容器共享一份基础镜像当某个容器修改了基础镜像的内容比如 /etc 下的文件这时其他容 器的 /etc 是不会被修改的修改只会被限制在单个容器内。这就是容器 Copy-on-Write 特性。
2、可写的容器层
当容器启动时一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”“容器层”之下的都叫 “镜像层”。
所有对容器的改动 - 无论添加、删除、还是修改文件都只会发生在容器层中。只有容器层是可写的容 器层下面的所有镜像层都是只读的。
3、容器层的细节说明
镜像层数量可能会很多所有镜像层会联合在一起组成一个统一的文件系统。如果不同层中有一个相同 路径的文件比如 /a上层的 /a 会覆盖下层的 /a也就是说用户只能访问到上层中的文件 /a。在容器 层中用户看到的是一个叠加之后的文件系统。
Dockerfile 介绍 Docker中有个非常重要的概念叫做——镜像Image。Docker 镜像是一个特殊的文件系统除 了提供容器运行时所需的程序、库、资源、配置等文件外还包含了一些为运行时准备的一些配置参数 如匿名卷、环境变量、用户等。镜像不包含任何动态数据其内容在构建之后也不会被改变。 镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构 建、操作的命令都写入一个脚本用这个脚本来构建、定制镜像那么之前提及的无法重复的问题、镜 像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。 Dockerfile 是一个文本文件其内包含了一条条的指令(Instruction)每一条指令构建一层因此每 一条指令的内容就是描述该层应当如何构建。
[rootlocalhost ~]# mkdir /db
[rootlocalhost ~]# cd /db
[rootlocalhost db]# systemctl start docker
[rootlocalhost db]#
[rootlocalhost db]# vim Dockerfile
ARG VERlatest
FROM busybox:$VER
MAINTAINER wyxwyx111.com
ENV WEB_DOC_ROOT/data/web/htmlRUN mkdir -p ${WEB_DOC_ROOT}
COPY index.html ${WEB_DOC_ROOT}/index.htmlEXPOSE 80
CMD /bin/httpd -f -h ${WEB_DOC_ROOT}Dcokerfile指令介绍 FROM 介绍
FROM 指令必须是 Dockerfile 中非注释行的第一个指令即一个 Dockerfile 从FROM语句 FROM 指令用于为镜像文件构建过程指定基础镜像后续的指令运行于此基础镜像所提供的运行环 境实践中基准镜像可以是任何可用镜像文件默认情况下docker build会在docker主机上查找指 定的镜像文件在其不存在时则会自动从 Docker 的公共库 pull 镜像下来。如果找不到指定的 镜像文件docker build 会返回一个错误信息FROM可以在一个 Dockerfile 中出现多次如果有需求在一个 Dockerfile 中创建多个镜像。 如果FROM语句没有指定镜像标签则默认使用latest标签。
ARG
介绍
ARG指令类似ENV定义了一个变量区别于ENV用户可以在构建时docker build --build-arg 进行对变量的修改ENV不可以如果用户指定了未在Dockerfile中定义的构建参数那么构建输出警告。 MAINTAINER
介绍 用于让dockerfile制作者提供本人的详细信息 dockerfile 并不限制MAINTAINER 指令可在出现的位置但推荐将其放置于FROM指令之后
COPY
介绍
用于从docker 主机复制新文件或者目录至创建的新镜像指定路径中 EXPOSE
介绍
用于为容器打开指定要监听的端口以实现与外部通信
RUN
介绍
用于指定docker build过程中运行的程序其可以是任何命令
ENV
介绍
用于为镜像定义所需的环境变量并可被Dockerfile文件中位于其后的其它指令(如ENV、ADD、 COPY等)所调用调用格式为$variable_ name 或 ${variable_ name}
示例
[rootlocalhost db]# docker build -t web:v2 ./ --load
[] Building 1.5s (7/7) FINISHED docker-container:default [internal] load build definition from Dockerfile 0.0s transferring dockerfile: 344B 0.0s [internal] load metadata for docker.io/library/busybox:latest 1.3s [internal] load .dockerignore 0.0s transferring context: 2B 0.0s [1/2] FROM docker.io/library/busybox:latestsha256:650fd573e056b679a5110a70aabeb01e26b76e545ec4b9c70a9523f2dfaf18c6 0.0s resolve docker.io/library/busybox:latestsha256:650fd573e056b679a5110a70aabeb01e26b76e545ec4b9c70a9523f2dfaf18c6 0.0s CACHED [2/2] RUN mkdir -p /data/web/html echo h1Busybox httpd server/h1 /data/web/html/index.html 0.0s exporting to docker image format 0.1s exporting layers 0.0s exporting manifest sha256:ac9ab7ea17a22df4d6b811825b8d72617057773c55d4ac1333202c077d02edc9 0.0s exporting config sha256:d295a55faa063775dc81658b0f9a2b022e8c3ebee479fe7b94386155c695c810 0.0s sending tarball 0.1s importing to docker 0.0s loading layer 29daefb0147a 223B / 223B 0.0s
[rootlocalhost db]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
web v2 d295a55faa06 6 minutes ago 4.26MB
moby/buildkit buildx-stable-1 480495983c47 5 weeks ago 172MB
wordpress latest 2fc2a7b04129 5 weeks ago 739MB
tencentci/discuz latest caba9d3ea6d8 8 weeks ago 574MB
mysql 5.7 5107333e08a8 3 months ago 501MB
goharbor/harbor-exporter v2.8.4 b8d33e28ec68 6 months ago 97.7MB
goharbor/redis-photon v2.8.4 7b7324d651ca 6 months ago 120MB
goharbor/trivy-adapter-photon v2.8.4 91d8e9f0b21a 6 months ago 464MB
goharbor/notary-server-photon v2.8.4 a46f91560454 6 months ago 113MB
goharbor/notary-signer-photon v2.8.4 da66bd8d944b 6 months ago 110MB
goharbor/harbor-registryctl v2.8.4 805b38ca6bee 6 months ago 141MB
goharbor/registry-photon v2.8.4 756769e94123 6 months ago 79MB
goharbor/nginx-photon v2.8.4 375018db778b 6 months ago 116MB
goharbor/harbor-log v2.8.4 8a2045fb24d2 6 months ago 124MB
goharbor/harbor-jobservice v2.8.4 97808fc10f64 6 months ago 141MB
goharbor/harbor-core v2.8.4 c26fcd0714d8 6 months ago 164MB
goharbor/harbor-portal v2.8.4 4a8b0205c0f9 6 months ago 124MB
goharbor/harbor-db v2.8.4 5b8af16d7420 6 months ago 174MB
goharbor/prepare v2.8.4 bdbf974d86ce 6 months ago 166MB
busybox latest ba5dc23f65d4 9 months ago 4.26MB
mysql 5.6 dd3b2a5dcb48 2 years ago 303MB
y109/discuz latest 607a1b6e9cc4 8 years ago 542MB
training/webapp latest 6fae60ef3446 8 years ago 349MB
training/postgres latest 6fa973bb3c26 9 years ago 365MB
[rootlocalhost db]# docker run -d --name test1 -P web:v2
ed9d72069d829036d826e87875f1b15242c358d67d95130862ef8ee440caa0f3
[rootlocalhost db]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ed9d72069d82 web:v2 /bin/sh -c /bin/ht… 5 seconds ago Up 4 seconds 0.0.0.0:32768-80/tcp test1
faed7103e3ff moby/buildkit:buildx-stable-1 buildkitd 11 minutes ago Up 11 minutes buildx_buildkit_default