本篇我们来详细介绍 docker 镜像的操作。
注:环境为 CentOS7,docker 19.03
之前已经说过,容器是 docker 的核心概念之一,所以对应的就需要知道它的使用方法,接下来我们就来了解 docker 镜像的添加、删除、查找等操作。
docker 获取镜像使用的命令为:docker [image] pull NAME[: TAG]
。
例如我们获取一个 Ubuntu18.04 系统的基础镜像,就可以使用命令:
docker pull ubuntu:18.04
如果不指定版本,默认就拉取最新的版本 ubuntu:latest
。
注:一般来说,镜像的 latest 表示该镜像内容为最新,出于稳定性考虑,不要在生产中使用最新版本的,最好拉取是带上版本号。
使?docker pull命令下载中会获取并输出镜像的各层信息。 当不同的镜像包括相同的层时, 本地仅存储了层的?份内容, 减?了存储空间。
如果我们要从指定的仓库中拉取,可以通过补全镜像的路径实现,例如从网易上拉取 ubuntu18.04,命令如下:
docker pull hub.c.163.com/public/ubuntu:18.04
pull?命令?持的选项主要包括:
一般在国内,拉取官方的镜像速度,所以我们可以改成默认从国内云服务供应商的仓库上拉取,比如阿里云的。需要修改配置文件如下:
# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://dhq9bx4f.mirror.aliyuncs.com"]
}
下载了镜像后,我们就可以使用它了:
# docker run -it ubuntu:18.04 bash
root@fe3ce439f6dc:/# echo "Hello World"
Hello World
root@fe3ce439f6dc:/# exit
这是关于 docker 容器部分的知识,这里暂时不做解释。
查看镜像主要使用 docker 的 ls
、tag
、inspect
子命令:
使用 images 列出所有镜像:
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 a2a15febcdf3 5 days ago 64.2MB
redis latest f7302e4ab3a8 5 days ago 98.2MB
我们来说明下输出的信息:
images?命令主要?持如下选项:
其中, 还?持对输出结果进?控制的选项, 如-f.--filter=[]、 --notrunc=true|false、 -q、 --quiet=true|false等
通过 tag 子命令可以为镜像添加一个新的标签。
[root@CentOS1 ~]# docker tag ubuntu:18.04 myubuntu:18.04
[root@CentOS1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myubuntu 18.04 a2a15febcdf3 5 days ago 64.2MB
ubuntu 18.04 a2a15febcdf3 5 days ago 64.2MB
如果细节看的话会发现 ubuntu 和 myubuntu 的 IMAGE ID 是一样的,因为 tag 子命令其实是给原来的镜像添加了别名,内部指向同一个文件,所以删除其中的某一个,只是删除一个链接而已,实际的镜像文件依然存在。
使用 inspect 子命令来查看镜像的详细信息:docker [image] inspect
docker inspect ubuntu
返回 JSON 格式的消息,如果只要其中一项内容,可以使用 -f 指定:
docker inspect -f {{".Architecture"}} ubuntu
使用 history 子命令查看镜像的历史命令
docker history ubuntu
输出会被截断,带上--no-trunc
选项输出全部信息。
使用 search 子命令可以在仓库中搜寻我们需要的镜像,语法为 docker search [option] keyword
,?持的命令选项主要包括:
例如我们搜寻名为 nginx 的镜像:
docker search --limit=4 --filter=starts=4 nginx
删除镜像使用 docker rmi 或者 docker images rm,语法为 docker rmi IMAGE[IMAGE...]
,其中IMAGE可以为标签或ID。?持选项包括:
docker rmi myubuntu:latest
当该镜像存在容器时,不能删除镜像,但可以加上 -f
选项强制删除,同时也删除容器。
注:当一个镜像有多个 tag 时,docker rmi 只是删除该镜像的标签,不会影响到镜像文件
使?Docker?段时间后, 系统中可能会遗留?些临时的镜像?件, 以及?些没有被使?的镜像, 可以通过docker image prune命令来进?清理。?持选项包括:
# docker image prune -f
Total reclaimed space: 0B
原文:https://www.cnblogs.com/xingyys/p/11385457.html