zoukankan      html  css  js  c++  java
  • Docker的核心概念,镜像操作

    简介

    在实际使用Docker的过程中,遇到一些问题,但是总没有系统的博文可以详细的介绍Docker,所以个人写一个由浅入深的系统学习Docker过程。
    这里首先介绍Docker的三大核心概念:镜像(Image),容器(Container),仓库(Repository),其实你理解了着三个核心概念,也就能顺利的理解Dokcer的整个生命周期了。

    Docker 镜像

        Docker镜像(Image)类似于虚拟机镜像,可以理解为一个面向Dokcer引擎的只读模板,包含了文件系统。
        比如:一个镜像可以包含一个完整了Centos操作系统,可以把它称为Centos镜像。当然,镜像也可以只安装了Mysql应用程序(或用户需要的其他软件),就可以称为Mysql镜像。
        镜像是创建Docker容器的基础,它可以通过版本管理和增量的文件系统,如Docker Hub。

    Docker 容器

        Docker容器(container)类似于轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,但是所有的容器是相互隔离的,互不可见的,这就提供了一个实体机可以安装多个容器,且很轻量级相对于虚拟机。镜像本身是只读的,容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身保持不变。

    Docker仓库

        Docker仓库(Repository)类似于代码库,是Dokcer集中存放镜像的场所。实际上,注册服务器是存放仓库的地方,其上往往存放着很多仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。

        根据存储的镜像公开分享与否,Docker仓库可以分为公开仓库(Public)和私有仓库(Private)两种形式。目前,最大的公开仓库是Docker Hub,存放 了数量庞大的镜像供用户下载,国内的公开镜像包括Docker Pool,可以提供稳定的国内访问,与GitHub类似。

    安装Docker

        Docker支持主流的操作系统平台使用,包括Ubuntu、Centos、Window以及MacOS系统等。当然,肯定在Linux系列平台是原生支持的,体验最好。Centos下具体的安装请看上一篇博文# Centos搭建Docker环境,后续讲述的Docker环境以Centos云主机.。

    获取镜像

        这里讲述如何使用pull命令从Docker Hub仓库下载镜像到本地,如何查看本地已有的镜像文件信息;已经如何push本地镜像到Docker Hub仓库。注册Docker Hub请访问DockerHub

        镜像是Docker运行容器的前提,docker pull 命令从网络上下载镜像。格式为:

    docker pull NAME[:TAG]    //不指定TAG,默认会选择latest标签,即最新版本的镜像
    docker pull mysql:latest 等同于 docker pull mysql 
    

    [root@VM_149_72_centos ~]# docker pull mysql  //下载
    Using default tag: latest
    Trying to pull repository docker.io/library/mysql ... 
    sha256:7cdb08f30a54d109ddded59525937592cb6852ff635a546626a8960d9ec34c30: Pulling from docker.io/library/mysql
    f49cf87b52c1: Pull complete 
    78032de49d65: Pull complete 
    837546b20bc4: Pull complete 
    9b8316af6cc6: Pull complete 
    1056cf29b9f1: Pull complete 
    86f3913b029a: Pull complete 
    f98eea8321ca: Pull complete 
    3a8e3ebdeaf5: Extracting [==================================================>] 79.74 MB/79.74 MB
    4be06ac1c51e: Download complete 
    920c7ffb7747: Download complete 
    

    在下载过程中可以看到,镜像文件一般有若干层组成,行首f49cf87b52c1这样的字符串代表了各层的ID。层(Layer)其实是AUFS中重要的概念(代表一种联合文件系统),是实现增量保存和更新的重要基础。

    查看镜像

    [root@VM_149_72_centos etc]# docker images
    REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
    docker.io/mysql         latest              f008d8ff927d        4 days ago          408.5 MB
    docker.io/hello-world   latest              f2a91732366c        8 weeks ago         1.848 kB
    

    以上信息的个字段意思:

    • 来自于那个仓库,比如docker.io/mysql仓库
    • 镜像的标签信息,比如latest
    • 镜像的ID号(唯一)
    • 创建时间
    • 镜像大小
      这里的镜像的ID信息十分重要,它唯一标识了镜像。
      docker tag 命令为本地镜像添加新的标签:如
     docker tag docker.io/mysql mysql:1.0
    


    如果细心的你会发现其实它们的ID事一样的,都是:f008d8ff927d,其实这里它们都指向同一个镜像文件就,相当起了一个别名,和window系统的快捷方式类似。
    获取镜像的详细信息docker inspect ID

    docker inspect ID
    

    搜索镜像

    使用docker search 命令可以远程搜索远程仓库中共享的镜像,默认搜索Docker Hub官方的镜像。

    docker search imageName 
    //可以指定一下参数
    -- automated=false 仅显示自动创建的镜像
    --no-trunc=false 输出信息不截断显示
    -s,--stars=0指定仅显示评价为指定星级以上的镜像
    

    下面是搜索radis缓存

    可以看到返回了很多包含关键字的镜像,其中有镜像名字、描述、星级、是否官方创建,是否自动创建,默认排序是按照星级排序。

    删除镜像

    使用docker rmi 命令可以删除镜像,命令格式docker rmi IMAGE,这里可以是标签或ID

    docker rmi id
    

    当镜像只剩下一个标签的时候要小心,使用docker rmi会删除对应镜像,会删除所有层

    待续。。

  • 相关阅读:
    MySql cmd下的学习笔记 —— 引擎和事务(engine,transaction)
    MySql cmd下的学习笔记 —— 有关视图的操作(algorithm)
    MySql cmd下的学习笔记 —— 有关视图的操作(建立表)
    MySql cmd下的学习笔记 —— 有关常用函数的介绍(数学函数,聚合函数等等)
    MySql cmd下的学习笔记 —— 有关多表查询的操作(多表查询练习题及union操作)
    MySql 在cmd下的学习笔记 —— 有关多表查询的操作(内连接,外连接,交叉连接)
    MySql cmd下的学习笔记 —— 有关子查询的操作(where型,from型,exists型子查询)
    MySql cmd下的学习笔记 —— 有关select的操作(order by,limit)
    剑指Offer--第21题 调整数组顺序使奇数位于偶数前面;
    剑指Offer--和为s的连续正数序列
  • 原文地址:https://www.cnblogs.com/moyhui/p/8321998.html
Copyright © 2011-2022 走看看