容器技术Docker云计算实战 镜像操作大总结

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

Docker实战之镜像操作:

获取镜像:

docker pull NAME[:TAG]


root@doc-vm:~# docker pull hello-world

Using default tag: latest

latest: Pulling from library/hello-world

ca4f61b1923c: Pull complete

Digest: sha256:150f6d05b8898b79f55114991c01b89688a02dab6115e402b7855792a440caff

Status: Downloaded newer image for hello-world:latest


latest标签意味着这个镜像的内容会跟踪最新的非稳定版本而发步,内容是不稳定的。不要在生产环境中使用latest标签的镜像。


使用其他镜像源进行下载:

root@doc-vm:~# docker pull hub.c.163.com/public/ubuntu:14.04

14.04: Pulling from public/ubuntu

f4ab0b34ba6a: Pull complete

2f0787dc0bfe: Pull complete

54c427d77362: Pull complete

51e87d5424ff: Pull complete

5dfa314e7290: Pull complete

a3ed95caeb02: Pull complete

Digest: sha256:ffc2fc66f8e0bfa4b417b817054d3ebec130c8db44342b8fa394e25779633257

Status: Downloaded newer image for hub.c.163.com/public/ubuntu:14.04

pull命令支持的选项:

-a, --all-tags=true|false:是否获取仓库中的所有镜像,默认是否。


查看镜像信息:

docker images


root@doc-vm:~# docker images

REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE

nginx                         latest              9e7424e5dbae        5 days ago          108 MB

hello-world                   latest              f2a91732366c        7 days ago          1.85 kB

ubuntu                        latest              20c44cd7596f        10 days ago         123 MB

tomcat                        latest              11df4b40749f        13 days ago         558 MB

mysql                         latest              5709795eeffa        3 weeks ago         408 MB

busybox                       latest              6ad733544a63        3 weeks ago         1.13 MB

centos                        latest              d123f4e55e12        3 weeks ago         197 MB

hub.c.163.com/public/ubuntu   14.04               2fe5c4bba1f9        20 months ago       237 MB


images的子选项:

-a, --all=true|false:列出所有镜像文件,默认是否

--digest=true|false:列出镜像的数字摘要值,默认是否

-f,--filter=[]:过滤列出的镜像

--format="TEMPLATE":控制输出格式

--no-turnc=true|false:对输出结果中太长的部分是否进行截断,默认为是

-q,--quiet=true|false:仅仅输出ID信息,默认是否


使用tag命令添加镜像标签:

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

root@doc-vm:~# docker tag ubuntu:latest mysystem:latest

root@doc-vm:~# docker images

REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE

nginx                         latest              9e7424e5dbae        5 days ago          108 MB

hello-world                   latest              f2a91732366c        7 days ago          1.85 kB

mysystem                      latest              20c44cd7596f        10 days ago         123 MB

ubuntu                        latest              20c44cd7596f        10 days ago         123 MB

tomcat                        latest              11df4b40749f        13 days ago         558 MB

mysql                         latest              5709795eeffa        3 weeks ago         408 MB

busybox                       latest              6ad733544a63        3 weeks ago         1.13 MB

centos                        latest              d123f4e55e12        3 weeks ago         197 MB

hub.c.163.com/public/ubuntu   14.04               2fe5c4bba1f9        20 months ago       237 MB


实际上指向的是同一个文件,只是别名而已。


使用inspect命令查看详细信息:

docker inspect [OPTIONS] NAME|ID [NAME|ID...]


root@doc-vm:~# docker inspect ubuntu

[

    {

        "Id": "sha256:20c44cd7596ff4807aef84273c99588d22749e2a7e15a7545ac96347baa65eda",

        "RepoTags": [

            "mysystem:latest",

            "ubuntu:latest"

        ],

        "RepoDigests": [

            "ubuntu@sha256:cb67b69a3b83dc209418cf15dace1a2fe336e37ef6a972a00fb9e02a608a8184"

        ],

        "Parent": "",

        "Comment": "",

        "Created": "2017-11-17T21:59:25.014645802Z",

        "Container": "e5f1a9df75b86a5d803eaf6f3fed6a0f8ef5fbf15a6c5039df087e4348ed8171",

        "ContainerConfig": {

            "Hostname": "e5f1a9df75b8",

            "Domainname": "",

            "User": "",

            "AttachStdin": false,

            "AttachStdout": false,

            "AttachStderr": false,

            "Tty": false,

            "OpenStdin": false,

            "StdinOnce": false,

            "Env": [

                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

            ],

            "Cmd": [

                "/bin/sh",

                "-c",

                "#(nop) ",

                "CMD [\"/bin/bash\"]"

            ],

            "ArgsEscaped": true,

            "Image": "sha256:b5771e7d8dcc594b886dbdd6a9c3de60d45252ca657dfdff6e1d996728dfa2cd",

            "Volumes": null,

            "WorkingDir": "",

            "Entrypoint": null,

            "OnBuild": null,

            "Labels": {}

        },

        "DockerVersion": "17.06.2-ce",

        "Author": "",

        "Config": {

            "Hostname": "",

            "Domainname": "",

            "User": "",

            "AttachStdin": false,

            "AttachStdout": false,

            "AttachStderr": false,

            "Tty": false,

            "OpenStdin": false,

            "StdinOnce": false,

            "Env": [

                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

            ],

            "Cmd": [

                "/bin/bash"

            ],

            "ArgsEscaped": true,

            "Image": "sha256:b5771e7d8dcc594b886dbdd6a9c3de60d45252ca657dfdff6e1d996728dfa2cd",

            "Volumes": null,

            "WorkingDir": "",

            "Entrypoint": null,

            "OnBuild": null,

            "Labels": null

        },

        "Architecture": "amd64",

        "Os": "linux",

        "Size": 122792927,

        "VirtualSize": 122792927,

        "GraphDriver": {

            "Name": "aufs",

            "Data": null

        },

        "RootFS": {

            "Type": "layers",

            "Layers": [

                "sha256:788ce2310e2fdbbf81fe21cbcc8a44da4cf648b0339b09c221abacb4cd5fd136",

                "sha256:aa4e47c4511638484cd5d95eadd7a8e4da307375ba31ff50d47aa9065dce01e0",

                "sha256:b3968bc26fbd527f214f895aeef940a6930c62d853fe8b12bd479f0b53518150",

                "sha256:c9748fbf541d3e043521e165b015d45825de33c00a8acb037443cfbd0cb5e677",

                "sha256:2f5b0990636a87f1557d64ba39808dcd64031328b2a159c5805115b8e725bbbc"

            ]

        }

    }

]

返回的是Josn格式的信息,指定其中一项可以是:

root@doc-vm:~# docker inspect -f {{".Os"}} ubuntu

linux


搜索镜像:

docker search [OPTIONS] TERM

--automated-true|false:仅仅显示自动创建的镜像,默认是否

--no-trunc=true|false:输出信息不截断显示,默认是否

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


root@doc-vm:~# docker search ubuntu

NAME                                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED

ubuntu                                                 Ubuntu is a Debian-based Linux operating s...   6868      [OK]

dorowu/ubuntu-desktop-lxde-vnc                         Ubuntu with openssh-server and NoVNC            146                  [OK]

rastasheep/ubuntu-sshd                                 Dockerized SSH service, built on top of of...   117                  [OK]

ansible/ubuntu14.04-ansible                            Ubuntu 14.04 LTS with ansible                   89                   [OK]

ubuntu-upstart                                         Upstart is an event-based replacement for ...   80        [OK]

neurodebian                                            NeuroDebian provides neuroscience research...   40        [OK]

ubuntu-debootstrap                                     debootstrap --variant=minbase --components...   32        [OK]

nuagebec/ubuntu                                        Simple always updated Ubuntu docker images...   22                   [OK]

tutum/ubuntu                                           Simple Ubuntu docker images with SSH access     19

1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5   ubuntu-16-nginx-php-phpmyadmin-mysql-5          18                   [OK]

... ...


使用docker history查看镜像历史:

镜像是由多个层组成的,查看每个层的具体内容。

root@doc-vm:~# docker history ubuntu

IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT

20c44cd7596f        10 days ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0 B

<missing>           10 days ago         /bin/sh -c mkdir -p /run/systemd && echo '...   7 B

<missing>           10 days ago         /bin/sh -c sed -i 's/^#\s*\(deb.*universe\...   2.76 kB

<missing>           10 days ago         /bin/sh -c rm -rf /var/lib/apt/lists/*          0 B

<missing>           10 days ago         /bin/sh -c set -xe   && echo '#!/bin/sh' >...   745 B

<missing>           10 days ago         /bin/sh -c #(nop) ADD file:280a445783f309c...   123 MB


删除镜像:

使用docker rmi删除镜像,命令格式:docker rmi IMAGE [IMAGE...]

如果镜像有多个标签,docker rmi命令只会删除该镜像的指定标签,并不会影响镜像文件,当只剩下一个标签的时候才会删除真正的镜像。


docker rmi ID [ID...]

首先会尝试删除所有指向该镜像的标签,然后删除该镜像的文件本身。

当基于该镜像的容器正在运行的时候,默认是无法删除的,可以使用-f参数强制删除。


创建镜像:

基于已经有的镜像创建镜像:

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

-a,--author="":作者信息

-c,--change=[]:提交的时候执行Dockerfile命令

-m,--message="":提交信息

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

root@doc-vm:~# docker run -it ubuntu bash

root@6ea8cd52c3eb:/# touch test

root@6ea8cd52c3eb:/# exit

exit

root@doc-vm:~# docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES

6ea8cd52c3eb        ubuntu              "bash"              52 seconds ago      Exited (0) 30 seconds ago                       nervous_hoover

root@doc-vm:~# docker commit -m "Added a Docker image" -a "deepking" 6ea8cd52c3eb ubuntutest:1.0

sha256:4ef2ad9d1aea15766c612d3c0090ad6128f803ebb8f4a4b75005d90001dbc893

root@doc-vm:~# docker images

REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE

ubuntutest                    1.0                 4ef2ad9d1aea        7 seconds ago       123 MB

基于本地模板导入:

主要使用docker import [OPTIONS] file|url|-[REPOSITORY[:TAG]]

使用OpenVZ提供的模板;来创建,下载地址是:https://openvz.org/Download/template/precreated

root@doc-vm:~# cd Downloads/

root@doc-vm:~/Downloads# ll

total 705496

drwxr-xr-x  2 doc doc      4096 11月 29 12:33 ./

drwxr-xr-x 16 doc doc      4096 11月 29 12:13 ../

-rw-rw-r--  1 doc doc 111337720 11月 29 12:14 centos-6-x86-20170709.tar.xz

-rw-rw-r--  1 doc doc  67229480 11月 29 12:13 centos-6-x86-minimal-20170709.tar.xz

-rw-rw-r--  1 doc doc  69329732 11月 29 12:13 centos-7-x86_64-minimal-20170709.tar.xz

-rw-rw-r--  1 doc doc  81103335 11月 29 12:13 debian-6.0-x86-minimal.tar.gz

-rw-rw-r--  1 doc doc 155356791 11月 29 12:16 debian-6.0-x86.tar.gz

-rw-rw-r--  1 doc doc 181654531 11月 29 12:18 ubuntu-15.10-x86_64.tar.gz

-rw-rw-r--  1 doc doc  56375699 9月  14 17:13 VMwareTools-10.1.15-6627299.tar.gz

root@doc-vm:~# cat debian-6.0-x86-minimal.tar.gz | docker import - debian:6.0


存储和载入镜像:

root@doc-vm:~# docker save -o tomcat_latest.tar tomcat   # 存储镜像

root@doc-vm:~# ll

drwxr-xr-x 16 doc  doc       4096 11月 29 13:52 ./

drwxr-xr-x  3 root root      4096 11月 27 21:52 ../

-rw-------  1 root root 576676352 11月 29 13:52 tomcat_latest.tar

root@doc-vm:~# docker load --input tomcat_latest.tar     # 载入镜像

Loaded image: tomcat:latest 

上传镜像:

docker push NAME[:TAG] | [REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG]

第一次上传会提示登录。


 本文转自 棋帅小七 51CTO博客,原文链接:http://blog.51cto.com/xvjunjie/2045609

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
10天前
|
运维 持续交付 Docker
深入理解Docker容器化技术
深入理解Docker容器化技术
|
14天前
|
缓存 Linux 网络安全
docker的镜像无法下载如何解决?
【10月更文挑战第31天】docker的镜像无法下载如何解决?
423 28
|
6天前
|
安全 持续交付 云计算
揭秘云计算中的容器化技术及其优势
揭秘云计算中的容器化技术及其优势
11 1
|
6天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
8天前
|
Kubernetes Cloud Native Docker
云原生技术探索:容器化与微服务的实践之道
【10月更文挑战第36天】在云计算的浪潮中,云原生技术以其高效、灵活和可靠的特性成为企业数字化转型的重要推手。本文将深入探讨云原生的两大核心概念——容器化与微服务架构,并通过实际代码示例,揭示如何通过Docker和Kubernetes实现服务的快速部署和管理。我们将从基础概念入手,逐步引导读者理解并实践云原生技术,最终掌握如何构建和维护一个高效、可扩展的云原生应用。
|
10天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
11天前
|
存储 Kubernetes 调度
基于容器化技术的性能优化实践
基于容器化技术的性能优化实践
23 3
|
10天前
|
存储 关系型数据库 Linux
【赵渝强老师】什么是Docker的镜像
Docker镜像是一个只读模板,包含应用程序及其运行所需的依赖环境。镜像采用分层文件系统,每次修改都会以读写层形式添加到原只读模板上。内核bootfs用于加载Linux内核,根镜像相当于操作系统,上方为应用层。镜像在物理存储上是一系列文件的集合,默认存储路径为“/var/lib/docker”。
|
16天前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
85 2