您的位置:首页 > 运维架构 > Docker

Docker技术入门与实战(四)

2020-07-27 21:18 25 查看

使用Docker镜像

  • 获取镜像

    可以使用 docker [image] pull 命令直接从 Docker Hub 镜像源来下载镜像。
    该命 令的格式为 docker [image] pull NAME [ :TAG] 。 其中, NAME是镜像仓库名称(用来区分镜像), TAG是镜像的标签(往往用来表示版本 信息)。 通常情况下, 描述一个镜像需要包括 “名称+标签“ 信息。
    例如, 获取一个Ubuntu 18.04 系统的基础镜像可以使用如下的命令:
    $ docker pull ubuntu: 18. 04
    pull 子命令支持的 选项主要包括: -a, --all-tags=true|false:是否获取仓库中的所有镜像,默认为否;
  • –disable-content-trust:取消镜像的内容校验,默认为真。
    另外,有 时需要使用镜像代理服务来加速Docker镜像获取过程 ,可以在Docker服务 启动配置中增加 --registry-mirror=proxy_URL来指定镜像代理服务地址(如https:// registry.docker-en.com)
    注意:如获取镜像过程遇Error response from daemon: Get https://registry-1.docker.io/v2/library/ubuntu/manifests/18.04: net/http: TLS handshake timeout,可按以下解决方法:
cd /etc/docker
vi daemon.json   //docker默认的配置文件,如果没有新建,如果有,则修改
{

"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com"]

}
service docker restart  //重启docker服务
```
  • 查看镜像

    1. 使用images命令列出镜像 使用docker images或docker image ls 命令可以列出本地主机上已有镜像的基 本信息。
      images子命令主要支持如下选项, 用户可以自行进行尝试:
    • -a, --all=true I false: 列出所有(包括临时文件)镜像文件,默认为否;
    • –digests=true|false: 列出镜像的数字摘要值,默认为否;
    • -f, --filter=[] : 过滤列出的镜像,如dangling 式rue 只显示没有被使用的镜像;也可指定带有特定标注的镜像等;
    • –format=“TEMPLATE” : 控制输出格式,如. ID代表ID信息,.Repository 代表仓库信息等;
    • –no-trunc=trueI false: 对输出结果中太长的部分是否进行截断,如镜像的ID 信息,默认为是;
    • -q, --quiet=trueI false: 仅输出ID信息, 默认为否。
      其中, 还支持对输出结果进行控制的选项,如 -f. --filter=[]、–no-trunc= trueI false、 -q、 --quiet=rueI false等。
      更多子命令选项还可以通过man docker-images来查看。
    1. 为了方便在后续工作中使用特定镜像,还可以使用docker tag命令来为本地镜像任 意添加新的标签。
      例如,添加一个新的myubuntu: 18.04镜像标签:
    $ docker tag ubuntu:18.04 myubuntu:18.04

    myubuntu:18.04镜像的ID跟ubuntu: 18.04是 完全一致的,它们实际上指向了同一个镜像文件,只是别名不同而巳。docker tag命令添 加的标签实际上起到了类似链接的作用。

    1. 使用inspect命令查看详细信息 使用docker [image] inspect命令可以获取该镜像的详细信息,包括制作者、适 应 架构、各层的数字摘要等:
    $ docker [image] inspect ubuntu:18.04
    1. 使用 history 命令查看镜像历史 既然镜像文件由多个层组成, 那么怎么知道各个层的内容具体是什么呢?这时候可以使 用 history 子命令, 该命令将列出各层的创建信息。
      例如, 查看 ubuntu: 18. 04 镜像的创建过程, 可以使用如下命令:
    $ docker history ubuntu: 18. 04
    • 搜寻镜像

      使用docker search命令可以搜索 Docker Hub 官方仓库中的镜像。默认的输出结果将按照星级评价进行排序。 语法为 docker search [option] keyword。
      支持的 命令选项主要包括: -f, --filter filter: 过滤输出内容;
    • –format string: 格式化输出内容;
    • –limit int:限制输出结果个数, 默认为 25 个;
    • –no-trunc: 不截断输出结果。
      例如, 搜索官方提供的带 nginx关键字的镜像,如下所示:
    $ docker search --filter=is-official=true nginx
  • 删除和清理镜像

    1. 使用标签删除镜像 使用docker rmi 或 docker image rm命令可以删除镜像, 命令格式为 docker rmi IMAGE [IMAGE … ], 其中 IMAGE可以为标签或 ID。 支持选项包括:
    • -f, -force: 强制删除镜像, 即使有容器依赖它;
    • -no-prune: 不要清理未带标签的父镜像。
      例如, 要删除掉 myubunt:18.04, 可以使用如下命令:
    $ docker rmi myubunt:18.04
    1. 使用镜像ID来删除镜像 当使用 docker rmi 命令, 并且后面跟上镜像的 ID(也可以是能进行区分的部分 ID 串 前缀)时, 会先尝试删除所有指向该镜像的标签, 然后删除该镜像文件本身。
    $ docker rmi Bflbd2lbd25c
    1. 清理镜像 使用Docker一段时间后, 系统中可能会遗留一些临时的镜像文件, 以及一些没有被使 用的镜像, 可以通过docker image prune命令来进行清理。 支待选项包括:
    • -a, -all: 删除所有无用镜像, 不光是临时镜像;
    • -filter filter: 只清理符合给定过滤器的镜像;
    • -f, -force: 强制删除镜像, 而不进行提示确认。
      例如, 如下命令会自动清理临时的遗留镜像文件层, 最后会提示释放的存储空间:
    $ docker image prune -f
    • 创建镜像

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

    1. 基于已有容器创建
      该方法主要是使用 docker [container] commit命令。 命令格式为docker [container] commit [OPTIONS] CONTAINER [REPOSITORY [:TAG]], 主要选项包括:
    • -a, --author="": 作者信息;
    • -c, --change=[] : 提交的时候执行Dockerfile指令, 包括CMD I ENTRYPOINT | ENV I EXPOSE I LABEL I ONBUILD I USER I VOLUME I WORKDIR等;
    • -m, --message= “” : 提交消息;
    • -p, --pause=true: 提交时暂停容器运行。
      下面将演示如何使用该命令创建一个新镜像。
      首先, 启动一个镜像, 并在其中进行修改操作。例如, 创建一个test文件, 之后退出, 代码如下:
    $ docker run -it ubuntu:18.04 /bin/bash
    root@a925cb40b3f0:/# touch test
    root@a925cb40b3f0:/# exit    //记住容器的 ID为a925cb40b3£0。

    此时该容器与原 ubuntu:18.04 镜像相比, 已经发生了改变, 可以使用docker [container] commit命令来提交为一个新的镜像。提交时可以使用 ID 或名称来指定容器:

    $ docker [container] commit-m "Added a new file" -a "Docker Newbee" a925cb40b3f0 test:0.1

    顺利的话, 会返回新创建镜像的 ID 信息.
    2. 基于本地模板导入
    用户也可以直接从一个操作系统模板文件导人一个镜像,主要使用 docker [container] import 命令。 命令格式为 docker [image] import [OPTIONS] filelURLl -[REPOSITORY [:TAG] ]
    要直接导人一个镜像,可以使用 OpenVZ 提供的模板来创建,或者用其他已导出的镜像 模板来创建。 OPENVZ 模板的下载地址为 http://openvz.org/Download/templates/precreated。 例如,下载了 ubuntu-18.04 的模板压缩包,之后使用以下命令导人即可:

    $ cat ubuntu-18.04-x86_64-minimal.tar.gz | docker import - ubuntu:18.04
    1. 基于 Dockefile 创建
      基于 Dockerfile 创建是最常见的方式。 Dockerfile 是一个文本文件,利用给定的指令描 述基于某个父镜像创建新镜像的过程。
    • 存出和载入镜像

    1. 存出镜像
      如果要导出镜像到本地文件,可以使用 docker [image] save 命令。 该命令支持 -o、 -output string 参数, 导出镜像到指定的文件中。
    $ docker save -o ubuntu_18.04.tar ubuntu:18 .04
    1. 载入镜像
      可以使用 docker [image] load 将导出的 tar 文件再导人到本地镜像库。支持 -i -input string 选项,从指定文件中读人镜像内容。
    docker load -i ubuntu_18.04.tar
    • 上传镜像

      可以使用 docker [image] push 命令上 传镜像到仓库,默认上传到 Docker Hub 官方仓库(需要登录)。 命令格式为 docker [image] push NAME [:TAG] I [REGISTRY_HOST [ :REGISTRY_PORT] / ]NAME [:TAG] 。
      用户在 Docker Hub 网站注册后可以上传自制的镜像。
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: