内容简介:镜像是Docker的三大核心概念之一(另外两个分别是:容器和仓库)。Docker运行容器前需要本地存在镜像,如果本地不存在镜像,Docker则会尝试从远端仓库拉去镜像。镜像是Docker一大核心,我们今天就来了解下Docker镜像的相关操作。本文发布于掘金号【Happyjava】。Happy的掘金地址:
镜像是 Docker 的三大核心概念之一(另外两个分别是:容器和仓库)。
Docker运行容器前需要本地存在镜像,如果本地不存在镜像,Docker则会尝试从远端仓库拉去镜像。镜像是Docker一大核心,我们今天就来了解下Docker镜像的相关操作。
原创声明
本文发布于掘金号【Happyjava】。Happy的掘金地址: juejin.im/user/5cc289… ,Happy的个人博客:(blog.happyjava.cn)[blog.happyjava.cn]。欢迎转载,但须保留此段声明。
获取镜像
命令格式:
docker pull <name:tag> 复制代码
如果不显式指定tag,则会默认选择latest标签,即下载仓库中最新版本的镜像。
如:拉取一个ubuntu镜像:
不指定tag则会默认拉取最新版本
查看镜像信息
使用 docker images 可以查看本地的镜像信息:
可以列出:镜像仓库、标签、镜像ID、创建时间和大小。
使用 docker inspect <image_id> 可以查看镜像详细信息:
[ { "Id": "sha256:4c108a37151f54439950335c409802e948883e00c93fdb751d206c9a9674c1f6", "RepoTags": [ "ubuntu:latest" ], "RepoDigests": [ "ubuntu@sha256:9b1702dcfe32c873a770a32cfd306dd7fc1c4fd134adfb783db68defc8894b3c" ], "Parent": "", "Comment": "", "Created": "2019-06-18T22:51:38.340092056Z", "Container": "fdea049ea807b599050e885a88784e009ed78ebcc4d498be93744bb9374c6134", "ContainerConfig": { "Hostname": "fdea049ea807", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ], "Cmd": [ "/bin/sh", "-c", "#(nop) ", "CMD [\"/bin/bash\"]" ], "ArgsEscaped": true, "Image": "sha256:ae950a0376fe6c4d08fa7ff395f50f4a909e26e9f2d865d8641cda024161c6ee", "Volumes": null, "WorkingDir": "", "Entrypoint": null, "OnBuild": null, "Labels": {} }, "DockerVersion": "18.06.1-ce", "Author": "", "Config": { "Hostname": "", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ], "Cmd": [ "/bin/bash" ], "ArgsEscaped": true, "Image": "sha256:ae950a0376fe6c4d08fa7ff395f50f4a909e26e9f2d865d8641cda024161c6ee", "Volumes": null, "WorkingDir": "", "Entrypoint": null, "OnBuild": null, "Labels": null }, "Architecture": "amd64", "Os": "linux", "Size": 64184378, "VirtualSize": 64184378, "GraphDriver": { "Data": { "LowerDir": "/var/lib/docker/overlay2/fc1c2e7f7d583af0ddaa86f2d10be50371a966dd564c9d95b1816c33296520c7/diff:/var/lib/docker/overlay2/615da971b39e6d5121eb018b14f350b1466ef9445870ddba03d2d2da3ecd25d7/diff:/var/lib/docker/overlay2/e508ef7c05f3bdcd784d1f59064574d92f11516e6592cd5df24cfdac7ae13768/diff", "MergedDir": "/var/lib/docker/overlay2/f6b9b965a5e2714452cf355e1a530b8b2f8c5d818e73f723debd7b27d955ae5e/merged", "UpperDir": "/var/lib/docker/overlay2/f6b9b965a5e2714452cf355e1a530b8b2f8c5d818e73f723debd7b27d955ae5e/diff", "WorkDir": "/var/lib/docker/overlay2/f6b9b965a5e2714452cf355e1a530b8b2f8c5d818e73f723debd7b27d955ae5e/work" }, "Name": "overlay2" }, "RootFS": { "Type": "layers", "Layers": [ "sha256:ba9de9d8475e7f5e40086358a1353b3cc080994fc6d31e4272dd3acb69b0151e", "sha256:fbd2732ad777cb5db2515fa62b6122b797be233d01db02e0a19e5d894688cad6", "sha256:dda1518598187bf87704acc22aa0ec2a67d9e7835c24346dfca118ab42c5cd0b", "sha256:75e70aa52609fdbd63b58d46d6f7c20470062e1c9bb75616f7703a358a61e5ca" ] }, "Metadata": { "LastTagTime": "0001-01-01T00:00:00Z" } } ] 复制代码
修改镜像TAG
我们使用默认tag拉取镜像,在本地TAG会显示为latest,其实这是很不好的,因为时间久了,可能我们也忘记其具体的版本号了。不过我们可以通过如下命令修改镜像TAG:
docker tag <iamges_name>:<images_tag> <new_iamges_name>:<new_images_tag> 复制代码
如:
我们可以看到ubuntu 18.09 和 latest 的 image id 是一样的,说明这是同一个镜像。
搜索镜像
docker search name 复制代码
其中,官方镜像会有OFFICIAL标识
删除镜像
使用镜像ID删除
docker rmi <iamge_id> 复制代码
使用名字和TAG删除
docker rmi <name>:<tag> 复制代码
期中tag字段是可选的。
如遇到删除不了的镜像,比如正在使用的,可以通过 -f 参数强制删除
创建镜像
创建镜像有三种方式:基于容器创建、基于本地模板导入、基于Dockerfile创建。
基于容器创建
创建一个ubuntu容器
docker run -it --name ubuntu ubuntu:18.09 /bin/bash # 在容器内部创建一个文件 touch happyjava.txt # 退出 exit 复制代码
这时候就可以创建镜像了,命令如下
docker commit -m "commit message" -a "author" <container_id> <image_name>:<tag> 复制代码
如:
docker commit -m "create a new file happyjava.txt" -a "Happy" d51e6f5e99d4 personalrepo:99 复制代码
docker images查看镜像:
这就跟GIT的commit操作一样,可以把变动提交上去。我们可以使用自己创建的镜像新建一个容器,就可以看到我们创建的happyjava.txt文件了。
基于本地模板创建
推荐模板下载地址:
https://wiki.openvz.org/Download/template/precreated 复制代码
创建命令如下:
cat centos-5-x86.tar.gz |docker import - <name>:<tag> 复制代码
Dockerfile方式
基于Dockerfile方式创建镜像,这个放到以后再做讲解~~~
保存和加载镜像
保存镜像
docker save -o <filename> <name:tag/id> 复制代码
如:
以上所述就是小编给大家介绍的《【快学Docker】Docker镜像相关操作》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Docker常用镜像基本操作
- Docker 基本操作-镜像篇(上)
- Docker基础命令详解——镜像及容器操作
- KVM镜像制作及挂载镜像文件
- 查看Docker镜像仓库中镜像的所有标签
- Vagrant 使用国内镜像安装插件和 box 镜像
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。