美文网首页
docker镜像的基本操作命令

docker镜像的基本操作命令

作者: 八目朱勇铭 | 来源:发表于2017-10-20 18:10 被阅读0次

    docker运行容器前(docker run...命令运行容器)需要本地存在对应的镜像,如果镜像在本地不存在,docker会尝试先从默认镜像仓库下载(默认使用docker hub公共注册服务器中的仓库),用户也可以通过配置,使用自定义地镜像仓库。

    1、获取镜像

    docker pull IMAGE[:TAG]
    如果不显示地指定TAG,则默认会选择latest标签,即下载仓库中最新版本的镜像。例如pull ubuntu镜像,IMAGE默认的全名为registry.hub.docker.com/ubuntu:latest,即从默认的服务器registry.hub.docker.com中的ubuntu仓库来下载标记为latest的镜像。

    用户也可以选择从其他注册服务器的仓库下载,此时,需要在仓库名称前指定完整让的仓库注册服务器地址。例如从DockerPool社区的镜像源dl.dockerpool.com下载最新的ubuntu镜像:docker pull dl.dockerpool.com:5000/ubuntu

    2、查看镜像信息

    docker images :列出本地主机上已有的镜像信息

    • repository:来自于哪个仓库,比如ubuntu仓库
    • tag:镜像的标签信息,比如14.04
    • image id:镜像的唯一ID号
    • created:创建时间
    • virtual size:镜像大小

    docker tag:为本地镜像添加新的标签。例如添加一个属于我的ubuntu标签
    docker tag dl.dockerpool.com:5000/ubuntu:latest ubuntu:bamu

    3、搜寻镜像

    docker search TERM:搜索远端仓库中共享的镜像,默认搜索Docker Hub官方仓库中的镜像。

    支持的参数如下:
    --automated=false 仅显示自动创建的镜像
    --no-trunc=false 输出信息不截断显示
    -s, --stars=0 指定仅显示评价为指定星级以上的镜像

    docker search mysql result

    可以看到返回了很多包含mysql关键字的镜像,输出的结果按照星级评价进行排序。其中包括镜像名字、描述、星级、是否官方创建、是否自动创建等。官方的镜像说明该镜像是由官方项目组创建和维护的,automated资源则允许用户验证镜像的来源和用途。

    4、删除镜像

    docker rmi
    docker rmi IMAGE [IMAGE...],其中IMAGE可以为标签或ID

    • 使用镜像标签删除镜像:docker rmi命令只是删除了该镜像多个标签中的指定标签而已,并不影响镜像文件。当镜像只剩下一个标签的时候就要小心了,此时再使用docker rmi命令会彻底删除该镜像文件。
    • 使用镜像ID删除镜像:会先尝试删除所有指向该镜像的标签,然后删除镜像文件本身。

    注意:当有该镜像创建的容器存在时(无论该容器正在运行中还是已经停止),镜像文件默认是无法被删除的。

    如果想要强行删除镜像,可以使用-f参数:docker rmi -f ubuntu。但不推荐使用-f参数强制删除,因为这样往往会造成一些遗留问题。假设我们使用-f参数强制删除,再次使用docker images命令查看本地镜像情况,会发现一个标签为<none>的临时镜像,原来刚才被强制删除的镜像换了新的ID继续存在系统中。

    因此,正确的做法是,先删除依赖该镜像的所有容器,再删除该镜像。

    5、创建镜像

    创建镜像的方式有三种:

    • 基于已有镜像的容器创建
    • 基于本地模板导入
    • 基于Dockerfile创建

    本节介绍前两种,第三种方式在将来的文章中详细讲解。

    基于已有的容器创建

    该方法使用docker commit 命令,格式为:docker commit [OPTIONS] CONTAINERS [REPOSITORY[:TAG]],参数信息如下:

    • -a, --author="" 作者信息
    • -m,--message="" 提交消息
    • -p,--pause=true 提交时暂停容器运行

    实践一下:
    1)启动容器并新建文件:
    docker run -ti ubuntu /bin/bash
    touch test
    exit

    此时该容器跟原镜像启动的容器相比,已经发生改变。可以使用docker commit 命令来提交为一个新的镜像,提交时可以使用ID或名称来指定容器。

    2)创建新的镜像
    docker commit -m "new image" -a "bamu" container01 ubuntu_bamu

    3)查看本地镜像列表,即可看到新创建的镜像
    docker images

    本地模板导入

    也可以直接从一个操作系统模板文件导入一个镜像,推荐使用OpenVZ提供的模板来创建。OpenVZ模板的下载地址为:https://openvz.org/Download/templates/precreated,通过该地址下载了一个ubuntu-14.04模板压缩包后,可以使用如下命令导入:
    cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:14.04
    然后查看新导入的镜像,已经在本地存在了。

    6、存出和载入镜像

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

    存出镜像

    存出本地的ubuntu:14.04镜像为文件ubuntu_14.04.tar:docker save -o ubuntu_14.04.tar ubuntu:14.04

    载入镜像

    将文件ubuntu_14.04.tar导入镜像到本地镜像列表:docker load --input ubuntu_14.04.tar 或 docker load < ubuntu_14.04.tar
    这将导入镜像以及其相关的元数据信息(包括标签等),可以使用docker images命令查看。

    上传镜像

    默认上传至DockerHub官方仓库(需要登录),命令格式为docker push NAME[:TAG]
    用户在DockerHub网站注册后,即可上传自制的镜像,例如用户user上传本地镜像test:latest镜像,可以先添加标签user/test:latest,然后用docker push 命令上传镜像。
    docker tag test:latest user/test:latest
    docker push user/test:latest

    相关文章

      网友评论

          本文标题:docker镜像的基本操作命令

          本文链接:https://www.haomeiwen.com/subject/kzimuxtx.html