前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >docker-03

docker-03

作者头像
Tom2Code
发布2022-04-15 16:13:24
发布2022-04-15 16:13:24
19800
代码可运行
举报
文章被收录于专栏:TomTom
运行总次数:0
代码可运行

今天是第三天,想知道前两天讲了什么

还请客官点击下面的链接

docker-02

docker-01

今天我们来谈一谈docker的一些具体指令:

一.关于image的指令

代码语言:javascript
代码运行次数:0
复制
docker images

结果如下:

代码语言:javascript
代码运行次数:0
复制
REPOSITORY                                             TAG       IMAGE ID       CREATED        SIZE
registry.cn-beijing.aliyuncs.com/tompublic/myubuntun   1.0       de39e7ab8981   3 days ago     175MB
tom/ubuntu                                             latest    9aa77740f843   7 days ago     72.8MB
registry                                               latest    9c97225e83c8   3 weeks ago    24.2MB
ubuntu                                                 latest    54c9d81cbb44   3 weeks ago    72.8MB
redis                                                  latest    f1b6973564e9   4 weeks ago    113MB
hello-world                                            latest    feb5d9fea6a5   5 months ago   13.3kB

这条指令可以查看本机上的所有镜像

我们可以通过第二讲的内容

在终端尝试输入

代码语言:javascript
代码运行次数:0
复制
docker images --help

结果如下:

代码语言:javascript
代码运行次数:0
复制
Usage:  docker images [OPTIONS] [REPOSITORY[:TAG]]

List images

Options:
  -a, --all             Show all images (default hides intermediate images)
      --digests         Show digests
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print images using a Go template
      --no-trunc        Don't truncate output
  -q, --quiet           Only show image IDs

可以看到有一个 -q的参数

我们再次在终端输入

代码语言:javascript
代码运行次数:0
复制
docker images -q

结果如下:

代码语言:javascript
代码运行次数:0
复制
de39e7ab8981
9aa77740f843
9c97225e83c8
54c9d81cbb44
f1b6973564e9
feb5d9fea6a5

也就是只会显示镜像的id

这样倒是非常方便,但是需要我们时刻记住镜像的id

我们还可以输入

代码语言:javascript
代码运行次数:0
复制
docker images -a

结果如下

代码语言:javascript
代码运行次数:0
复制
REPOSITORY                                             TAG       IMAGE ID       CREATED        SIZE
registry.cn-beijing.aliyuncs.com/tompublic/myubuntun   1.0       de39e7ab8981   3 days ago     175MB
tom/ubuntu                                             latest    9aa77740f843   7 days ago     72.8MB
registry                                               latest    9c97225e83c8   3 weeks ago    24.2MB
ubuntu                                                 latest    54c9d81cbb44   3 weeks ago    72.8MB
redis                                                  latest    f1b6973564e9   4 weeks ago    113MB
hello-world                                            latest    feb5d9fea6a5   5 months ago   13.3kB

其实加了上a参数和不加a参数的效果是一样的

我们还可以输入

代码语言:javascript
代码运行次数:0
复制
docker images --digests

结果如下:

代码语言:javascript
代码运行次数:0
复制
REPOSITORY                                             TAG       DIGEST                                                                    IMAGE ID       CREATED        SIZE
registry.cn-beijing.aliyuncs.com/tompublic/myubuntun   1.0       sha256:2ae59d28cd1b2eb3411e151f507882882c9c678c83bd26638bed69be95fbc369   de39e7ab8981   3 days ago     175MB
tom/ubuntu                                             latest    <none>                                                                    9aa77740f843   7 days ago     72.8MB
registry                                               latest    sha256:c26590bcf53822a542e78fab5c88e1dfbcdee91c1882f4656b7db7b542d91d97   9c97225e83c8   3 weeks ago    24.2MB
ubuntu                                                 latest    sha256:669e010b58baf5beb2836b253c1fd5768333f0d1dbcb834f7c07a4dc93f474be   54c9d81cbb44   3 weeks ago    72.8MB
redis                                                  latest    sha256:0d9c9aed1eb385336db0bc9b976b6b49774aee3d2b9c2788a0d0d9e239986cb3   f1b6973564e9   4 weeks ago    113MB
hello-world                                            latest    sha256:97a379f4f88575512824f3b352bc03cd75e239179eea0fecc38e597b2209f49a   feb5d9fea6a5   5 months ago   13.3kB

这样可以显示这个镜像的摘要

What is digest?

使用V2以及V2以上格式的镜像将会有一个叫做digest的内容可寻址标识符。 来自网络

根据定义来看,这个digest其实就是就是根据镜像内容产生的一个ID,官网上说,只要用于产生这个image的输入不变,那么digest就是可以预测的,换句话说只要镜像的内容不变digest也不会变。 简书

Why we use digest?

当你从网络上下载内容某一个包,如果你想要保证下载的包是完整性并且没有被恶意篡改过,常用的方式就是根据这个包的内容,为这个包生成加密哈希串。可以通过对比这个加密哈希串来保证内容没有被改变过。

这个哈希串就是content adressable identifier(内容可识别标识符).

验证方式可以是:

  • 从网络上下载一个package
  • 根据下载下来的packgae的内容计算出这package的sha256 hash
  • 对比我期待的hash值和计算出的hash值,如果不一致,说明内容被篡改过

想象一个场景:

你向docker-hub中push了一个镜像my-app:v1.0.0,但是你的Docker Hub credentials被人盗取了,这个人可能会将一段恶意代码植入了你的镜像,并且使用带有恶意代码的镜像覆盖了v1.0.0这个镜像版本。

但是你的production,只是pull了my-app:v1.0.0,并且运行这个镜像,并没有考虑内容是否和以前一样,这时候你的production可能那个已经被恶意代码侵害了。

那么在这种场景下,docker digest能如何帮助我们躲避这种风险呢?

如果你的production不只是定义了版本,而是pull下了这样的镜像 my-app@sha256:saklfjdksajfkdsajfkladsjlfkjdskl 也就是将digest(内容id)带上, docker会帮助我们:

  • pull下digest是这个值的镜像
  • 计算pull下镜像的sha256,并且对比计算出的结果是否和上面给出的digest一致。

来自网络

这样一来,有了digest我们的image就会变得更加安全。

今天的分享就到此位置,期待下次见面。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tom的小院 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • What is digest?
  • Why we use digest?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档