• docker镜像


    镜像是运行容器的前提。

    1、获取镜像

    docker pull NAME[:TAG]

    其中,NAME是镜像仓库的名称(用来区分镜像),TAG是镜像的标签(往往用来表示版本信息)

    例如,获取一个ubuntu14.04系统的基础镜像的命令为:

    docker pull ubuntu1:4.04

    对应docker镜像来说,如果不显示指定TAG,则默认会选择latest标签,即最新版本的镜像。(但在生产环境中,最好不要使用最新的版本)。

    严格来讲,镜像的仓库名称中还应该添加仓库的地址(即registry,注册服务器)作为前缀,只是我们默认使用的是Docker Hub服务,该前缀可以忽略。

    例如:

    docker pull ubuntu:14.04相当于docker pull register.hub.docker.com/ubuntu:14.04命令。
    如果从非官方的仓库下载,则需要在仓库的名称前指定完整的仓库地址。例如从网易蜂巢的镜像源来下载ubuntu:14.04镜像,就应该使用下面的命令:
    docker pull hub.c.163.com/public/ubuntu:14.04

    pull子命令支持的选项主要包括:-a,--all-tags=true|false:是否获取仓库中的所有镜像,默认为否。

    下载镜像到本地后,即可随时使用该镜像了,例如利用该镜像创建一个容器,在其中运行bash应用,执行ping localhost命令:

    sudo docker run -it ubuntu:14.04 bash
    ping localhost

     退出docker运行的ubuntu:

    exit

    2、查看镜像信息

    (1)使用images命令列出镜像

    docker images

    该命令可以列出本机上已有镜像的基本信息。

    在列出的信息中,可以看到以下几个字段信息。

    a、来自于哪个仓库,比如ubuntu仓库用来保存ubuntu系列的基础镜像;

    b、镜像的标签信息,比如14.04用来标注不同的版本信息。标签只是标记,并不能标识镜像的内容;

    c、镜像ID(唯一标识镜像),如果镜像ID一样,说明他们指向的是同一个镜像;

    d、创建时间,也就是镜像最后的更新时间。

    e、镜像大小,优秀的镜像往往体积都较小。

    docker images的子命令包括:

    -a =true|false:是否列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层),默认为false;

    --digests :显示镜像的摘要信息,默认为false

    -f :显示满足条件的镜像,如dangling=true只显示没有被使用的镜像;

    (2)、使用tag命令为镜像添加别名。

    sudo docker tag ubuntu:14.04 myubuntu:14.04

    添加成功之后,用户就可以直接使用别名myubuntu:14.04来标识这个镜像了。

    (3)、使用inspect命令查看详细信息。

    sudo docker inspect

    该命令可以获取镜像的制作者、适应架构、各层数字摘要等

    如果我们需要获取指定的信息,可以使用以下命令

    sudo docker inspect ubuntu:14.04 -f {{".RepoTags"}}

    4、使用history命令查看镜像历史

    docker history 

    该命令可以列出镜像的各层创建信息。

    注意:过长的命令被自动截断了,可以使用--no-trunc选项来输出完整的命令。

    5、搜索镜像

    docker search

    该命令可以搜索远端仓库中共享的镜像,默认搜索官方仓库中的镜像。用法为docker search TERM,支持的 参数注意包括:

    a、--automated=true|false:仅显示自动创建的镜像,默认为false;

    b、--no-trund=true|false:输出信息不截断显示,默认为false;

    c、-s=X:指定只显示评价为指定星级及以上的镜像,默认为0,也就是输出所有镜像。

    例如,搜索所有自动创建的评价为3+的带nginx关键字的镜像,如下图:

    提示已经过期,所以,使用以下命令:

    docker search --filter=is-automated=true --filter=stars=3 nginx

    6、删除镜像

    (1)、使用标签删除镜像

    docker rmi IMAGE [IMAGE...]

    其中IMAGE可以为标签或ID。

    例如,要删除掉myubuntu:14.04镜像

    提示:本地的ubuntu:14.0镜像并不会受到影响,当同一个镜像拥有多个标签时,docker rmi 目录只会删除该镜像多个标签中的指定标签,并不会影响镜像文件。

    (2)、使用镜像ID删除镜像

    当时用docker rmi命令,后面跟上镜像ID(也可以是能进行区分的部分ID串前缀)时,会先尝试删除所有指向改镜像的标签,然后删除镜像本身。

    注意:当有该镜像创建的容器存在时,镜像文件默认是无法被删除的,例如,先利用ubuntu:14.04镜像创建一个简单的容器来输出一段话

    docker run ubuntu:14.04 echo 'hello! I am here'

    此时使用命令

    docker ps -a

    该命令可以查看到本机上存在的所有容器。

    此时试图删除该镜像,Docker会提示有容器正在运行,无法删除

    如果要想强制删除,可以使用-f参数

    docker rmi -f  ubuntu:14.04

    注意:通常并不推荐使用-f参数来强制删除一个存在容器依赖的镜像。正确的做法是,先删除依赖改镜像的所有容器,再来删除镜像。

    如首先删除容器ccb42d20d95e:

    docker rm ccb42d20d95e

    再使用ID来删除镜像。

     7、创建镜像

    创建镜像的方法主要有三种:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建。

    (1)、基于已有镜像的容器创建

    该方法主要使用docker commit命令。其格式为:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]],主要选项包括:

    CONTAINER :表示容器的ID或者名称

    [REPOSITORY[:TAG]]:表示创建的镜像的唯一标识,如:名称:版本号

    ①、-a, --author="": 作者信息;

    ②、-c, --change=[]: 提交的时候执行Dockerfile指令,包括CMD|ENTRYPOINT|ENV|EXPOSE|LABEL|ONBUILD|USER|VOLUME|WORKDIR等;

    ③、-m,--message="": 提交消息;

    ④、-p, --pause=true: 提交时暂停容器运行。

    下面演示一下如何使用该命令创建一个新镜像。首先启动一个镜像,并在其中进行修改操作,例如创建一个test文件,之后退出:

    记住容器的ID为:21799cc91973

    此时该容器跟原ubuntu:14.04相比,已经发生了变化,可以使用docker commit目录来提交一个新的镜像。提交时可以使用ID或名称来指定容器:

    docker commit -m "Add a new file" -a "yzh" 21799cc91973 test:0.1

    提交成功,将返回镜像的ID信息。此时查看本地镜像列表,会发现新创建的镜像已经存在了:

    (2)、基于本地模板导入

    用户也可以直接从一个操作系统模板文件导入一个镜像,主要使用docker import命令。其格式为:docker import [OPTIONS] file|URL| - [REPOSITORY[:TAG]]。

    要直接导入一个镜像,可以使用openVZ提供的模板来创建,或者用其他已导出的镜像模板来创建。openVZ模板的下载地址为:https://wiki.openvz.org/Download/template/precreated

    例如,下载了ubuntu:14.04的模板压缩包,之后使用以下命令导入:

    cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:14.04

    然后查看本地镜像,发现新的镜像已经存在。

    8、存出和载人镜像

    用户可以使用docker save和docker load命令来存出和载人镜像。

    (1)、存出镜像

    如果要导出镜像到本地文件,可以使用docker save 命令。例如,导出本地的ubuntu:14.04镜像文件为ubuntu_14.04.tar,如下所示

    docker save -o ubuntu_14.04.tar ubuntu:14.04

    之后,便可以通过复制文件ubuntu_14.04.tar,将改镜像复制给别人。

     (2)、载入镜像

    可以使用docker load 将导出的tar文件再导入到本地镜像库,例如从文件ubuntu_14.04.tar导入镜像到本地镜像列表,如下所示

    docker load --input ubuntu_14.04.tar
    或
    docker load < ubuntu_14.04.tar

    这将导入镜像及其相关的元数据信息(包括标签等)。导入成功后,可以使用docker images继续查看。

    9、上传镜像

    可以使用docker push命令上传镜像到仓库,默认上传到Docker Hub官方仓库(需要登录)。其格式为:docker push NAME[:TAG] | [REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG]

    用户在Docker Hub网站注册之后,可以上传自制镜像。例如用户user上传本地的test:latest镜像,可以先添加新的标签user/test:latest,然后用docker push命令上传:

    1、docker tag test:latest user/test:latest
    2、docker push user/test:latest

    第一次上传是回提示输出用户名和密码。

  • 相关阅读:
    FastCgi与PHP-fpm之间是个什么样的关系
    MySql的like语句中的通配符:百分号、下划线和escape
    mysql将int 时间类型格式化
    navicat 结合快捷键
    MySQL中concat函数
    case when then else end 用法
    PhpStorm主题
    Having与Where的区别
    无需图形界面环境下的浏览器
    Socket常见错误
  • 原文地址:https://www.cnblogs.com/cq-yangzhou/p/10288787.html
Copyright © 2020-2023  润新知