前言

那么这里博主先安利一些干货满满的专栏了!

首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。

然后就是博主最近最花时间的一个专栏《Docker从认识到实践再到底层原理》希望大家多多关注!


第五章-镜像

Docker镜像是什么

  • Docker image本质上是一个read-only只读文件,这个文件包含了文件系统源码、库文件、依赖、工具等一些运行行application 所必须的文件。

  • 我们可以把 Docker image 理解成一个模板,可以通过这个模板实例化出来很多容器。

  • image 里面是一层层文件系统Union FS。联合文件系统,可以将几层目录挂载到一起,形成一个虚拟文件系统。

每一层文件系统我们叫做一层 layer,联合文件系统可以对每一层文件系统设置三 种权限,只读(readonly)、读写(readwrite)和写出(whiteout-able),但是 docker 镜像中每一层文件系统都是只读的。

构建镜像的时候,从一个最基本的操作系统开始,每个构建的操作都相当于做一层 的修改,增加了一层文件系统。一层层往上叠加,上层的修改会覆盖底层该位置的可见性,这也很容易理解,就像上层把底层遮住了一样。当你使用的时候,你只会看到 一个完全的整体,你不知道里面有几层,也不清楚每一层所做的修改是什么。

镜像命令详解

命令清单

命令 别名 功能
docker images docker image ls / docker image list 列出本地镜像
docker tag docker image tag 给镜像打标签, 可用于推送镜像仓库
docker pull docker image pull 从镜像仓库拉取镜像
docker push docker image push 推送镜像到仓库
docker rmi docker image rm / docker image remove 删除本地镜像
docker build docker image build 通过 dockerfile制作镜像
docker save docker image save 将制定镜像保存成tar归档文件
docker load docker image load 导入使用 docker save 导出的镜像
docker image inspect 查看镜像的详细信息
docker history docker image history 查看镜像历史
docker import docker image import 从归档文件 docker export 中创建镜像
docker image prune 删除不使用的镜 像

在这一章,我们只详细介绍上面的部分命令,有一些我们会到特定的章节详细讲解。

docker rmi

删除本地某个镜像。

docker rmi [OPTIONS] IMAGE [IMAGE...]

关键参数。

-f : 强制删除
-no-prune : 不移除该镜像的过程镜像,默认移除

docker save 和 docker load

docker save [OPTIONS] IMAGE [IMAGE...] # -o :输出到的文件
docker save -o mybusybox.tar busybox:1.36.0 # 保存这个镜像文件


现在可以把这个镜像加载回来。

docker load [OPTIONS]

关键参数

--input, -i : 指定导入的文件,代替 STDIN。
--quiet, -q : 精简输出信息。

docker history

docker history [OPTIONS] IMAGE
-H, --human : 大小和日期采用人容易读的格式展现
--no-trunc : 显示全部信息,不要隔断;
-q, --quiet : 只显示镜像 id 信息;

其他参数大家都可以尝试。

docker image prune

删除不使用的镜像。

-a, --all : 删除全部不使用的镜像;
--filter filter : 指定过滤条件;
-f, --force : 不提示是否删除;
[root@ALiCentos7:/home/yufc/Src/Bit-Courses/DockerSrc/test]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.24.0 bf09be6b0005 2 weeks ago 142MB
nginx 1.25.2 eea7b3dcba7e 2 weeks ago 187MB
yufcbagpack/my-bit-nginx 1.25.2 eea7b3dcba7e 2 weeks ago 187MB
busybox 1.36.0 af2c3e96bcf1 3 months ago 4.86MB
yufcbagpack/busybox-by-yufc v1.0 af2c3e96bcf1 3 months ago 4.86MB
centos 7 eeb6ee3f44bd 23 months ago 204MB
nginx 1.18.0-alpine 684dbf9f01f3 2 years ago 21.9MB
[root@ALiCentos7:/home/yufc/Src/Bit-Courses/DockerSrc/test]$ docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: busybox:1.36.0
untagged: busybox@sha256:9e2bbca079387d7965c3a9cee6d0c53f4f4e63ff7637877a83c4c05f2a666112
untagged: yufcbagpack/busybox-by-yufc:v1.0
untagged: yufcbagpack/busybox-by-yufc@sha256:086417a48026173aaadca4ce43a1e4b385e8e62cc738ba79fc6637049674cac0
deleted: sha256:af2c3e96bcf1a80da1d9b57ec0adc29f73f773a4a115344b7e06aec982157a33
deleted: sha256:1f1d08b81bbe3cb8d730d2e163d6737b4352192712b1f1548720dc224f6cac06
untagged: nginx:1.18.0-alpine
untagged: nginx@sha256:93baf2ec1bfefd04d29eb070900dd5d79b0f79863653453397e55a5b663a6cb1
deleted: sha256:684dbf9f01f3250437d595669c7437c202573798ab34247d50338ff630e58b6a
deleted: sha256:c2de14d9781a9624082602f51baa465d1904cf681e8209bec5e0a40054897f49
deleted: sha256:6774274a318ea7dfe5fb9dd3fe1f625e463352ba889f6f9fb2222e4783bcd209
deleted: sha256:485b3a00a3b7092170c9612a95637ee7e1ff6b6bdc915c5131eb07983d02171d
deleted: sha256:c5ddcad13e93c4e6d6cf10c03bf14f0a8fc8a2a5435b87e300394fbc9977a02c
deleted: sha256:9a5d14f9f5503e55088666beef7e85a8d9625d4fa7418e2fe269e9c54bcb853c
untagged: nginx:1.25.2
untagged: nginx@sha256:104c7c5c54f2685f0f46f3be607ce60da7085da3eaa5ad22d3d9f01594295e9c
untagged: yufcbagpack/my-bit-nginx:1.25.2
untagged: yufcbagpack/my-bit-nginx@sha256:48a84a0728cab8ac558f48796f901f6d31d287101bc8b317683678125e0d2d35
deleted: sha256:eea7b3dcba7ee47c0d16a60cc85d2b977d166be3960541991f3e6294d795ed24
deleted: sha256:589bcc284f24d6548cd3cef06ace5f6ebc4f23a48a5763f2f9d3d30b0f9dadf5
deleted: sha256:b3addc7069fafd183d88d1a40bb3dfe51227d45e4fe8e59b81a2fda7614ebbc1
deleted: sha256:5bf28af6a2188fa2d657e451213761b03e115e4c24ee72c41da34a241fe81ca1
deleted: sha256:2496134da21702d935bee1334ae42baf26d0197af91275e5c1a11eee31299121
deleted: sha256:c7e60968a54882c23483c3acb0ff1f415ce0f98184dfbed3fb9080447d79b313
deleted: sha256:49bfd4a4ea578aefcacdfd87efdc4999d6a4e4b7f00322484cac67ff7671389e
deleted: sha256:511780f88f80081112aea1bfdca6c800e1983e401b338e20b2c6e97f384e4299
untagged: centos:7
untagged: centos@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4
deleted: sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9
deleted: sha256:174f5685490326fc0a1c0f5570b8663732189b327007e47ff13d2ca59673db02
untagged: nginx:1.24.0
untagged: nginx@sha256:a195f9fb6503531660b25f9aeefef1f48bbaf56f46da04bffe1568abb3d3aff6
deleted: sha256:bf09be6b0005cc81d4cc3c3cf836c84450e92a7c4dcb2e2e31d84843ff3d6c62
deleted: sha256:ff7c49c7e5d3258f6e702b5259ac2bdc8986bb04b24b2b7117925b4d26844596
deleted: sha256:7c0b5de76892cd4ea9baac2b125bfafa689f059f1a160993549208d348789473
deleted: sha256:06409bd4a1a7f2e234292dfeba96fb76d9cff1256e41e5df13d38a6f47488aa3
deleted: sha256:401de303ad1d4c865aab0018974df56eb349a04fdfb88a8e4c5c91fa1036a03f
deleted: sha256:5d87999cc8379e200e5702df879ba59805993578ac8cc20c4376d84274ab79f5
deleted: sha256:63290f9c9e5201f0507ee1b5701aa06c7f48bef7cce287fc77db92bec634d737 Total reclaimed space: 559.5MB
[root@ALiCentos7:/home/yufc/Src/Bit-Courses/DockerSrc/test]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@ALiCentos7:/home/yufc/Src/Bit-Courses/DockerSrc/test]$

镜像操作案例

实战流程如下所示。

#mermaid-svg-sV3PPRaWuQPxVpM3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-sV3PPRaWuQPxVpM3 .error-icon{fill:#552222;}#mermaid-svg-sV3PPRaWuQPxVpM3 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-sV3PPRaWuQPxVpM3 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-sV3PPRaWuQPxVpM3 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-sV3PPRaWuQPxVpM3 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-sV3PPRaWuQPxVpM3 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-sV3PPRaWuQPxVpM3 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-sV3PPRaWuQPxVpM3 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-sV3PPRaWuQPxVpM3 .marker.cross{stroke:#333333;}#mermaid-svg-sV3PPRaWuQPxVpM3 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-sV3PPRaWuQPxVpM3 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-sV3PPRaWuQPxVpM3 .cluster-label text{fill:#333;}#mermaid-svg-sV3PPRaWuQPxVpM3 .cluster-label span{color:#333;}#mermaid-svg-sV3PPRaWuQPxVpM3 .label text,#mermaid-svg-sV3PPRaWuQPxVpM3 span{fill:#333;color:#333;}#mermaid-svg-sV3PPRaWuQPxVpM3 .node rect,#mermaid-svg-sV3PPRaWuQPxVpM3 .node circle,#mermaid-svg-sV3PPRaWuQPxVpM3 .node ellipse,#mermaid-svg-sV3PPRaWuQPxVpM3 .node polygon,#mermaid-svg-sV3PPRaWuQPxVpM3 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-sV3PPRaWuQPxVpM3 .node .label{text-align:center;}#mermaid-svg-sV3PPRaWuQPxVpM3 .node.clickable{cursor:pointer;}#mermaid-svg-sV3PPRaWuQPxVpM3 .arrowheadPath{fill:#333333;}#mermaid-svg-sV3PPRaWuQPxVpM3 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-sV3PPRaWuQPxVpM3 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-sV3PPRaWuQPxVpM3 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-sV3PPRaWuQPxVpM3 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-sV3PPRaWuQPxVpM3 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-sV3PPRaWuQPxVpM3 .cluster text{fill:#333;}#mermaid-svg-sV3PPRaWuQPxVpM3 .cluster span{color:#333;}#mermaid-svg-sV3PPRaWuQPxVpM3 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-sV3PPRaWuQPxVpM3 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

查找镜像
下载镜像
查看镜像及列表存储位置
查看镜像详情

#mermaid-svg-AcnKvkP1DW1Yx42X {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-AcnKvkP1DW1Yx42X .error-icon{fill:#552222;}#mermaid-svg-AcnKvkP1DW1Yx42X .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-AcnKvkP1DW1Yx42X .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-AcnKvkP1DW1Yx42X .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-AcnKvkP1DW1Yx42X .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-AcnKvkP1DW1Yx42X .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-AcnKvkP1DW1Yx42X .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-AcnKvkP1DW1Yx42X .marker{fill:#333333;stroke:#333333;}#mermaid-svg-AcnKvkP1DW1Yx42X .marker.cross{stroke:#333333;}#mermaid-svg-AcnKvkP1DW1Yx42X svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-AcnKvkP1DW1Yx42X .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-AcnKvkP1DW1Yx42X .cluster-label text{fill:#333;}#mermaid-svg-AcnKvkP1DW1Yx42X .cluster-label span{color:#333;}#mermaid-svg-AcnKvkP1DW1Yx42X .label text,#mermaid-svg-AcnKvkP1DW1Yx42X span{fill:#333;color:#333;}#mermaid-svg-AcnKvkP1DW1Yx42X .node rect,#mermaid-svg-AcnKvkP1DW1Yx42X .node circle,#mermaid-svg-AcnKvkP1DW1Yx42X .node ellipse,#mermaid-svg-AcnKvkP1DW1Yx42X .node polygon,#mermaid-svg-AcnKvkP1DW1Yx42X .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-AcnKvkP1DW1Yx42X .node .label{text-align:center;}#mermaid-svg-AcnKvkP1DW1Yx42X .node.clickable{cursor:pointer;}#mermaid-svg-AcnKvkP1DW1Yx42X .arrowheadPath{fill:#333333;}#mermaid-svg-AcnKvkP1DW1Yx42X .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-AcnKvkP1DW1Yx42X .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-AcnKvkP1DW1Yx42X .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-AcnKvkP1DW1Yx42X .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-AcnKvkP1DW1Yx42X .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-AcnKvkP1DW1Yx42X .cluster text{fill:#333;}#mermaid-svg-AcnKvkP1DW1Yx42X .cluster span{color:#333;}#mermaid-svg-AcnKvkP1DW1Yx42X div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-AcnKvkP1DW1Yx42X :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

查看镜像详情
查看镜像分层
打标签
推送镜像
运行容器
镜像删除

查找镜像

docker search busybox

下载镜像

docker pull busybox:1.36.0

下载成功。

[root@ALiCentos7:/home/yufc/Src/Bit-Courses/DockerSrc/test]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox 1.36.0 af2c3e96bcf1 3 months ago 4.86MB
[root@ALiCentos7:/home/yufc/Src/Bit-Courses/DockerSrc/test]$

查看镜像及列表存储位置

东西存在这。

cd /data/var/lib/docker # 我们改过的,要记得哦
[root@ALiCentos7:/data/var/lib/docker]$ ll
total 44
drwx--x--x 4 root root 4096 Sep 1 20:57 buildkit
drwx--x--- 2 root root 4096 Sep 5 22:18 containers
-rw------- 1 root root 36 Sep 1 20:57 engine-id
drwx------ 3 root root 4096 Sep 1 20:57 image
drwxr-x--- 3 root root 4096 Sep 1 20:57 network
drwx--x--- 4 root root 4096 Sep 5 22:45 overlay2
drwx------ 4 root root 4096 Sep 1 20:57 plugins
drwx------ 2 root root 4096 Sep 1 20:57 runtimes
drwx------ 2 root root 4096 Sep 1 20:57 swarm
drwx------ 2 root root 4096 Sep 5 22:45 tmp
drwx-----x 2 root root 4096 Sep 1 20:57 volumes
[root@ALiCentos7:/data/var/lib/docker]$ cd image/
[root@ALiCentos7:/data/var/lib/docker/image]$ ls
overlay2
[root@ALiCentos7:/data/var/lib/docker/image]$ cd overlay2/
[root@ALiCentos7:/data/var/lib/docker/image/overlay2]$ ls
distribution imagedb layerdb repositories.json
[root@ALiCentos7:/data/var/lib/docker/image/overlay2]$ cat repositories.json
{"Repositories":{"busybox":{"busybox:1.36.0":"sha256:af2c3e96bcf1a80da1d9b57ec0adc29f73f773a4a115344b7e06aec982157a33","busybox@sha256:9e2bbca079387d7965c3a9cee6d0c53f4f4e63ff7637877a83c4c05f2a666112":"sha256:af2c3e96bcf1a80da1d9b57ec0adc29f73f773a4a115344b7e06aec982157a33"}}}[root@ALiCentos7:/data/var/lib/docker/image/overlay2]$

关注这里面的一个一个文件夹,/data/var/lib/docker/image/overlay2/这里面存的是docker的存储驱动。

我们可以看下repositories.json 这里面的内容。

{
"Repositories": {
"busybox": {
"busybox:1.36.0": "sha256:af2c3e96bcf1a80da1d9b57ec0adc29f73f773a4a115344b7e06aec982157a33",
"busybox@sha256:9e2bbca079387d7965c3a9cee6d0c53f4f4e63ff7637877a83c4c05f2a666112": "sha256:af2c3e96bcf1a80da1d9b57ec0adc29f73f773a4a115344b7e06aec982157a33"
}
}
}

可以看到我们是有一个busybox镜像的。

所以东西是存在这里的,列表是在这里面的。

也可以通过这个命令查看镜像的详情。

docker image inspect busybox:1.36.0

当然dockerhub上也可以看这些信息。

查看镜像分层

docker history busybox:1.36.0
[root@ALiCentos7:/data/var/lib/docker/image/overlay2]$ docker history busybox:1.36.0
IMAGE CREATED CREATED BY SIZE COMMENT
af2c3e96bcf1 3 months ago /bin/sh -c #(nop) CMD ["sh"] 0B
<missing> 3 months ago /bin/sh -c #(nop) ADD file:c22c6617fa9a85e0d… 4.86MB
[root@ALiCentos7:/data/var/lib/docker/image/overlay2]$

打标签

docker tag busybox:1.36.0 yufcbagpack/busybox-by-yufc:v2.0

推送镜像

docker push yufcbagpack/busybox-by-yufc:v2.0

运行容器

先查看现在有的镜像。

[root@ALiCentos7:/data/var/lib/docker/image/overlay2]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox 1.36.0 af2c3e96bcf1 3 months ago 4.86MB
yufcbagpack/busybox-by-yufc v2.0 af2c3e96bcf1 3 months ago 4.86MB
[root@ALiCentos7:/data/var/lib/docker/image/overlay2]$

运行容器。

[root@ALiCentos7:/data/var/lib/docker/image/overlay2]$ docker run -it yufcbagpack/busybox-by-yufc:v2.0 sh
/ #

现在就启动这个镜像了。

删除这个镜像

docker rmi yufcbagpack/busybox-by-yufc:v2.0

我们可以发现,其实不是删除了这个镜像,而是只是去除了标签而已。

docker rm 进一步删除

镜像仓库实战

实战一:离线迁移镜像

现有的镜像如下。

保存下来。

把这个tar包发到另一台服务器后(可以使用scp命令)

然后在另一台服务器使用docker load -i载入这个镜像即可。

实战二:镜像存储的压缩与共享

先拉一个镜像下来。

docker pull nginx:1.21.4
[root@ALiCentos7:/home/yufc/Src/Bit-Courses/DockerSrc/test]$ docker pull nginx:1.21.4
1.21.4: Pulling from library/nginx
a2abf6c4d29d: Pull complete
f3409a9a9e73: Pull complete
9919a6cbae9c: Pull complete
fc1ce43285d7: Pull complete
1f01ab499216: Pull complete
13cfaf79ff6d: Pull complete
Digest: sha256:366e9f1ddebdb844044c2fafd13b75271a9f620819370f8971220c2b330a9254
Status: Downloaded newer image for nginx:1.21.4
docker.io/library/nginx:1.21.4
[root@ALiCentos7:/home/yufc/Src/Bit-Courses/DockerSrc/test]$

我们发现拉到本地是141MB

我们看看hub上的大小。

所以,在hub上肯定是进行了一定的压缩的。

Docker从认识到实践再到底层原理(五)|Docker镜像的更多相关文章

  1. Docker 介绍以及其相关术语、底层原理和技术

    https://ruby-china.org/topics/22004 Docker是啥 Docker是一个程序运行.测试.交付的开放平台,Docker被设计为能够使你快速地交付应用.在Docker中 ...

  2. Docker从入门到实践

    一般说来 SPA 的项目我们只要启一个静态文件 Server 就可以了,但是针对传统项目就不一样了,一个项目会依赖很多服务端程序.之前我们的开发模式是在一台开发机上部署开发环境,所有人都在这台开发机上 ...

  3. docker学习笔记(1)概述、原理学习、常用命令

    一.Docker概述 Docker是基于Go语言实现的云开源项目,诞生于2013年初,目前主流的Linux操作系统已支持Docker,如Redhat RHEL6.5/CentOS6.5.Ubuntu ...

  4. [CoreOS 转载] CoreOS实践指南(七):Docker容器管理服务

    转载:http://www.csdn.net/article/2015-02-11/2823925 摘要:当Docker还名不见经传的时候,CoreOS创始人Alex就预见了这个项目的价值,并将其做为 ...

  5. Docker Daemon 参数最佳实践

    1. Docker Daemon 配置参数 限制容器之间网络通信 在同一台主机上若不限制容器之间通信,容器之间就会暴露些隐私的信息,所以推荐关闭 docker daemon –icc=false 使用 ...

  6. Docker 从入门到实践(一)Docker 简介

    读前须知:本教程大部分都是[Docker 从入门到实践 ]一书的知识,有兴趣可以直接观看书籍.同时,借鉴书籍的知识,如有侵权,请告知我,我会删除处理.谢谢. 一.什么是 Docker? Docker ...

  7. Kubernetes+Docker+Istio 容器云实践

    随着社会的进步与技术的发展,人们对资源的高效利用有了更为迫切的需求.近年来,互联网.移动互联网的高速发展与成熟,大应用的微服务化也引起了企业的热情关注,而基于Kubernetes+Docker的容器云 ...

  8. Docker从入门到实践(2)

    二.基本概念 Docker 镜像 我们都知道,操作系统分为内核和用户空间.对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持.而 Docker 镜像(Image),就相 ...

  9. Docker底层原理介绍

    1.docker介绍 1.1什么是docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻 ...

  10. Docker — 从入门到实践PDF下载(可复制版)

    0.9-rc2(2017-12-09)修订说明:本书内容将基于DockerCEv17.MM进行重新修订,计划2017年底发布0.9.0版本.旧版本(Docker1.13-)内容,请阅读docker-l ...

随机推荐

  1. 你真的了解MySQL日期函数吗?

    MySQL提供了丰富的日期和时间函数,用于处理和操作日期时间数据.本篇博文将深入介绍一些常用的MySQL日期函数,通过详细的例子带你了解这些函数的用法和实际应用. 1. CURDATE() - 获取当 ...

  2. 重磅发布丨从云原生到 Serverless,先行一步看见更大的技术想象力

    (2022 云原生实战峰会) 2022年12月28日,以"原生万物 云上创新"为主题的第三届云原生实战峰会在线上举行. 会上,阿里云提出激活企业应用构建三大范式,并发布云原生可观测 ...

  3. 如何把thinkphp5的项目迁移到阿里云函数计算来应对流量洪峰?

    原文链接:https://developer.aliyun.com/article/982746 1. 为什么要迁移到阿里云函数? 我的项目是一个节日礼品领取项目,过节的时候会有短时间的流量洪峰.平时 ...

  4. vue2.x封装svg组件并使用

    https://blog.csdn.net/ChickenBro_/article/details/134027803

  5. P4837

    日了啊,这道题每个输入中有多组输入,每处理完一组输入需要清空STL的stack类对象的啊.要是自己写的栈或许能想起来重新top=1,但是这用的STL现成的stack,就忘了while(!sk.empt ...

  6. 分享 ASCII 字符集的字模

    是做 VGA 显示屏时用到的,这是字模资源:gitee 链接 以下为字模代码: // 133 * 16 * 8 字模的 parameter reg [127:0] C_ascii_character ...

  7. AvaloniaUI 取消标题栏,无边框无最大最小化,

    AvaloniaUI 取消标题栏,无边框无最大最小化, 创建一个Window控件 并且在Window中添加以下代码 ExtendClientAreaToDecorationsHint="Tr ...

  8. SpringMVC03—RestFul和Controller

    控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现. 控制器负责解析用户的请求并将其转换为一个模型. 在Spring MVC中一个控制器类可以包含多个 ...

  9. [转帖]Jmeter接口测试:参数化

    Jmeter接口请求中的参数经常需要通过参数进行赋值 引用形式:${} 变量时:${变量名} 函数时,${_函数名(参数1,参数2,参数3)} 值中"${n}"中,n为变量名:&q ...

  10. [转帖]Kafka-Kraft 模式架构部署

    news文章来源: Kafka-Kraft 模式架构部署 Kafka网址:https://kafka.apache.org/ PS:因环境原因此文档内端口都有修改! 1.去官网下载二进制包 PS:3. ...