第3章 使用Docker镜像
镜像是docker三大核心概念中最重要的,docker运行容器前需要本地存在对应的镜像,如果镜像不存在,docker会尝试先从默认镜像仓库
下载(默认使用Docker Hub 公共注册服务器中的仓库),用户也可以通过配置,使用自定义的镜像仓库。
3.1 获取镜像
//name 是镜像仓库名称,tag是镜像标签(往往用来标识版本),不带的话,默认拉取latest标签。
docker [image] pull name[:tag]
如:
docker pull ubuntu:18.04
注意:
一般来说 latest 标签意味着该镜像的内容会跟踪最新版本的变化而变化,内容是不稳定的。因此,从稳定性上考虑,不要在生产环境中忽略
镜像的标签或者使用默认的latest标记的镜像。
在下载过程中,镜像文件一般由若干层(layer)组成,11323ed2c653 这样的串是层的唯一id。
在不同的镜像仓库服务器下,可能会出现镜像重名的现象。严格来讲,镜像的仓库名称中还应该添加仓库地址(即registry,注册服务器)作为前缀,只是默认使用了官方的
Docker Hub服务,该前缀可以忽略。例如,docker pull ubuntu:18.04 命令相当于 docker pull registry.docker.com/ubuntu:18.04 命令,即从默认的注册
服务器Docker Hub Registry 的ubuntu 仓库中下载标记为 18.04的镜像。
如果从非官方的仓库下载,则需要在仓库名称前面指定完整的仓库地址。如 docker pull hub.c.163.com/public/ubuntu:18.04
子命令:
-a, --all-tags=true|false:是否获取仓库中的所有镜像,默认为否;
--disable-content-trust:取消镜像的内容检验,默认为真;
--registry-mirror=proxy_URL 指定镜像代理服务器来加速(如 https://registry.docker-cn.com)
3.2 查看镜像信息
1.使用images列出镜像
docker images
2.使用tag命令添加镜像标签
docker tag ubuntu:latest myubuntu:latest
3.使用inspect命令查看详细信息
docker inspect 镜像
4.使用history命令查看镜像历史
//查看镜像各层的内容
docker history 镜像
3.3 搜寻镜像
//搜索Docker Hub 官方的仓库的镜像
docker search [option] keyword
//搜索官方提供的php镜像
docker search --filter=is-official=true php
3.4 删除和清理镜像
docker rmi 或者 docker image rm,后面可以跟上标签或者ID
docker rmi 只是删除该镜像多个标签中指定标签而已,不会影响镜像文件。但当镜像文件只剩下一个的时候,此时再使用 docker rmi 命令会彻底删除镜像。
注意:
当该镜像创建的容器存在的时候,镜像文件默认是无法删除的。建议先删除容器,再删除镜像。
//清理镜像
docker image prune
3.5 创建镜像
创建镜像的方法有3种:
1.基于已有的容器创建
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
docker commit -m 'add new file' -a "作者名字" 93bd0df6b0e2 test:v1
2.基于本地模板导入
用户也可以从一个操作系统模板文件导入一个镜像,主要使用 docker import 命令。
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
3.基于Dockerfile创建
基于Dockerfile 创建是最常见的方式。Dockerfile是一个本地文件,利用给定的指令描述基于某个父镜像创建新镜像的过程。
docker build [OPTIONS] PATH | URL | -
3.6 存出和载入镜像
1.存出镜像
如果要导出镜像到本地文件,可以通过 docker save 命令。
docker save [OPTIONS] IMAGE [IMAGE...]
docker save -o test_v1.tar test:v1
之后就可以将 test_v1.tar 将该镜像分享给别人。
2.载入镜像
可以用 docker load 将导出的 tar 文件再导入到本地镜像库。
docker load [OPTIONS]
docker load -i test_v1.tar
或者
docker load < test_v1.tar
3.7 上传镜像
可以使用 docker push 命令上传到镜像仓库,默认上传到 Docker Hub 官方镜像仓库(需要登录)。
docker push [OPTIONS] NAME[:TAG]