Docker入门(1)-对镜像的操作

  • Docker系列参考自书籍<Docker技术入门与实战>,本博客以笔记为主. 如果转载请注明出处. -博客园:玲珑骰子安红豆
  • 本章目录:

    • 1.获取镜像
    • 2.查看镜像信息
    • 3.搜寻镜像
    • 4.删除镜像
    • 5.创建镜像
    • 6.导出和载入镜像
    • 7.上传镜像

    ?
    ?

  • 1.获取镜像

    • 镜像是容器运行的前提.
    • 从镜像仓库中拉取或者更新指定镜像
    • 语法:

      • Usage:????????docker pull [OPTIONS] NAME[:TAG|@DIGEST]
      • OPTIONS:

-a, --all-tags=false


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


--help=false


Print usage

  • 如果不显式的指定TAG,则默认会选择latest标签,就是下载镜像库中最新的版本.
  • DEMO

    • 下面演示的是从Docker Hub的Ubuntu仓库下载一个最新的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标签的镜像

    • [[email protected] ~]# sudo docker pull ubuntu:14.04

    ?
    ?

  • 当然了,你也能从第三方服务器下载镜像,例如从DaoCloud社区下载一个镜像.

    • [[email protected] ~]# docker pull daocloud.io/library/nginx:latest
  • 解释:

    • 上面的命令就是我们从 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命令已经对镜像新增了一个TAG是aaa的标签
        • 两个镜像的IMAGE ID完全相同,这就代表了这两个其实是指向同一镜像文件的,只是TAG不同

      ?
      ?

    • DOCKER INSPECT

      • 使用docker inspect 命令可以获取镜像的详细信息:

        • [[email protected] ~]# docker inspect dc8dd8718e57
        • [{
        • "Id": "dc8dd8718e57c6bfb877b74b12b0b74572f9af31bcac6143321817d8318045bc",

          • ...........................................................太长了 不粘贴了
      • 当然了,你还可以指定显示某一个字段的信息,例如:

        • [[email protected] ~]# docker inspect -f {{".Architecture"}} dc8dd8718e57
        • amd64
        • [[email protected] ~]# docker inspect -f {{".VirtualSize"}} dc8dd8718e57
        • 119165165

      ?
      ?

  • 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):

      • [[email protected] ~]# docker rmi bb8f1ef45c26
    • 使用区别:

      • 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 和-m是commit命令的选项 ,之后是我们的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 save和docker 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=


文件路径

?
?

  • 实战:

    • 先查看镜像列表

      • [[email protected] docker]# docker images
      • REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
    • 载入镜像:

      • [[email protected] docker]# docker load -i centos_7.3.tar

      • [[email protected] docker]# docker load < centos_7.3.tar

    ?
    ?

  • 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:
时间: 2024-10-28 09:52:03

Docker入门(1)-对镜像的操作的相关文章

Docker入门:概念 镜像 容器 仓库 数据管理

时间<<--->>时间戳:进行时间计算时,需要利用转换的时间戳实现 date  +%Y%m%d  -d @148569820<<--->>date +s% -d '2016-11-16 16:00:00'     --- 小 Q ---------------------------------------------------------------------------------------------------- Docker 概 念  一个开

Docker入门命令

Edit Docker入门命令 # 安装镜像sudo docker pull ubuntu:12.04 # 镜像列表sudo docker images# 运行镜像sudo docker run -t -i ubuntu:12.04 /bin/bash# 运行镜像,如果这个镜像不存在,则直接从仓库中下载下来 然后退出用exitsudo docker run -t -i training/sinatra /bin/bash 利用Dockerfile创建镜像 # 创建文件mkdir sinatrac

Docker的安装、镜像操作、容器操作及资源控制

Docker概述 Docker是在linux容器里运行应用的开源工具,是一种轻量级的虚拟机.Docker包含三大核心概念,分别是:镜像.容器和仓库.Docker的容器技术可以在一台主机上轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.通过这种容器打包应用程序,意味着简化了重新部署.调试这些琐碎的重复工作.极大地提高了工作效率. Docker容器与传统虚拟化的比较 特性 Docker容器 虚拟机 启动速度 秒级 分钟级 计算能力消耗 几乎无 消耗50% 性能 接近原生 弱于 单机系统支

关于 Docker 镜像的操作,看完这篇就够啦 !(下)

原文:关于 Docker 镜像的操作,看完这篇就够啦 !(下) 紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌握的.本文将带您一步一步,图文并重,上手操作来学习它. 目录: 一.Docker 删除镜像 1.1 通过标签删除镜像 1.2 通过 ID 删除镜像 1.3 删除镜像的限制 1.4 清理镜像 二.Docker 创建镜像 2.1 基于已有的镜像创建

Docker入门(二):容器与镜像常用指令

零.docker常用命令 #镜像名 版本标签 镜像id 创建时间 镜像大小 REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest fce289e99eb9 6 months ago 1.84kB docker version/info #查看版本/信息 docker --help #查看说明文档 docker logs -f -t --tail 日志条数 容器ID #查看容器日志 docker inspect #获取容器/镜像的元数据 一

docker入门——镜像简介

什么是docker镜像 Docker镜像是由文件系统叠加而成. 最底端是一个引导文件系统,即bootfs: 这很像典型的Linux/Unix的引导文件系统.Docker用户几乎永远不会和引导文件系统有什么交互.实际上,当一个容器启动后,它将会被移到内存中,而引导文件系统则会被卸载(unmount),以留出更多的内存供initrd磁盘镜像使用. Docker镜像的第二层是root文件系统rootfs: 它位于引导文件系统之上.rootfs可以是一种或多种操作系统(如Debian或者Ubuntu文件

docker 基本操作Ⅱ(关于镜像操作)

1 通过模板创建镜像 - 导入镜像基本操作 https://openvz.org/Download/template/precreated 在这个网址里面下载对应的模板 [[email protected] src]# wget http://download.openvz.org/template/precreated/centos-7-x86_64-minimal.tar.gz //下载centos7的模板 [[email protected] src]# cat centos-7-x86_

Docker镜像文件操作

1什么是Docker镜像 Docker镜像是由文件系统叠加而成(是一种文件的存储形式).最底端是一个文件引导系统,即bootfs,这很像典型的Linux/Unix的引导文件系统.Docker用户几乎永远不会和引导系统有什么交互.实际上,当一个容器启动后,它将会被移动到内存中,而引导文件系统则会被卸载,以留出更多的内存供磁盘镜像使用.Docker容器启动是需要的一些文件,而这些文件就可以称为Docker镜像. 2列出镜像 列出docker下的所有镜像:docker images l  REPOSI

docker入门-镜像管理命令篇

一.下载.上传镜像 1:下载安装centos镜像 语法:docker [参数][镜像名称] [[email protected] ~]# docker pull centos Using default tag: latest latest: Pulling from library/centos a02a4930cb5d: Pull complete Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c734