docker容器认识及安装(linux系统)

目录

一、Docker概述

容器背景

 容器对比传统虚拟化

Docker的使用场景

二、Docker的优点

1、快速的交付和部署

2、更高效的虚拟化

3、更轻松的迁移和扩展

4、简单的管理

三、Docker的核心概念

1、镜像(Image)

2、容器(Container)

 三、仓库(Repository)

四、Docker的安装

安装docker-ce

阿里云镜像加速器

五、Docker基础操作

1、查看Docker的版本信息

2、查看docker的详细信息

Docker镜像操作

1、docker search //从Docker Hub搜索镜像

2、获取镜像

3、查看镜像信息

4、获取镜像的详细信息

5、为镜像添加新的标签

6、删除镜像

7、存出镜像和载入镜像


一、Docker概述

容器背景

客户(老板)-产品-开发-测试-运维à项目周期不断延后,项目质量差。

        随着云计算DevOps生态圈的蓬勃发展,产生了大量优秀的系统和软件。软件开发人员可以自由选择各种软件应用环境。但同时带来的问题就是需要维护一个非常庞大的开发(Dev)、测试(Test)、预上线(UAT)和生产环境(Pro)。面对这种情况,Docker容器技术横空出世、提供了简单、灵活、高效的解决方案,不需要过多地改变现有的使用习惯,就可以和已有的工具进行整合。因此,掌握Docker相关技术也是途径云计算的必经之路。

        Docker是在Linux容器里运行应用的开源容器管理工具,可以理解为轻量级的“虚拟机”。它诞生于 2013 年初,最初是 DotCloud 公司内部商业版项目,后来更换架构师,此架构师将Docker进行了开源,导致Docker使用人员增多。基于 Google公司推出的 Go(Golang) 语言开发。该项目后来加入了Linux基金会,遵从了Apache 2.0协议进行推广,项目代码在 GitHub(https://github.com/docker)上进行维护。

        Docker 自开源后受到广泛的业内人士及社区的关注,以至于DotCloud公司后来都改名为 Docker Inc。RedHat系列系统从 RHEL6.5 版本开始支持 Docker;Google 也在其 PaaS 产品中广泛应用。

官方网站:Docker: Accelerated, Containerized Application Development。

云计算模式

        IAAS 基础设施及服务   Kvm/Docker+Openstack

        PAAS 平台即服务       Docker+Kubernetes

        SAAS 软件即服务

 docker容器认识及安装(linux系统)_第1张图片

         Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。鲸鱼可以看做宿主机,而集装箱可以理解为实现应用相互隔离的容器,每个集装箱中都包含自己的应用程序。正如Docker的设计宗旨一样:Build、Ship and Run Any App、Anywhere,即通过对应用组件的封装、发布、部署、运行等生命周期的管理、达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

docker容器认识及安装(linux系统)_第2张图片

 容器对比传统虚拟化

        Docker项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker在Linux原有的 LXC 技术的基础上进行二次封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。相同的容器类软件还有很多。

docker容器认识及安装(linux系统)_第3张图片

 

        传统虚拟化技术结构中底层是服务器硬件,硬件上运行着宿主机的操作系统兼虚拟化平台,通过在虚拟化出硬件设备上部署操作系统,在操作系统之上运行应用服务。而虚拟化出硬件中的操作系统将占用大量的服务器硬件资源浪费。

        容器技术技术结构中底层硬件上运行宿主机操作系统,在宿主机操作系统上运行Docker引擎,无需虚拟化硬件,也不用部署操作系统,而是直接运行容器,提供所需的应用服务隔离环境,极大的提高了资源利用率。

虚拟化架构:

        寄居架构 VMware Workstation

        原生架构 VMware ESXI

作为一种新兴的虚拟化方式, Docker 跟传统的虚拟化方式相比具有众多的优势。

        Docker 容器的启动可以在秒级实现,相比传统的虚拟机方式要快很多。Docker核心解决的问题是利用容器来实现类似VM的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源,所以Docker容器除了运行其中的应用之外,基本不消耗额外的系统资源,从而保证应用性能的同时,减小系统开销,使得在一台主机上同时运行数千个Docker容器成为可能;Docker操作方便,还可以通过Dockerfile配置文件支持灵活的自动化创建Docker镜像。

Docker容器与传统虚拟机的对比

特性

容器

虚拟机

启动时间

秒级

分钟级

资源损耗

几乎无

至少损耗50%左右(系统占用)

硬盘空间

MB

GB

系统支持

上千个

几十个

隔离性

资源限制

完全隔离

性能

接近原生

弱于

        Docker之所以拥有众多优势,与操作系统虚拟化自身的特点是分不开的,传统虚拟化需要有额外的虚拟机管理程序和虚拟机操作系统层,而Docker容器是直接在操作系统层面之上实现的虚拟化。

Docker的使用场景

        Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。通过这种容器打包应用程序,意味着简化了重新部署、调试这些琐碎的重复工作,极大的提高了工作效率。例如:项目从腾讯云迁移阿里云,如果采用了Docker容器技术,迁移只需要在新的云服务器上启动项目需要的容器即可。

、Docker的优点

1、快速的交付和部署

        对(DevOps)人员来说,最希望的就是项目环境一次创建或配置,可以在任意地方正常运行。开发者可以使用一个标准的镜像来构建一套项目开发容器,代码开发完成之后,运维人员可以直接此容器打包迁移。Docker可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。Docker将会大量地节约开发、测试、部署的时间。

2、更高效的虚拟化

        Docker容器的运行不需要额外的管理系统支持,它是内核级的虚拟化,并且容器调用的是宿主机的bin和lib。因此可以实现更高的性能和效率。

3、更轻松的迁移和扩展

        Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个平台。

4、简单的管理

        使用 Docker只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

、Docker的核心概念

1、镜像(Image)

镜像是创建容器的基础,镜像类似传统虚拟机的快照,可以理解为是一个面向Docker容器引擎的只读模板。比如:一个镜像可以包含一个完整的 CentOS 操作系统环境,里面仅安装了 Apache的应用程序(称之为Apache镜像)或用户需要的其它应用程序。

Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像(堆叠),用户甚至可以直接从其他人那里获取一个已经做好的镜像来直接使用。

2、容器(Container)

容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。多个容器之间都是相互隔离的、保证了应用平台的安全性。可以把容器看做是一个正在运行的简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的一个或一组应用程序。Docker容器用来运行和隔离应用地方。

docker容器认识及安装(linux系统)_第4张图片

 注意:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。

 三、仓库(Repository)

        仓库是集中存放镜像的地方。通常会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。

        仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的官方镜像供用户下载。国内的公开仓库有Docker Pool等,可以提供大陆用户更稳定快速的访问。当然,用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。

 docker容器认识及安装(linux系统)_第5张图片

 注意:Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。

Docker素材站:http://get.daocloud.io/

docker容器认识及安装(linux系统)_第6张图片

 

四、Docker的安装

        Docker支持在主流的操作系统平台上使用,包括Windows系统、Linux系统及MacOS系统等。目前最新的RedHat 、CentOS、Ubuntu等操作系统官方软件源中都已经默认自带了Docker包,可以直接安装使用,也可以用Docker自己的YUM源进行配置。

Docker发行版本:

  1. Docker-EE 企业版
  2. Docker-CE 社区版(我们安装社区版)

 

安装docker-ce

​
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo

[root@localhost ~]# yum -y install yum-utils device-mapper-persistent-data lvm2

[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[root@localhost ~]# ls /etc/yum.repos.d/

backup  CentOS-Base.repo   CentOS-Media.repo  docker-ce.repo

[root@localhost ~]# yum -y install docker-ce

[root@localhost ~]# systemctl start docker

[root@localhost ~]# systemctl enable docker

​

阿里云镜像加速器

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台欢迎登录阿里云,全球领先的云计算及人工智能科技公司,阿里云为200多个国家和地区的企业、开发者和政府机构提供云计算基础服务及解决方案。阿里云云计算、安全、大数据、人工智能、企业应用、物联网等云计算服务。https://cr.console.aliyun.com/

 

 docker容器认识及安装(linux系统)_第7张图片

[root@localhost ~]# cat << END > /etc/docker/daemon.json

{
        "registry-mirrors":[ "镜像加速器地址" ]
}
END

[root@localhost ~]# systemctl daemon-reload

[root@localhost ~]# systemctl restart docker

[root@localhost ~]# docker version

Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        afacb8b
 Built:             Wed Mar 11 01:27:04 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       afacb8b
  Built:            Wed Mar 11 01:25:42 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683


http://get.daocloud.io/

 

五、Docker基础操作

1、查看Docker的版本信息

[root@localhost ~]# docker version

Client: Docker Engine - Community
 Version:           24.0.5
 API version:       1.43
 Go version:        go1.20.6
 Git commit:        ced0996
 Built:             Fri Jul 21 20:39:02 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.5
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.6
  Git commit:       a61e2b4
  Built:            Fri Jul 21 20:38:05 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.21
  GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
 runc:
  Version:          1.1.7
  GitCommit:        v1.1.7-0-g860f061
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

2、查看docker的详细信息

[root@localhost ~]# docker info

Client: Docker Engine - Community
 Version:    24.0.5
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.11.2
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.20.2
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 2
 Server Version: 24.0.5
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 3dce8eb055cbb6872793272b4f20ed16117344f8
 runc version: v1.1.7-0-g860f061
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
 Kernel Version: 3.10.0-1160.92.1.el7.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 3.682GiB
 Name: localhost.localdomain
 ID: 07e3188c-50b9-416e-b864-009e784a7d35
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://nyakyfun.mirror.aliyuncs.com/
 Live Restore Enabled: false

WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

Docker镜像操作

        Docker创建容器前需要本地存在对应的镜像,如果本地加载不到相关镜像,Docker默认就会尝试从镜像仓库https://hub.docker.com下载,这是由Docker官方维护的一个公共仓库,可以满足用户的绝大部分需求,用户也可以通过配置来使用自定义的镜像仓库。

1、docker search //从Docker Hub搜索镜像

命令格式:docker search 关键字

参数:

        --automated=false         仅显示自动创建的镜像

        --no-trunc=false          输出信息不截断显示

        -s, --stars=0  指定仅显示评价为指定星级以上的镜像

[root@localhost ~]# docker search nginx
NAME                                              DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
nginx                                             Official build of Nginx.                         18809     [OK]       
unit                                              Official build of NGINX Unit: Universal Web …   8         [OK]       
nginxinc/nginx-unprivileged                       Unprivileged NGINX Dockerfiles                   106                  
nginx/nginx-ingress                               NGINX and  NGINX Plus Ingress Controllers fo…   74                   
nginx/nginx-prometheus-exporter                   NGINX Prometheus Exporter for NGINX and NGIN…   33                   
nginx/unit                                        NGINX Unit is a dynamic web and application …   64                   
nginxinc/nginx-s3-gateway                         Authenticating and caching gateway based on …   1                    
nginx/nginx-ingress-operator                      NGINX Ingress Operator for NGINX and NGINX P…   0                    
nginxinc/amplify-agent                            NGINX Amplify Agent docker repository            1                    
nginx/nginx-quic-qns                              NGINX QUIC interop                               1                    
nginxinc/ingress-demo                             Ingress Demo                                     4                    
nginxproxy/nginx-proxy                            Automated Nginx reverse proxy for docker con…   97                   
nginxproxy/acme-companion                         Automated ACME SSL certificate generation fo…   120                  
bitnami/nginx                                     Bitnami nginx Docker Image                       170                  [OK]
bitnami/nginx-ingress-controller                  Bitnami Docker Image for NGINX Ingress Contr…   29                   [OK]
nginxinc/nginmesh_proxy_debug                                                                      0                    
ubuntu/nginx                                      Nginx, a high-performance reverse proxy & we…   97                   
nginxproxy/docker-gen                             Generate files from docker container meta-da…   12                   
nginxinc/mra-fakes3                                                                                0                    
kasmweb/nginx                                     An Nginx image based off nginx:alpine and in…   6                    
nginxinc/ngx-rust-tool                                                                             0                    
rancher/nginx-ingress-controller                                                                   11                   
nginxinc/mra_python_base                                                                           0                    
nginxinc/nginmesh_proxy_init                                                                       0                    
rancher/nginx-ingress-controller-defaultbackend  

 

2、获取镜像

搜索到符合需求的镜像,可以使用docker pull 命令从网络下载镜像到本地使用。

命令格式:docker pull 镜像名称[:标签]

        对于Docker镜像来说,如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为latest,也可以通过指定的标签来下载特定版本的某一镜像。这里标签就是用来区分镜像版本的。

[root@localhost ~]#  docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete 
a9edb18cadd1: Pull complete 
589b7251471a: Pull complete 
186b1aaa4aa6: Pull complete 
b4df32aa5a72: Pull complete 
a0bcbecc962e: Pull complete 
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest



[root@localhost ~]#  docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete 
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest

        从整个下载的过程可以看出,镜像文件是由若干层(Layer)组成,我们称为AUFS(联合文件系统),是实现增量保存于更新的基础,下载过程中会输出镜像的各层信息。镜像下载到本地之后就可以随时使用该镜像了。

        用户也可以选择从其他注册服务器仓库下载,这时需要在仓库名称前指定完整的仓库注册服务器地址。

3、查看镜像信息

使用docker images命令查看下载到本地的所有镜像。

命令格式:docker images 仓库名称[:标签]

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    605c77e624dd   19 months ago   141MB
centos       latest    5d0da3dc9764   22 months ago   231MB

[root@localhost ~]# docker images nginx
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    605c77e624dd   19 months ago   141MB

 

从回显的信息:

  1. REPOSITORY  镜像所属仓库
  2. TAG         镜像的标签信息
  3. IMAGE ID     镜像的唯一ID
  4. CREATED     镜像创建时间
  5. SIZE 镜像大小

4、获取镜像的详细信息

命令格式:docker inspect 镜像名或镜像ID

[root@localhost ~]# docker inspect nginx
[
    {
        "Id": "sha256:605c77e624ddb75e6110f997c58876baa13f8754486b461117934b24a9dc3a85",
        "RepoTags": [
            "nginx:latest"
        ],
        "RepoDigests": [
            "nginx@sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2021-12-29T19:28:29.892199479Z",
        "Container": "ca3e48389f7160bc9d9a892d316fcbba459344ee3679998739b1c3cd8e56f7da",
        "ContainerConfig": {
            "Hostname": "ca3e48389f71",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.21.5",
                "NJS_VERSION=0.7.1",
                "PKG_RELEASE=1~bullseye"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"nginx\" \"-g\" \"daemon off;\"]"
            ],
            "Image": "sha256:82941edee2f4d17c55563bb926387c3ae39fa1a99777f088bc9d3db885192209",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "maintainer": "NGINX Docker Maintainers "
            },
            "StopSignal": "SIGQUIT"
        },
        "DockerVersion": "20.10.7",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.21.5",
                "NJS_VERSION=0.7.1",
                "PKG_RELEASE=1~bullseye"
            ],
            "Cmd": [
                "nginx",
                "-g",
                "daemon off;"
            ],
            "Image": "sha256:82941edee2f4d17c55563bb926387c3ae39fa1a99777f088bc9d3db885192209",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "maintainer": "NGINX Docker Maintainers "
            },
            "StopSignal": "SIGQUIT"
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 141479488,
        "VirtualSize": 141479488,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/106234ada2fb1ad1649ecbe53fac9ada9b5819902b80d7211fbec51bab8ef5e8/diff:/var/lib/docker/overlay2/6e5de122ac2e51cec689e2cce852e41fd560b423eb76b9e45e9b7c86f45b673e/diff:/var/lib/docker/overlay2/cfac8c8b651727a44534075f5f6ba77926b6ade3eef8437b63257c5ee8530393/diff:/var/lib/docker/overlay2/990ad71b387f3f195a3656eddbaa5a265e4fe4e507087b1838c8869b3ff25f94/diff:/var/lib/docker/overlay2/bd45726abcceb91ef398e2f2782ecca1919239cac5f84b380c54ad0b8d1f4a5c/diff",
                "MergedDir": "/var/lib/docker/overlay2/ed0f7e4437fd7fdeedf535e5d6abd4b2e0f7927ab28483bafa4916caac827d77/merged",
                "UpperDir": "/var/lib/docker/overlay2/ed0f7e4437fd7fdeedf535e5d6abd4b2e0f7927ab28483bafa4916caac827d77/diff",
                "WorkDir": "/var/lib/docker/overlay2/ed0f7e4437fd7fdeedf535e5d6abd4b2e0f7927ab28483bafa4916caac827d77/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f",
                "sha256:e379e8aedd4d72bb4c529a4ca07a4e4d230b5a1d3f7a61bc80179e8f02421ad8",
                "sha256:b8d6e692a25e11b0d32c5c3dd544b71b1085ddc1fddad08e68cbd7fda7f70221",
                "sha256:f1db227348d0a5e0b99b15a096d930d1a69db7474a1847acbc31f05e4ef8df8c",
                "sha256:32ce5f6a5106cc637d09a98289782edf47c32cb082dc475dd47cbf19a4f866da",
                "sha256:d874fd2bc83bb3322b566df739681fbd2248c58d3369cb25908d68e7ed6040a6"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]

镜像的详细信息中包括创建时间、系统版本、主机名、域名、用户、卷、标签、操作系统、设备ID等各种信息。

5、为镜像添加新的标签

命令格式:docker tag 名称[:标签] 新名称[:新标签]

[root@localhost ~]# docker tag nginx nginx:test
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    605c77e624dd   19 months ago   141MB
nginx        test      605c77e624dd   19 months ago   141MB
centos       latest    5d0da3dc9764   22 months ago   231MB

6、删除镜像

使用docker rmi 命令可以删除多余的镜像。

删除镜像的操作有两种方法:使用镜像的标签删除镜像;使用镜像的ID删除镜像。

命令格式:

docker rmi 镜像名称[:标签]

docker rmi 镜像ID

[root@localhost ~]# docker rmi nginx:test
Untagged: nginx:test

         当一个镜像有多个标签的时候, docker rmi命令只是删除该镜像多个标签中的指定标签,不会影响镜像文件,相当于只是删除了镜像的一个标签而已,但该镜像只剩下一个标签的时候就要小心了,再使用删除命令就会彻底删除该镜像。

        当使用docker rmi命令后面跟上镜像的ID号时,必须确保该镜像没有被容器使用才能进行,删除时系统会先删除掉所有指向该镜像的标签,然后删除该镜像文件本身。如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。

7、存出镜像和载入镜像

        当需要把一台机器上的镜像迁移到另一台机器上的时候,需要将镜像保存成本地文件,这一个过程叫做存出镜像,可以使用docker save命令进行存出操作。之后就可以复制该文件到其他机器。

命令格式:docker save -o 存出镜像为本地文件 镜像名

[root@localhost ~]# docker save -o nginx-images nginx
[root@localhost ~]# ls
anaconda-ks.cfg  nginx-images

        将存出的镜像从A 机器拷贝到B 机器,需要在B 机器上使用该镜像,就可以将该导出文件导入到B 机器的本地镜像列表中,这一过程叫做载入镜像。使用docker load 或者docker load --input 进行载入操作。

命令格式:docker load < 存出的文件或者docker load --input 存出的文件

例如,从文件dhcp中载入镜像到本地镜像库中:

[root@localhost ~]# docker rmi nginx
Untagged: nginx:latest
Untagged: nginx@sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Deleted: sha256:605c77e624ddb75e6110f997c58876baa13f8754486b461117934b24a9dc3a85
Deleted: sha256:b625d8e29573fa369e799ca7c5df8b7a902126d2b7cbeb390af59e4b9e1210c5
Deleted: sha256:7850d382fb05e393e211067c5ca0aada2111fcbe550a90fed04d1c634bd31a14
Deleted: sha256:02b80ac2055edd757a996c3d554e6a8906fd3521e14d1227440afd5163a5f1c4
Deleted: sha256:b92aa5824592ecb46e6d169f8e694a99150ccef01a2aabea7b9c02356cdabe7c
Deleted: sha256:780238f18c540007376dd5e904f583896a69fe620876cabc06977a3af4ba4fb5
Deleted: sha256:2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f



[root@localhost ~]# docker load < nginx-images
2edcec3590a4: Loading layer [==================================================>]  83.86MB/83.86MB
e379e8aedd4d: Loading layer [==================================================>]     62MB/62MB
b8d6e692a25e: Loading layer [==================================================>]  3.072kB/3.072kB
f1db227348d0: Loading layer [==================================================>]  4.096kB/4.096kB
32ce5f6a5106: Loading layer [==================================================>]  3.584kB/3.584kB
d874fd2bc83b: Loading layer [==================================================>]  7.168kB/7.168kB
Loaded image: nginx:latest

 

[root@localhost ~]# docker rmi nginx
Untagged: nginx:latest
Deleted: sha256:605c77e624ddb75e6110f997c58876baa13f8754486b461117934b24a9dc3a85
Deleted: sha256:b625d8e29573fa369e799ca7c5df8b7a902126d2b7cbeb390af59e4b9e1210c5
Deleted: sha256:7850d382fb05e393e211067c5ca0aada2111fcbe550a90fed04d1c634bd31a14
Deleted: sha256:02b80ac2055edd757a996c3d554e6a8906fd3521e14d1227440afd5163a5f1c4
Deleted: sha256:b92aa5824592ecb46e6d169f8e694a99150ccef01a2aabea7b9c02356cdabe7c
Deleted: sha256:780238f18c540007376dd5e904f583896a69fe620876cabc06977a3af4ba4fb5
Deleted: sha256:2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f



[root@localhost ~]#  docker load --input nginx-images
2edcec3590a4: Loading layer [==================================================>]  83.86MB/83.86MB
e379e8aedd4d: Loading layer [==================================================>]     62MB/62MB
b8d6e692a25e: Loading layer [==================================================>]  3.072kB/3.072kB
f1db227348d0: Loading layer [==================================================>]  4.096kB/4.096kB
32ce5f6a5106: Loading layer [==================================================>]  3.584kB/3.584kB
d874fd2bc83b: Loading layer [==================================================>]  7.168kB/7.168kB
Loaded image: nginx:latest

你可能感兴趣的:(docker,linux,容器)