前言
镜像是Docker的三大核心概念之一(另外两个分别是:容器和仓库)。
Docker运行容器前需要本地存在镜像,如果本地不存在镜像,Docker则会尝试从远端仓库拉去镜像。镜像是Docker一大核心,我们今天就来了解下Docker镜像的相关操作。
获取镜像
命令格式:
1 | docker pull <name:tag> |
如果不显式指定tag,则会默认选择latest标签,即下载仓库中最新版本的镜像。
如:拉取一个ubuntu镜像:
不指定tag则会默认拉取最新版本
查看镜像信息
使用 docker images 可以查看本地的镜像信息:
可以列出:镜像仓库、标签、镜像ID、创建时间和大小。
使用 docker inspect <image_id> 可以查看镜像详细信息:
1 | [ |
修改镜像TAG
我们使用默认tag拉取镜像,在本地TAG会显示为latest,其实这是很不好的,因为时间久了,可能我们也忘记其具体的版本号了。不过我们可以通过如下命令修改镜像TAG:
1 | docker tag <iamges_name>:<images_tag> <new_iamges_name>:<new_images_tag> |
如:
我们可以看到ubuntu 18.09 和 latest 的 image id 是一样的,说明这是同一个镜像。
搜索镜像
1 | docker search name |
其中,官方镜像会有OFFICIAL标识
删除镜像
使用镜像ID删除
1 | docker rmi <iamge_id> |
使用名字和TAG删除
1 | docker rmi <name>:<tag> |
期中tag字段是可选的。
如遇到删除不了的镜像,比如正在使用的,可以通过 -f 参数强制删除
创建镜像
创建镜像有三种方式:基于容器创建、基于本地模板导入、基于Dockerfile创建。
基于容器创建
创建一个ubuntu容器
1 | docker run -it --name ubuntu ubuntu:18.09 /bin/bash |
这时候就可以创建镜像了,命令如下
1 | docker commit -m "commit message" -a "author" <container_id> <image_name>:<tag> |
如:
1 | docker commit -m "create a new file happyjava.txt" -a "Happy" d51e6f5e99d4 personalrepo:99 |
docker images查看镜像:
这就跟GIT的commit操作一样,可以把变动提交上去。我们可以使用自己创建的镜像新建一个容器,就可以看到我们创建的happyjava.txt文件了。
基于本地模板创建
推荐模板下载地址:
1 | https://wiki.openvz.org/Download/template/precreated |
创建命令如下:
1 | cat centos-5-x86.tar.gz |docker import - <name>:<tag> |
Dockerfile方式
基于Dockerfile方式创建镜像,这个放到以后再做讲解~~~
保存和加载镜像
保存镜像
1 | docker save -o <filename> <name:tag/id> |
如:
加载镜像
1 | docker load --input <filename> |
或者
1 | docker load < <filename> |
总结
本文总结了Docker中对于镜像的常用操作,包括镜像搜索、拉取、创建、删除等。镜像是使用Docker的前提,其基本操作是需要熟练掌握的。