Docker镜像定义
Docker 镜像是一种轻量级可执行的独立软件包,Docker 镜像除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数。
Docker镜像作用
我们可以基于某一个镜像创建多个容器:
镜像是运行容器的前提,镜像是 Docker 容器的基石, 官方的Docker Hub 网站已经提供了数十万个镜像供大家开放下载,有了镜像才能启动容器。
Docker容器和Docker镜像的区别
从Docker 的官方文档来看,Docker 容器的定义和 Docker 镜像的定义几乎是相同,Docker 容器和Docker 镜像的区别主要在于docker 容器多出了一个可写层。
简单说来,我们可以将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面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》