119 lines
4.1 KiB
Markdown
119 lines
4.1 KiB
Markdown
# 镜像
|
||
容器是一个独立的进程,它从哪里获取文件和配置?如何共享这些环境?
|
||
|
||
镜像是一个标准化包,其中包含运行容器所需的所有文件、二进制文件、库和配置。
|
||
- MySQL 镜像会打包数据库二进制文件、配置文件和其他依赖项。
|
||
- Python Web 应用镜像会打包 Python 运行时、应用代码及其所有依赖项。
|
||
|
||
镜像两个重要原则:
|
||
1. 镜像是不可变的。一旦创建,就无法修改。只能创建新镜像或在其上进行更改。
|
||
2. 镜像由层组成。每一层代表一组文件系统变更,包括添加、删除或修改文件。
|
||
|
||
|
||
# 镜像管理
|
||
## 搜索镜像
|
||
`Usage: docker search [OPTIONS] TERM`
|
||
```bash
|
||
# 搜索包含关键字的镜像
|
||
[root@docker-server ~]# docker search centos
|
||
```
|
||
可以看到返回了很多包含关键字的镜像,其中包括镜像名字、描述、点赞数(表示该镜像的受欢迎程度)、是否官方创建、是否自动创建。默认输出结果按照星级评价进行排序。
|
||
|
||

|
||
|
||
|
||
## 下载镜像
|
||
`Usage: docker pull [OPTIONS] NAME[:TAG|@DIGEST]`
|
||
```bash
|
||
# 下载nginx、centos、hello-world镜像
|
||
[root@docker-server ~]# docker pull nginx
|
||
[root@docker-server ~]# docker pull centos
|
||
[root@docker-server ~]# docker pull hello-world
|
||
```
|
||
其中,NAME是镜像名称,TAG是镜像的标签(往往用来是表示版本信息),通常情况下,描述一个镜像需要包括名称+标签,如果不指定标签,标签的值默认为latest。
|
||
|
||
|
||
## 镜像列表
|
||
`Usage: docker image COMMAND`
|
||
```bash
|
||
# 列出本地所有镜像
|
||
[root@docker-server ~]# docker image ls
|
||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||
nginx latest d1a364dc548d 2 weeks ago 133MB
|
||
...
|
||
|
||
# 字段说明
|
||
- REPOSITORY:镜像仓库名称
|
||
- TAG:镜像的标签信息
|
||
- 镜像ID:唯一用来标识镜像,如果两个镜像的ID相同,说明他们实际上指向了同一个镜像,只是具有不同标签名称而已
|
||
- CREATED:创建时间,说明镜像的最后更新时间
|
||
- SIZE:镜像大小,优秀的镜像往往体积都较小
|
||
```
|
||
|
||
|
||
## 镜像标签
|
||
`Usage: docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]`
|
||
```bash
|
||
[root@docker-server ~]# docker tag centos:latest mycentos:latest
|
||
[root@docker-server ~]# docker images
|
||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||
nginx latest d1a364dc548d 2 weeks ago 133MB
|
||
...
|
||
```
|
||
|
||
|
||
## 镜像信息
|
||
`Usage: docker image inspect [OPTIONS] IMAGE [IMAGE...]`
|
||
```bash
|
||
[root@docker-server ~]# docker inspect centos:latest
|
||
[
|
||
{
|
||
"Id": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",
|
||
"RepoTags": [
|
||
"centos:latest",
|
||
"mycentos:latest"
|
||
]
|
||
...
|
||
}
|
||
]
|
||
```
|
||
|
||
## 镜像创建信息
|
||
`Usage: docker image history [OPTIONS] IMAGE`
|
||
```bash
|
||
[root@docker-server ~]# docker history centos:latest
|
||
IMAGE CREATED CREATED BY SIZE COMMENT
|
||
300e315adb2f 6 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
|
||
...
|
||
```
|
||
|
||
## 镜像导出
|
||
`Usage: docker image save [OPTIONS] IMAGE [IMAGE...]`
|
||
```bash
|
||
[root@docker-server ~]# docker image save centos:latest -o /opt/centos.tar.gz
|
||
[root@docker-server ~]# ll /opt/centos.tar.gz
|
||
-rw------- 1 root root 216535040 6月 9 10:33 /opt/centos.tar.gz
|
||
[root@docker-server ~]# docker image save centos:latest > /opt/centos-1.tar.gz
|
||
[root@docker-server ~]# ll /opt/centos-1.tar.gz
|
||
-rw-r--r-- 1 root root 216535040 6月 9 10:35 /opt/centos-1.tar.gz
|
||
```
|
||
|
||
## 镜像导入
|
||
`Usage: docker image load [OPTIONS]`
|
||
```bash
|
||
[root@docker-server ~]# docker image load -i /opt/centos.tar.gz
|
||
Loaded image: centos:latest
|
||
[root@docker-server ~]# docker image load < /opt/centos.tar.gz
|
||
Loaded image: centos:latest
|
||
```
|
||
|
||
## 删除镜像
|
||
`Usage: docker image rm [OPTIONS] IMAGE [IMAGE...]`
|
||
```bash
|
||
[root@docker-server ~]# docker image rm nginx:latest
|
||
Untagged: nginx:latest
|
||
Untagged: nginx@sha256:6d75c99af15565a301e48297fa2d121e15d80ad526f8369c526324f0f7ccb750
|
||
[root@docker-server ~]# docker image rm 300e315adb2f
|
||
...
|
||
```
|