【快学Docker】Docker镜像相关操作
前言
镜像是Docker的三大核心概念之一(另外两个分别是:容器和仓库)。
Docker运行容器前需要本地存在镜像,如果本地不存在镜像,Docker则会尝试从远端仓库拉去镜像。镜像是Docker一大核心,我们今天就来了解下Docker镜像的相关操作。
原创声明
本文发布于掘金号【Happyjava】。Happy的掘金地址:https://juejin.im/user/5cc2895df265da03a630ddca,Happy的个人博客:(http://blog.happyjava.cn)[http://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 load --input <filename>
或者
docker load < <filename>
总结
本文总结了Docker中对于镜像的常用操作,包括镜像搜索、拉取、创建、删除等。镜像是使用Docker的前提,其基本操作是需要熟练掌握的。
【快学Docker】Docker镜像相关操作的更多相关文章
- docker注册中心相关操作
相关命令详解 (1)push推送 将镜像推送到由其名称或标签指定的仓库中.与pull命令相对. [root@docker ~]# docker push --help Usage: docker pu ...
- Docker镜像相关操作
批量导入镜像 ll *.tgz|awk '{print $NF}'|sed -r 's#(.*)#docker load -i \1#' |bash 批量打tag docker images | se ...
- 三、Docker镜像的相关操作
原文:三.Docker镜像的相关操作 一.查看本地镜像: docker images 二.使用某个镜像来运行容器: docker run -t -i xxxx(镜像名):xx.xx(版本,不带即最新) ...
- Docker 容器、镜像、日志相关操作
一. 容器操作 新建并启动 命令:docker run 查看容器 命令:docker ps 查看终止状态的容器 命令:docker ps -a 启动已终止容器 命令:docker start 终止容器 ...
- docker镜像相关的常用操作
1.保存镜像 #docker save 镜像名称 -o 保存的完整地址和文件名 docker save zhoushiya/zhiboyuan -o d:/zhiboyuan.tar 2.载入镜像 # ...
- 关于 Docker 镜像的操作,看完这篇就够啦 !(下)
紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...
- 关于 Docker 镜像的操作,看完这篇就够啦 !(上)
文章首发于微信公众号: 小哈学Java 镜像作为 Docker 三大核心概念中,最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌握的.本文将带您一步一步,图文并重,上手操作来学习它. 目录 ...
- Docker的镜像及容器常用操作(2)
一.docker镜像 镜像(docker image) --- Docker 运行容器之前需要本地存在镜像,若本能地不存在,那么 Docker 会找默认镜像仓库( Docker Hub 公共注册服务器 ...
- Docker:镜像操作和容器操作
镜像操作 列出镜像: $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello-world latest 0a6b ...
随机推荐
- SQL实现group by 分组后组内排序
在一个月黑风高的夜晚,自己无聊学习的SQL的时候,练习,突发奇想的想实现一个功能查询,一张成绩表有如下字段,班级ID,英语成绩,数据成绩,语文成绩如下图 实现 查询出 每个班级英语成绩最高的前两名的记 ...
- AD 快捷键设置
TAA 设置自动标记原件位号 AR 设置元件向右对齐 AL 设置元件向左对齐 MS 移动所选择 CO 错误报告设置 CTRL + w 设置电气线 PN 添加net label TG 打开封装管理器 P ...
- ILM --interface logic model
1.描述接口逻辑的模型. 2.包括 netlist spef sdc def 3.所有以上文件只描述和接口相关的逻辑,其他逻辑一概排除 3.用于STA/PR/DC的hierachical flow, ...
- Hadoop3.1.1源码Client详解 : Packet入队后消息系统运作之ResponseProcessor(ACK接收)
该系列总览: Hadoop3.1.1架构体系——设计原理阐述与Client源码图文详解 : 总览 紧接着上一篇文章: Hadoop3.1.1源码Client详解 : Packet入队后消息系统运作之D ...
- 松软科技课堂:JavaScriptDOM - 改变 CSS
HTML DOM 允许 JavaScript 更改 HTML 元素的样式. 改变 HTML 样式 如需更改 HTML 元素的样式,请使用此语法: document.getElementById(id) ...
- 一年读100本书---HHR,NZJ---19年最后4个月
那些自律到极致的人,都拥有了开挂的人生.生物钟,绝对一致之后,一切都会很高效. 19年最后一个季度的HHR计划:还剩下3个月的时间,主要搞定几件事情:创业(以太一堂,混沌大学),工作能力(推荐算法工程 ...
- SIM7600CE TCP/IP连接与PPP拨号上网 4G上网
SIM7600CE联网测试分为两部分: 1.TCP/IP连接 2.PPP拨号上网 实验环境:ubuntu-meta 16.04 硬件:树莓派3B,SIM7600CE 上网卡:移动的NB-IOT物联网卡 ...
- jmeter csv 插件讲解
1.变量名称 name,pwd 格式表示因为文本中分割默认是逗号所以变量设置也是按此格式如果想按其他格式可以在分隔符栏自定义 2.忽略首行: 有的csv读取你希望读取的数据有header如: user ...
- 从 0 到 1:Apache APISIX 的 Apache 之路
2019 年 12 月 14 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 广州站活动,本次活动,邀请了来自Apache APISIX.又 ...
- 使刚编辑的vim编辑器配置文件立即生效(实为自动生效)
简单的说,在虚拟机下安装的Centos6.3系统后,默认的是没有vim编辑器的配置文件,此时如果有必要,可以按照自己的习惯定制或配置自己的vim编辑器: 1,如果你是root权限,进入root目录下: ...