欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

深入学习Docker在企业的应用:第二章 - 镜像的高级管理和使用

最编程 2024-02-14 20:25:05
...

之前我们用到的镜像,无论是ubuntu镜像还是busybox镜像,都是来自于官方Docker Hub中的镜像。直接使用这些镜像是可以满足一定的需求,而当这些镜像无法直接满足需求时,就需要在这些镜像的基础上修改,来定制符合实际需求的镜像。

基于Commit定制镜像

#以busybox镜像创建一个容器,在容器中创建一个hello.txt的文件。
#拉取busybox 最新镜像,实际生产中,docker pull 这一步可以省略,docker run的时候会自己去拉取。
docker pull busybox
docker run --name container1 busybox touch hello.txt
#将对容器container1做出的修改提交为一个新镜像,镜像名为busybox:v1
#********** Begin *********#
docker commit container1 busybox:v1
#********** End **********#

基于save保存镜像与基于load加载镜像

#!/bin/bash
#首先拉取一个busybox镜像
docker pull busybox:latest

#1.将busybox:latest镜像保存到tar包
#********** Begin *********#
docker save busybox:latest > busybox.tar
#********** End **********#

#删除busybox:latest镜像
docker rmi busybox:latest

#2.从tar包加载busybox:latest镜像
#********** Begin *********#
docker load < busybox.tar
#********** End **********#

导入导出容器

#以busybox为镜像创建一个容器,容器名为busyboxContainer
#拉取busybox 最新镜像,实际生产中,docker pull 这一步可以省略,docker run的时候会自己去拉取。
docker pull busybox

docker run --name busyboxContainer busybox echo "hello"
#1.然后将busyboxContainer导出为容器快照:busybox.tar
#********** Begin *********#
docker export  busyboxContainer -o busybox.tar
#********** End **********#

#2.最后使用该容器快照导入镜像,镜像名为busybox:v1.0。
#********** Begin *********#
cat busybox.tar | docker import - busybox:v1.0
#********** End **********#

删除镜像

#!/bin/bash
#以busybox为基础镜像创建一个容器,容器名为container3
#拉取busybox 最新镜像,实际生产中,docker pull 这一步可以省略,docker run的时候会自己去拉取。
docker pull busybox

docker run --name container3 busybox:latest echo "hello"
#然后将busybox:latest镜像删除
#********** Begin *********#
docker rmi -f busybox:latest
#********** End **********#

构建私有Registry

#!/bin/bash
#构建一个私人仓库
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 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

推荐阅读