Docker镜像详解(定义作用及使用命令)

Docker镜像详解(定义作用及使用命令)-mikechen

Docker镜像定义

Docker 镜像是一种轻量级可执行的独立软件包,Docker 镜像除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数。

 

Docker镜像作用

我们可以基于某一个镜像创建多个容器:

Docker镜像详解(定义作用及使用命令)-mikechen

镜像是运行容器的前提,镜像是 Docker 容器的基石, 官方的Docker Hub 网站已经提供了数十万个镜像供大家开放下载,有了镜像才能启动容器。

 

Docker容器和Docker镜像的区别

从Docker 的官方文档来看,Docker 容器的定义和 Docker 镜像的定义几乎是相同,Docker 容器和Docker 镜像的区别主要在于docker 容器多出了一个可写层。

Docker镜像详解(定义作用及使用命令)-mikechen

简单说来,我们可以将Docker 镜像看成是Docker 容器的静态时,也可将Docker 容器看成是Docker镜像的运行时。

 

Docker镜像使用

当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

列出镜像列表

我们可以使用 docker images 来列出本地主机上的镜像:

docker images

示例:

[root@mikechen ~]# docker image ls -a
REPOSITORY                                                     TAG                 IMAGE ID            CREATED             SIZE
node                                                           latest              5377c9a2fb1f        5 weeks ago         943MB
openzipkin/zipkin                                              latest              1850194f377c        3 months ago        160MB
rancher/server                                                 stable              98d8bb571885        6 months ago        1.08GB
redis                                                          5.0.7               7eed8df88d3b        8 months ago        98.2MB
hello-world                                                    latest              bf756fb1ae65        10 months ago       13.3kB

参数介绍

  • REPOSITORY:表示镜像的仓库源;
  • TAG:镜像的标签;
  • IMAGE ID:镜像ID;
  • CREATED:镜像创建时间;
  • SIZE:镜像大小;

 

查找镜像

使用如下命令,即可查找镜像:

docker search 镜像名称

比如:我查找redis镜像

[root@localhost ~]# docker search redis

出现如下镜像:

NAME DESCRIPTION

STARS OFFICIAL AUTOMATED

redis Redis is an open source key-value store th...

9921 [OK]

sameersbn/redis

83 [OK]

grokzen/redis-cluster Redis cluster 3.0, 3.2, 4.0, 5.0, 6.0, 6.279

rediscommander/redis-commander Alpine image for redis-commander - Redis m...

65 [OK]

redislabs/redisearch Redis With the RedisSearch module pre-load...

参数介绍

  • NAME: 镜像仓库源的名称;
  • DESCRIPTION: 镜像的描述;
  • OFFICIAL: 是否 docker 官方发布;
  • stars: 类似 Github 里面的 star,表示点赞、喜欢的意思;
  • AUTOMATED: 自动构建;

 

拉取镜像

语法格式:

docker pull 镜像名称

示例:要拉取 mysql镜像

[root@docker ~]# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
6d28e14ab8c8: Pull complete 
dda15103a86a: Pull complete 
55971d75ab8c: Pull complete 
f1d4ea32020b: Pull complete 
61420072af91: Pull complete 
05c10e6ccca5: Pull complete 
7e0306b13322: Pull complete 
900b113c001e: Pull complete 
06cd07c30bf4: Pull complete 
df0d65aee5aa: Pull complete 
53eeb6e0335c: Pull complete 
6cf8f9563e97: Pull complete 
Digest: sha256:f91e704ffa9f19b9a267d9321550a0772a1b64902226d739d3527fd6edbe3dfe
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest

另外这里也可以很清楚的看到,是一层一层的进行下载,这就是镜像分层结构。

默认情况下去docker hub下载镜像比较慢,由于是在国外所以不太稳定,自己可以配置为国内的镜像仓库,如阿里云仓库。

 

删除镜像

镜像删除使用 docker rmi 命令:

docker rmi 镜像名称

示例,删除nginx的镜像:

root@mikechen:~# docker rmi -f nginx:v3

 

更新镜像

语法格式:

docker exec -i -t 镜像名称 /bin/bash

在运行的容器内使用 apt-get update 命令进行更新,在完成操作之后,输入 exit 命令来退出这个容器。

 

Docker镜像总结

运行容器时如果使用的镜像本地不存在,会自动从官方Docker Hub 镜像源仓库中下载,我们也可以自己制作镜像供他人下载。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法