2024-06-08 docker学习

This article is categorized as "Garbage" . It should NEVER be appeared in your search engine's results.

主要是重新认清container, image, tag的区别


senario:

之前有这样一篇笔记:🔗 [制作avifenc-butteraugli docker镜像 - Truxton's blog] https://truxton2blog.com/create-avifenc-butteraugli-docker-image/

笔记里有这样的步骤:

但这一步写的不好,因为每次都要用docker ps -a和docker images来查找ID,导出avif docker以后还要用container ID和image ID进行删除。

修改方案:


step 1:

首先docker run的时候就要指定container name:

修改为:

$  docker run --name debian_container_avif_webp  -it debian /bin/bash

这样就能在docker ps -a里面看到container的名字:


step 2:

现在假设在这个container(container name:  debian_container_avif_webp )里面做了一些工作,现在要保存它:

$  docker commit debian_container_avif_webp debian:avif_webp_modified

在上面这条命令里:

container name:  debian_container_avif_webp 

repository:  debian 

image tag:  avif_webp_modified 

这样用docker images查看的时候就会区分原始debian和修改过的debian:

如果执行相同的commit命令多次,每次制作的docker image都会保存下来,但只有最近保存的那个会有 debian:avif_webp_modified 的标记,其他的都会变成<none>:<none>. 所以如果每次保存都是有意义的,就要在每次保存的时候都使用不同的名字。


step 3:

最后的docker save的命令也可以用image tag代替了(注意要用 REPOSITORY:TAG 的格式,而不仅仅是TAG):

$  docker save debian:avif_webp_modified | gzip > avif_webp.tar.gz

step 4:

删除container和image

也不需要用container ID/image ID了,直接用container name和image repo:tag就可以:

# 删除容器
$  docker rm debian_container_avif_webp


# 删除镜像
$  docker rmi debian:avif_webp_modified

所以现在那篇构建docker avif webp的笔记就优化完成了



 Last Modified in 2024-06-30 

Leave a Comment Anonymous comment is allowed / 允许匿名评论