第1关:基于Commit定制镜像
任务描述
之前我们用到的镜像,无论是ubuntu镜像还是busybox镜像,都是来自于官方Docker Hub中的镜像。直接使用这些镜像是可以满足一定的需求,而当这些镜像无法直接满足需求时,就需要在这些镜像的基础上修改,来定制符合实际需求的镜像。
本关任务是学习使用Commit定制一个镜像,要求学习者参照示例完成定制一个busybox:v1镜像,该镜像在busybox:latest的基础上,新增了一个hello.txt文件。
docker pull busybox
docker run --name container1 busybox touch hello.txt
docker commit container1 busybox:v1
第2关:基于save保存镜像与基于load加载镜像
任务描述
你可能会遇到这样的场景,为了防止镜像丢失,需要为某个特殊的镜像备份。并且在需要的时候,使用备份的文件进行镜像恢复。或者是这样子的,你想将本机的某个镜像传给另外一台机器,那么该怎么办呢?
本关任务是学习保存镜像和加载镜像,要求学习者参照示例完成将busybox:latest镜像保存为一个tar包,在删除busybox:latest镜像之后,通过该tar包恢复busybox:latest镜像。
docker pull busybox:latest
docker save busybox:latest > alpine.tar
docker rmi busybox:latest
docker load < apline.tar
第3关:导入导出容器
任务描述
本关任务是学习导入导出容器,要求学习者参照示例完成将busyboxContainer容器的文件系统保存为一个tar包,通过该tar包导入一个busybox:v1.0镜像。
相关知识
为了完成本关卡,你需要掌握:
将“容器的文件系统”保存到 tar 包;
从 tar 包导入一个镜像;
实例;
docker export 和 docker save 的区别。
docker pull busybox
docker run --name busyboxContainer busybox echo "hello"
docker export busyboxContainer > busybox.tar
cat busybox.tar | docker import - busybox:v1.0
第4关:删除镜像
任务描述
随着我们拉取的镜像越来越多,镜像的管理越来越难。这时候可能就需要删除镜像了。
本关的任务是学习如何删除容器,要求学习者参照示例,将busybox:latest镜像删除。
docker pull busybox
docker run --name container3 busybox:latest echo "hello"
docker rm container3
docker rmi busybox
第5关:构建私有Registry
任务描述
当镜像的数量越来越多,镜像管理就变得非常有必要了。有时候我们需要设置一个本地的私人仓库来进行镜像的管理。
本关任务是学习创建和操作一个私人仓库,要求学习者参照示例完成“创建一个私人仓库,将busybox镜像推送到私人仓库,最后将busybox从私人仓库拉取下来。”。
#构建一个私人仓库
docker pull registry:2
docker run -d -p 5000:5000 --restart=always --name myregistry registry:2
#拉取busybox镜像
docker pull busybox
#1.使用docker tag给busybox加上一个标签localhost:5000/my-busybox:latest
#********** Begin *********#
docker tag busybox:latest localhost:5000/my-busybox:latest
#********** End **********#
#2.将localhost:5000/my-busybox:latest镜像推送到私人仓库
#********** Begin *********#
docker push localhost:5000/my-busybox:latest
#********** End **********#
#删除本地镜像
docker rmi localhost:5000/my-busybox:latest
#3.从私人仓库拉取localhost:5000/my-busybox:latest镜像
#********** Begin *********#
docker pull localhost:5000/my-busybox:latest
#********** End **********#
#删除私人仓库并将私人仓库中的镜像也删除掉
docker rm -vf myregistry