Docker镜像管理

Stella981
• 阅读 759

Docker镜像管理

# 创建镜像
镜像的创建有以下几种方法:
使用ISO镜像:回顾下OpenStack,我们在创建虚拟机的时候,首先使用iso安装定制了镜像上传到Glance上面,对于Docker来说,我们同样可以使用ISO镜像来制作基本镜像。
使用工具制作镜像:不同的操作系统都提供了相应的工具来让用户创建Docker镜像,比如Centos可以使用febootstrap。debian/ubuntu使用debootstrap。
基于本地模板导入:Docker支持从一个操作系统模板文件导入一个镜像。

一般我们都是使用一些公共的基础镜像,然后在这个基础上,再根据自身需求进行定制。比如后面要讲到的Docker File的方式,来创建镜像。

# 获取镜像
既然有了Docker Hub,我们就不要重复造轮子了,直接下载一个官方提供的centos镜像吧。
[root@linux-node1 ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
8a29a15cefae: Pull complete 
Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest

# 查看镜像
[root@linux-node1 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              470671670cac        2 months ago        237MB

REPOSITORY:镜像来自于哪个仓库
TAG:镜像的标签。用来标记镜像的不同版本等。
IMAGE ID:镜像的唯一ID。
CREATED:镜像创建时间。
VIRTUAL SIZE:镜像的大小。

# 镜像的导入导出
如果你想把自己的镜像传给别人怎么办,Docker提供了导入和导出的命令:

导出镜像
[root@linux-node1 ~]# docker save -o centos.tar centos

导入镜像
将导出的镜像scp到另外的一台机器上后做导入。
[root@linux-node2 ~]# docker load --input centos.tar

或者使用重定向进行导入
[root@linux-node2 ~]# docker load < centos.tar

Docker镜像这种导入和导出是完整,可以看到镜像ID等都没有发生改变。
[root@linux-node2 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              470671670cac        2 months ago        237MB

# 删除镜像
使用docker rmi命令可以删除本地的镜像,可以使用镜像的标签或者镜像的ID。他们两者之间是不同的。

docker rmi 标签:会删除指定标签的镜像,但是镜像本身不会被删除,因为一个镜像对象可以有多个标签,就像Linux文件的硬链接,当镜像只剩下一个标签的时候,使用标签删除镜像,才会删除镜像本身。

docker rmi ID:使用镜像的ID删除镜像,会先删除该镜像的所有标签,然后再删除镜像文件本身。

注意:如果镜像创建的容器存在时,镜像是无法被删除的。不过你可以使用-f的参数强制删除镜像,并不建议这么做。

看起来Docker的镜像操作是比虚拟机要便捷的多,目前来说使用几个简单的命令,就可以完成镜像的管理工作,不过这还只是基础。

[root@linux-node1 ~]# docker rmi 470671670cac

[root@linux-node1 ~]# docker load < /disk/centos.tar 
0683de282177: Loading layer [==================================================>]  244.9MB/244.9MB
Loaded image: centos:latest
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Stella981 Stella981
3年前
Docker 国内仓库和镜像
Docker国内仓库和镜像由于网络原因,我们在pullImage的时候,从DockerHub上下载会很慢。。。所以,国内的Docker爱好者们就添加了一些国内的镜像(mirror),方便大家使用。1\.国内Docker仓库阿里云(https://www.osch
Stella981 Stella981
3年前
Dockerfile 说明
1.基本说明  Dockfile是一个用于编写docker镜像生成过程的文件,其有特定的语法。在一个文件夹中,如果有一个名字为Dockfile的文件,其内容满足语法要求,在这个文件夹路径下执行命令:dockerbuildtagname:tag.,就可以按照描述构建一个镜像了。name是镜像的名称,tag是镜像的版本或者是标签号,
Stella981 Stella981
3年前
Docker:dockerfile构建php项目 [八]
一、把项目封装成docker镜像的步骤把项目封装成docker镜像的步骤:1、先运行一个基础容器,手动制作docker镜像2、编写dockerfile,构建镜像3、测试运行二、dockerfile常用指令参考1、dockerfile常用指令:
Stella981 Stella981
3年前
Docker镜像制作
  使用docker原始源为centos制作一个nginx镜像  pull一个centos镜像dockerpullcentos  运行进入容器dockerrunitcentos  容器内安装wgetyumyinstallwget  更换镜像源为阿里wgetO/etc/y
Stella981 Stella981
3年前
Docker 类面试题(常见问题)
Docker常见问题汇总镜像相关1、如何批量清理临时镜像文件?可以使用sudodockerrmi$(sudodockerimagesqfdangingtrue)命令2、如何查看镜像支持的环境变量?使用sudodockerrunIMAGEenv3、本地的镜像文件都存放在哪里于D
Stella981 Stella981
3年前
Maven使用 国内镜像配置
Maven使用国内镜像配置  Maven  setting.xml中配置<repositories<repository<idnexus</id<namelocalprivatenexus</name
Wesley13 Wesley13
3年前
01_docker镜像命令
docker镜像命令1\.dockerimages参数:\a:列出本地所有的镜像\q:只显示镜像id\digests:显示镜像的摘要信息\notrunc:显示完整的镜像信息dockerimagesd
Stella981 Stella981
3年前
Docker搭建MySQL服务
Docker开源镜像前面我们已经安装好了Docker,也简单了解了Docker。那么我们可以尝试搭建一个MySQL服务。要搭建服务就要启动服务容器,要创建容易就要有镜像,Docker提供了一个类似Github的开源平台,提供开源镜像,放心可靠。(毕竟大家都看着源码呢)Docker开源镜像传送门(https://www.o
布袋罗汉 布袋罗汉
1年前
快速简单制作macOS Ventura系统ISO格式镜像
ISO格式的镜像其实没有什么制作难度,下面教大家怎么快速简单制作ISO格式的镜像,教程使用到的都是Mac官方的命令。制作好的ISO格式镜像可以用于虚拟机安装或者制作到U盘或者直接在Mac里面打开安装升级。准备系统镜像首先下载好macOS镜像,可以从本站下载