今天是第三天,想知道前两天讲了什么
还请客官点击下面的链接
今天我们来谈一谈docker的一些具体指令:
一.关于image的指令
docker images
结果如下:
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
这条指令可以查看本机上的所有镜像
我们可以通过第二讲的内容
在终端尝试输入
docker images --help
结果如下:
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的参数
我们再次在终端输入
docker images -q
结果如下:
de39e7ab8981
9aa77740f843
9c97225e83c8
54c9d81cbb44
f1b6973564e9
feb5d9fea6a5
也就是只会显示镜像的id
这样倒是非常方便,但是需要我们时刻记住镜像的id
我们还可以输入
docker images -a
结果如下
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参数的效果是一样的
我们还可以输入
docker images --digests
结果如下:
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
这样可以显示这个镜像的摘要
使用V2以及V2以上格式的镜像将会有一个叫做digest的内容可寻址标识符。 来自网络
根据定义来看,这个digest其实就是就是根据镜像内容产生的一个ID,官网上说,只要用于产生这个image的输入不变,那么digest就是可以预测的,换句话说只要镜像的内容不变digest也不会变。 简书
当你从网络上下载内容某一个包,如果你想要保证下载的包是完整性并且没有被恶意篡改过,常用的方式就是根据这个包的内容,为这个包生成加密哈希串。可以通过对比这个加密哈希串来保证内容没有被改变过。
这个哈希串就是content adressable identifier(内容可识别标识符)
.
验证方式可以是:
sha256 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会帮助我们:
来自网络
这样一来,有了digest我们的image就会变得更加安全。
今天的分享就到此位置,期待下次见面。