前言

Docker的三大核心概念:镜像、容器、仓库。初学者对镜像和容器往往分不清楚,学过面向对象的应该知道类和实例,这跟面向对象里面的概念很相似

我们可以把镜像看作类,把容器看作类实例化后的对象。

docker 面向对象
镜像
容器 实例

查看镜像列表

使用docker images查看本地已经下载的镜像

  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签,区分不同版本
  • IMAGE ID:镜像ID,16进制组成,唯一标识
  • CREATED:镜像创建时间
  • SIZE:镜像大小
[root@yoyo ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos/python-36-centos7 latest b8d15efaa8ec 2 months ago 651MB
ubuntu 15.10 9b9cb95443b5 2 years ago 137MB
training/webapp latest 6fae60ef3446 4 years ago 349MB
[root@yoyo ~]#

我们本地下载的镜像文件是从仓库下载过来的,每个镜像在仓库源都有个名称,也就是 REPOSITORY,同一个镜像源可以有不同的版本,同标签(TAG)区分

下载镜像

直接使用 docker pull centos 默认是下载的最新的latest版本

docker pull centos

[root@yoyo ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
8ba884070f61: Already exists
Digest: sha256:b5e66c4651870a1ad435cd75922fe2cb943c9e973a9673822d1414824a1d0475
Status: Downloaded newer image for centos:latest
[root@yoyo ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos/python-36-centos7 latest b8d15efaa8ec 2 months ago 651MB
centos latest 9f38484d220f 3 months ago 202MB
ubuntu 15.10 9b9cb95443b5 2 years ago 137MB
training/webapp latest 6fae60ef3446 4 years ago 349MB
[root@yoyo ~]#

搜索镜像

docker search搜索相关的镜像文件

[root@yoyo ~]# docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 5424 [OK]
ansible/centos7-ansible Ansible on Centos7 121 [OK]
jdeathe/centos-ssh CentOS-6 6.10 x86_64 / CentOS-7 7.6.1810 x86… 110 [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC session… 91 [OK]
imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 57 [OK]
centos/mysql-57-centos7 MySQL 5.7 SQL database server 54
tutum/centos Simple CentOS docker image with SSH access 44
centos/postgresql-96-centos7 PostgreSQL is an advanced Object-Relational … 37
kinogmt/centos-ssh CentOS with SSH 27 [OK]

如果我想下载一个centos7.5的镜像版本,该如何找到呢?

查找TAG版本

如果要找到指定的TAG版本,需打开docker官网https://hub.docker.com/search/?type=image,搜索框输入:centos搜索。

点击详情,找到TAGS,就可以看到不同的标签版本了

接下来指定TAG名称下载,后面加个冒号:标签名称

docker pull centos:centos7.5.1804

[root@yoyo ~]# docker pull centos:centos7.5.1804
centos7.5.1804: Pulling from library/centos
5ad559c5ae16: Pull complete
Digest: sha256:7a45e4a1efbaafc1d9aa89925b6fdb33288a96d35ea0581412316e2f0ad3720a
Status: Downloaded newer image for centos:centos7.5.1804
[root@yoyo ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos/python-36-centos7 latest b8d15efaa8ec 2 months ago 651MB
centos centos7.5.1804 cf49811e3cdb 3 months ago 200MB
centos latest 9f38484d220f 3 months ago 202MB
ubuntu 15.10 9b9cb95443b5 2 years ago 137MB
training/webapp latest 6fae60ef3446 4 years ago 349MB
[root@yoyo ~]#

更新镜像

上面下载的TAG名称是centos7.5.1804,这个太长了不太好记,可以改成一个自己喜欢的TAG名称,比如7.5

更新镜像需先启动容器

docker run -d centos:centos7.5.1804

[root@yoyo ~]# docker run -d centos:centos7.5.1804
64cc20e825e3cb70bdbb5c22dac72b061fba77895e794ae7a06d57d2ddfb8a96
[root@yoyo ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
64cc20e825e3 centos:centos7.5.1804 "/bin/bash" 38 seconds ago Exited (0) 35 seconds ago recursing_ardinghelli
fefdcbb9c662 centos/python-36-centos7 "container-entrypoin…" 24 hours ago Exited (0) 24 hours ago quirky_cray
9df329b5effd centos/python-36-centos7 "container-entrypoin…" 24 hours ago Exited (0) 24 hours ago nifty_roentgen

启动之后,查看到容器id号64cc20e825e3,根据容器id,去修改

  • -m:提交的描述信息
  • -a:指定镜像作者
  • e218edb10161:容器ID
  • runoob/ubuntu:v2:指定要创建的目标镜像名

docker commit -m="update tag name" -a="yoyo" 64cc20e825e3 centos:7.5

[root@yoyo ~]# docker commit -m="update tag name" -a="yoyo" 64cc20e825e3  centos:7.5
sha256:254d4dfe9df7765ccf511bd8e7ff1f5de96b0b5a0af2542ee4cd30c8ac0575b3
[root@yoyo ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7.5 254d4dfe9df7 8 seconds ago 200MB
centos latest b9af5ce31055 35 seconds ago 200MB
centos/python-36-centos7 latest b8d15efaa8ec 2 months ago 651MB
ubuntu 15.10 9b9cb95443b5 2 years ago 137MB
training/webapp latest 6fae60ef3446 4 years ago 349MB
[root@yoyo ~]#

设置镜像TAG

如果只是修改镜像TAG名称,可以用docker tag给镜像取个新的tag名称, 这里的id是镜像的id

docker tag 254d4dfe9df7 centos:v7.5

[root@yoyo ~]# docker tag 254d4dfe9df7 centos:v7.5
[root@yoyo ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7.5 254d4dfe9df7 9 minutes ago 200MB
centos v7.5 254d4dfe9df7 9 minutes ago 200MB
centos latest b9af5ce31055 9 minutes ago 200MB
centos/python-36-centos7 latest b8d15efaa8ec 2 months ago 651MB
ubuntu 15.10 9b9cb95443b5 2 years ago 137MB
training/webapp latest 6fae60ef3446 4 years ago 349MB
[root@yoyo ~]#

这时候会多了一个v7.5的标签

删除镜像

上面多了个7.5的TAG,并且IMAGE ID是重复的,可以使用docker rmi 删掉它,可以加-f参数强制删除

  • -f :强制删除;
  • --no-prune :不移除该镜像的过程镜像,默认移除;
[root@yoyo ~]# docker rmi centos:7.5
Untagged: centos:7.5
[root@yoyo ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos v7.5 254d4dfe9df7 12 minutes ago 200MB
centos latest b9af5ce31055 12 minutes ago 200MB
centos/7.5 latest 62a395cab78e 13 minutes ago 200MB
centos/python-36-centos7 latest b8d15efaa8ec 2 months ago 651MB
centos centos7.5.1804 cf49811e3cdb 3 months ago 200MB
centos <none> 9f38484d220f 3 months ago 202MB
ubuntu 15.10 9b9cb95443b5 2 years ago 137MB
training/webapp latest 6fae60ef3446 4 years ago 349MB
[root@yoyo ~]#

想在别人的基础上重新做一个镜像,需要创建一个 Dockerfile 文件,后面讲 Docker 如何构建我们的镜像。

python接口QQ群:717225969

docker学习3-镜像的基本使用的更多相关文章

  1. Docker 学习之镜像导入导出及推送阿里云服务器(三)

    在前面两节里主要就是记录一些docker的基本的操作,包括搜索镜像,拉取镜像,根据镜像创建容器等等,在这一节主要就是记录Docker对于镜像文件的导入导出,及推送到阿里云再从阿里云获取镜像. 一.镜像 ...

  2. 4.docker学习之镜像

    镜像 我们知道,我们想在Windows操作系统上跑Linux,需要安装一个虚拟机程序,然后下载一个Linux镜像,在该虚拟机程序中创建一个虚拟机,并使用该镜像安装对应的Linux操作系统,安装好之后, ...

  3. docker学习构建镜像---第三章节

    一.docker镜像使用 运行docker容器时,使用的镜像如果在本地不存在,docker会自动从docker镜像仓库中下载,默认是从docker hub公共镜像源下载 在这里,我们需要了解:管理和使 ...

  4. Docker学习以及镜像制作流程

    一.何为Docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后 ...

  5. Docker学习之镜像操作

    使用Docker镜像 以下都是Docker镜像的一系列重要名操作,包括获取.查看.搜索.删除.创建.存出或载入.上传等.可使用docker image help命令查看帮助. 1.获取镜像(pull) ...

  6. Docker学习笔记之通过 Dockerfile 创建镜像

    0x00 概述 由于 Docker 镜像的结构优势,使它的占用空间远小于普通的虚拟机镜像,而这就大幅减少了 Docker 镜像在网络或者其他介质中转移所花费的时间,进而提高了我们进行迁移部署的效率.不 ...

  7. Docker学习之Docker镜像基本使用

    Docker学习之Docker镜像基本使用 获取镜像 命令格式:docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] 例如: docker pull ...

  8. Docker学习(二): 镜像的使用与构建

    特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...

  9. Docker学习(二)docker镜像操作

    上一篇:docker学习(一)在centos7上安装docker 列出所有docker镜像 docker images 拉取镜像 docker pull 镜像名 我这里一Tomact为例 首先在Doc ...

  10. Docker学习(六)Dockerfile构建自定义镜像

    Docker学习(六)Dockerfile构建自定义镜像 前言 通过前面一篇文章可以知道怎么去使用一个镜像搭建服务,但是,如何构造自己的一个镜像呢,docker提供了dockerfile可以让我们自己 ...

随机推荐

  1. html中测试div、ul和li、table排列多个块

    前面有三篇博文测试了这三种方式,一.相关博文:LODOP问答部分链接.该文用的是div定位,用的是所有小div相对于大div进行定位,大的div设置relative定位,小的设置absolute相对于 ...

  2. 【Spring Boot学习之一】Spring Boot简介

    环境 Java1.8 Spring Boot 1.3.2 一.Spring Boot特点1.使用java运行项目,内置tomcat,无需外部容器:2.减少XML配置,使用properties文件和注解 ...

  3. 锈迹材质全流程实例:Blender-》SP-》UE4

    转自:https://dawnarc.com/2018/03/next-gen%E9%94%88%E8%BF%B9%E6%9D%90%E8%B4%A8%E5%85%A8%E6%B5%81%E7%A8% ...

  4. Node.js实现PC端类微信聊天软件(四)

    Github StackChat 学习回顾 React和Electron结合 TypeError: fs.existsSync is not a function 在React组件里引入electro ...

  5. Java开发笔记(一百四十二)JavaFX的对话框

    JavaFX的对话框主要分为提示对话框和文件对话框两类,其中提示对话框又分作消息对话框.警告对话框.错误对话框.确认对话框四种.这四种对话框都使用Alert控件表达,并通过对话框类型加以区分,例如Al ...

  6. Python知识之 方法与函数、偏函数、轮询和长轮询、流量削峰、乐观锁与悲观锁

    方法与函数 函数需要手动传参self.cls,方法自动传,比如对象方法自动传self,类方法自动传cls,而函数相对而言需要手动传,比如静态绑定的函数,self是需要手动传值得,比如我们平常使用的函数 ...

  7. 不一样的go语言-玩转语法之一

      这段时间为俗事所累,疲以应付,落下了不少想法,错过了更新的日子.这个专题开始之际,已经准备了不下十几个主题,而在写作的过程中,又有新想法与主题涌现出来.未来预计想写写的内容主要包括: 玩转语法系列 ...

  8. 怎么删除json 键值对

    var obj = { 'id': 1, 'name': 2 } delete obj.id delete obj['id'] console.log(obj) //{ 'name': 2 }

  9. Spark之RDD依赖关系及DAG逻辑视图

    RDD依赖关系为成两种:窄依赖(Narrow Dependency).宽依赖(Shuffle Dependency).窄依赖表示每个父RDD中的Partition最多被子RDD的一个Partition ...

  10. LOJ2401 JOISC2017 Dragon2 计算几何、线段树

    传送门 先考虑每一个攻击方的龙和被攻击方的龙可以与多少个被攻击方/攻击方的龙匹配. 对于攻击方的龙\(A\)和被攻击方的龙\(B\),在道路为线段\((C,D)\)的情况下,能够与下图位置的所有对应属 ...