docker入门-对镜像的操作

author author     2022-09-16     634

关键词:

-a, --all-tags=false

下载所有tegged的镜像(下载所有标签不同的镜像)

--help=false

Print usage

  • 如果不显式的指定TAG,则默认会选择latest标签,就是下载镜像库中最新的版本.
  • DEMO
    • 下面演示的是从Docker HubUbuntu仓库下载一个最新的Ubuntu操作系统的(不指定版本,默认为latest)镜像
  • [[email protected] ~]# docker pull ubuntu
  • latest: Pulling from ubuntu
  • 02658b5e0e10: Pull complete
  • ...
  • Digest: sha256:8e6b67faf44a036a18b9a3987e826fe3accbd1742e219145a461a3210a9d8142
  • Status: Downloaded newer image for ubuntu:latest
  • 解释:
    • 该命令实际上下载的就是ubuntu:latest镜像
    • 由于未指定注册服务器,即从默认的注册服务器registry.hub.docker.com中的ubuntu仓库下载镜像,相当于docker pull registry.hub.docker.con/ubuntu:latest
    • 下载过程中可以看出,镜像文件一般由若干层组成,行首的02658b5e0e10这样的字符串代表了各层的ID.下载过程中会获取并输出镜像的各层信息.(layer) 其实是AUFS(Advanced Union File System,一种文件联合系统)中的重要概念,是实现增量保存与更新的基础.

? ?

  • 还可以通过指定标签(tag)来下载特定版本的一某一个镜像,例如14.04标签的镜像

    ? ?

  • 当然了,你也能从第三方服务器下载镜像,例如从DaoCloud社区下载一个镜像.
  • 解释:
    • 上面的命令就是我们从 daocloud下载一个镜像
    • 这段命令(docker pull daocloud.io/library/nginx:latest)可拆分为四部分:

docker pull

毋庸置疑的docker命令

daocloud.io/library/

注册服务器地址

nginx

访问的仓库

latest

下载的镜像版本

? ?

  • 2.查看镜像信息
    • DOCKER IMAGES
      • 使用docker iamges 查看当前本机上已有的镜像
        • [[email protected] ~]# docker images
        • 仓库 标签信息 镜像ID 镜像创建时间 镜像大小
        • REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
        • ubuntu latest dc8dd8718e57 4 weeks ago 119.2 MB
        • ubuntu 14.04 7198809c062f 4 weeks ago 188 MB
        • daocloud.io/library/centos latest 4beff0251382 9 weeks ago 192.5 MB
        • daocloud.io/library/nginx latest bb8f1ef45c26 10 weeks ago 109.4 MB
      • 需要了解:
        • 其中镜像的ID( IMAGE ID )信息十分重要,它唯一标识了镜像.
        • TAG信息用来标记来自同一个仓库的不同镜像. 例如ubuntu仓库中有多个镜像,通过TAG信息来区分发型版本,包括 10.01,12.04,13.04,14.04等标签

      ? ?

    • DOCKER TAG
      • 还可以使用docker tag命令为本地镜像添加一个新的标签.例如
        • Usage: docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
        • [[email protected] ~]# docker tag ubuntu:latest ubuntu:aaa
        • [[email protected] ~]# docker images
        • REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
        • ubuntu latest dc8dd8718e57 4 weeks ago 119.2 MB
        • ubuntu aaa dc8dd8718e57 4 weeks ago 119.2 MB
      • 需要了解:
        • 上面执行docker tag命令已经对镜像新增了一个TAGaaa的标签
        • 两个镜像的IMAGE ID完全相同,这就代表了这两个其实是指向同一镜像文件的,只是TAG不同

      ? ?

    • DOCKER INSPECT
      • 使用docker inspect 命令可以获取镜像的详细信息:
        • [[email protected] ~]# docker inspect dc8dd8718e57
        • [{
        • "Id": "dc8dd8718e57c6bfb877b74b12b0b74572f9af31bcac6143321817d8318045bc",
          • ...........................................................太长了 不粘贴了
      • 当然了,你还可以指定显示某一个字段的信息,例如:

      ? ?

  • 3.搜寻镜像(DOCKER SEARCH)
    • 使用docker search命令可以仓库中共享的镜像,默认搜索Docker Hub官方仓库的镜像
    • 语法:
      • Usage:????????docker search [OPTIONS] TERM
      • OPTIONS:

--automated=false

只列出 automated build类型的镜像

--help=false

Print usage

--no-trunc=false

显示完整的镜像描述

-s, --stars=0

列出收藏数不小于指定值的镜像

? ?

  • 例如,搜索带mysql关键词的镜像如下所示:
    • [[email protected] ~]# docker search mysql
    • NAME DESCRIPTION STARS OFFICIAL AUTOMATED
    • mysql MySQL is a widely used, open-source relati... 4663 [OK]

? ?

  • 4.删除镜像(DOCKER RMI)
    • 使用 docker rmi 命令可以删除本地镜像.
    • 语法:
      • Usage: docker rmi [OPTIONS] IMAGE [IMAGE...]
      • OPTIONS:

-f, --force=false

强制删除镜像(忽略容器正在使用)

--help=false

Print usage

--no-prune=false

不移除该镜像的过程镜像,默认移除

? ?

  • DEMO
    • 使用镜像的标签删除镜像(REPOSITORY:TAG)
      • [[email protected] ~]# docker rmi ubuntu:14.04
      • Untagged: ubuntu:14.04
      • Deleted: 7198809c062fa2c10dcb93792e4cf76000a8c8a0d5a4588b1f170e9406b7dd4e
      • ...省略删除信息
    • 用镜像ID删除镜像(IMAGE ID):
    • 使用区别:
      • IMAGE ID:使用ID删除一个镜像时,会删除此镜像的所有标签和文件,
      • TAG:使用标签删除镜像时,只有当镜像标签全部删除后,镜像文件才会被删除(推荐使用这种)

? ?

  • 强制删除镜像:
    • 如果有容器正在运行此镜像(无法删除镜像时),可以在rmi命令中追加一个-f进行强制删除!这种强制删除会造成其他的遗留问题.
    • 正确的做法是
      • 查看本机上的所有容器(命令 docker ps -a)
      • 停止此镜像正在运行中的所有容器 (命令:docker stop CONTAINER ID )
      • 删除依赖依赖此镜像的容器(命令: docker rm CONTAINER ID )
      • 删除此镜像(命令: docker rmi IMAGE ID)

      ? ?

  • 5.创建镜像
    • 创建镜像的方法有三种:基于已有镜像的容器创建,基于本地模板导入,基于DockerFile创建,这里我只说

    ? ?

    • 基于已有镜像的容器创建(DOCKER COMMIT):
      • 该方法主要是使用docker commit命令
      • 语法:
        • 从容器创建一个新的镜像
        • Usage:????????docker commit [OPTIONS] CONTAINER [NEW_REPOSITORY[:TAG]]
        • OPTIONS:

-a, --author=

作者信息 (e.g., "姓名 <邮箱>")

-c, --change=[]

使用Dockerfile指令来创建镜像

--help=false

Print usage

-m, --message=

提交时的说明文字

-p, --pause=true

commit时,将容器暂停

  • 实战:
    • 下面将掩饰如何使用该命令创建一个新镜像,首先要创建一个容器,并在其中进行修改操作,例如,创建一个test文件,之后退出!
      • [[email protected] ~]# docker run -ti centos:7.3 /bin/bash
      • [[email protected] ~]# cd /home
      • 创建文件并保存,退出容器(ctrl+D或者 输入exit+火车)
      • 记住容器的ID (也可以通过命令:dockers ps -a查看),例如我的ID: 9f21e71c8ab0
    • 下面我们实际运行一下commit命令:
      • [[email protected] ~]# docker commit -a "linglongtouzianhongdou" -m "new Docker Image" 9f21e71c8ab0 newdocker:1.0
      • 5b59c0c6496fe987ecc19eb3b67663cd14b013da8a04df8dfa7e0b8c99a2c550(生成出的镜像ID)
    • 我们可以看到, commit后跟的-a -mcommit命令的选项 ,之后是我们的CONTAINER ID:9f21e71c8ab0 之后是一个 NAME[:TAG] 仓库名:标签
    • 现在我们查看我们刚刚创建的镜像:
      • [[email protected] ~]# docker images
      • REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
      • newdocker 1.0 5b59c0c6496f 18 seconds ago 192.5 MB
      • centos 7.3 4beff0251382 9 weeks ago 192.5 MB

    ? ?

    ? ?

  • 6.存出和载入镜像
    • 可以使用docker savedocker load命令来导入镜像和载出镜像

    ? ?

    • 存出镜像(DOCKER SAVE):
      • 如果要存储镜像到本地文件,可以使用docker save命令
      • 语法:
        • 保存镜像(载出镜像)
        • Usage:????????docker save [OPTIONS] IMAGE [IMAGE...]
        • Usage:????????docker save IMAGE > file|URL
        • OPTIONS:

--help=false

Print usage

-o, --output=

输出路径

  • 实战
    • 先查看镜像:
      • [[email protected] ~]# docker images
      • REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
      • centos 7.3 4beff0251382 9 weeks ago 192.5 MB
    • 存储镜像:
      • 这行命令中有个参数 -o 指定路径和文件名称,如果没写路径,会存到当前路径中!
      • [[email protected] ~]# docker save -o centos_7.3.tar centos:7.3
        • or
      • [[email protected] ~]# docker save centos:7.3 > centos_7.3.tar
  • 载入镜像(DOCKER LOAD):
    • 可以使用docker load从本地的文件中再导入到本地的镜像仓库,例如从文件 centos_7.3.tar导入到本地镜像列表
    • 语法:
      • 加载镜像(载入镜像)
      • Usage:????????docker load [OPTIONS]
      • Usage:????????docker load < file|URL

--help=false

Print usage

-i, --input=

文件路径

? ?

  • 7.上传镜像
    • 可以使用docker push 命令上传镜像到仓库,默认上传到DockerHub官方仓库(需要登录),命令格式为docker push NAME[:TAG] (push需要用tag命令先打个标签)

    ? ?

    • 需要提前在官网注册一下帐户!
      • [[email protected] docker]# docker tag centos:7.3 user/test:7.3
      • [[email protected] docker]# docker push user/test:7.3
      • The push refers to a repository [user/test] (len: 1)
      • 4beff0251382: Image push failed
      • 4beff0251382: Buffering to Disk
      • Please login prior to push:
      • Username:
      • Password:
      • Email:

docker入门-对镜像的操作

...   1.获取镜像镜像是容器运行的前提.可以利用docker的pull命令从网络上下载镜像,命令格式:dockerpullNAME[:TAG].对于docker镜像来说,如果不显式的指定TAG,则默 查看详情

docker入门-中篇

对于Docker的操作,主要是对Docker镜像和容器的操作,所以下面我们就来看下开发中常用到的一些镜像和容器操作。镜像常用操作之前提到过,DockerHub上有大量的高质量的镜像可以用,而我们想要对镜像进行操作显... 查看详情

docker新手入门(代码片段)

1、简介Docker是一个开源的应用容器引擎;是一个轻量级容器技术;Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;运行中的这个镜像称为容器,容器启... 查看详情

docker入门

序之前一直想学一下docker,但是基本看完就忘记了,下次用还是要再翻一下教程。最近项目要用,连续用了一段时间,就熟练了,基本的使用以及概念都记住了。趁现在还刚入门,就把入门一些容易遇到的问题记录一下,刚入门... 查看详情

docker入门之简单的容器使用(代码片段)

docker入门之简单的容器使用首发:arppinging一、运行容器1)搜索和下载镜像在之前我们打过一个比分,容器就像vmwareworkstation一样,而镜像类似于一个OVA文件,如果我们想让容器变得有意义,那镜像是我们必不可少的一个"货... 查看详情

docker入门-中篇

对于Docker的操作,主要是对Docker镜像和容器的操作,所以下面我们就来看下开发中常用到的一些镜像和容器操作。镜像常用操作之前提到过,DockerHub上有大量的高质量的镜像可以用,而我们想要对镜像进行操作显... 查看详情

docker入门到实践——简单操作

...于系统支持量单机支持上千个容器一般几十个2.基本概念Docker包括三个基本概念:镜像(Image)容器(Container)仓库(Repository)Docker镜像Docker镜像就是一个只读的模板。镜像可以用来创建Docker容器。Docker容器Docker利用容器来运行... 查看详情

docker入门学习笔记(代码片段)

docker基础操作入门笔记镜像操作容器操作数据卷操作(挂载)为什么要挂载如何挂载其他docker设置开机自启时间同步问题jar包的运行文章中几乎所有的写容器Id的地方,都可以使用容器名称来写命令镜像操作列出镜像... 查看详情

docker入门(代码片段)

Docker简介Docker是一种虚拟容器技术,是伴随PaaS(平台即服务)产生的,常用的虚拟化容器技术有两种:全虚拟化和操作系统虚拟化(OS)。VMvareworkstation是全虚拟化的实现,而Docker是基于操作系统虚拟化技术的一种。Docker与VMvare对比,... 查看详情

对docker了解多少?10分钟带你从入门操作到实战上手

Docker简述Docker是一种OS虚拟化技术,是一个开源的应用容器引擎。它可以让开发者将应用打包到一个可移植的容器中,并且该容器可以运行在几乎所有linux系统中(Windows10目前也原生支持,Win10前需要内置虚拟机),正所谓“一次... 查看详情

docker入门与应用系列镜像管理

1.1什么是镜像  简单说,Docker镜像是一个不包含Linux内核而又精简的Linux操作系统。1.2镜像从哪里来  DockerHub是由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。https://hub... 查看详情

docker快速入门(代码片段)

阅读目录1容器诞生背景及优势2Docker基本概念3安装docker4获取镜像5列出镜像6查看镜像、容器、数据卷所占用的空间7虚悬镜像8中间层镜像9按需列出镜像10删除镜像Docker是Go语言开发实现的容器。2013年发布至今,备受推崇。相关文... 查看详情

docker删除镜像

  根据http://www.docker.org.cn/book/docker/what-is-docker-16.html进行了Docker简单的入门操作,操作完成之后想把操作中创建的镜像镜像删除,可是发现删除镜像貌似不是那么简单  第一步:需要先删除对应的容器  第二步:删除镜像... 查看详情

docker入门实战

1.Docker  优势:    .更高效利用系统资源:由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高... 查看详情

docker从入门到放弃(代码片段)

??为什么要学习docker呢?深有体会,由于一些原因只能在他人电脑上搭建环境,明明在自己电脑上的程序跑的好好的,在他人的电脑上就是死活出错。折磨人呀!!!!!可是能怎么办,工作还得继续,曲线救国呗,折腾了一天... 查看详情

docker入门-下篇

通过之前的文章我们已经熟悉了Docker的基本操作,当然Docker除了可以帮助我们搭建一些项目所需要的环境以外,还可以帮助我们实现项目的部署,本章我们就来讲解下如何使用Docker进行项目的部署。1.Docker是如何实现... 查看详情

docker入门(代码片段)

简介:  Docker是一种容器技术,由pass提供商dotCloud开源的容器引擎,可以让开发者将应用以及应用的依赖环境等一起打包成镜像,方便的移植到其他Linux或Windows机器上。常用概念:Docker主机:安装了Docker的机器。Docker客户... 查看详情

docker入门案例(代码片段)

Docker的使用docker是一个开源的应用容器引擎,基于go语言实现,可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后完全发布到任何Linux机器上,也可以实现虚拟化核心概念Docker主机:安装了Docker程序... 查看详情