Docker之镜像操作
本文开启了CI/CD基础入门,遵循以下原则:理论 + 实战 + 总结。
1.1 拉取镜像
命令:
docker [image] pull [regirster]NAME [ :TAG]
其中:
regirster:仓库地址,默认registry.hub.docker.com。
NAME:镜像名称,如nginx。
TAG:镜像标签,默认为 latest 最新的发布版本。
pull 子命令支持的 选项主要包括:
-a,=true|false: 是否获取仓库中的所有镜像,默认为否;
-disable-con:取消镜像的内容校验,默认为真。
–registry-mirror=proxy_URL:来指定镜像代理服务地址。
执行 docker pull nginx:latest,过程如下:
Trying to pull repository docker.io/library/nginx ...
latest: Pulling from docker.io/library/nginx
33847f680f63: Pull complete
dbb907d5159d: Pull complete
8a268f30c42a: Pull complete
b10cf527a02d: Pull complete
c90b090c213b: Pull complete
1f41b2f2bf94: Pull complete
Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90
Status: Downloaded newer image for docker.io/nginx:latest
1.2 查看镜像信息
1.2.1 列出镜像
docker images
[root@aliyun dockerStudy]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest 08b152afcfae 3 weeks ago 133 MB
docker.io/mysql 5.7 2c9028880e58 3 months ago 447 MB
docker.io/redis latest 41de2cc0b30e 11 months ago 104 MB
Tips:
- 根据镜像名称模糊查找:docker images ngin*
- 根据过滤筛选:docker images -f “k1=v1” -f “k2=v2”
dangling=true|false:显示标记为空的镜像。
label:这个是根据标签进行过滤,其中lable的值,是docker在编译的时候配置的或者 在Dockerfile中配置的。
before:这个是根据时间来进行过滤,其中before的value(某个镜像构建时间)之前的镜像列表。
since:跟before正好相反,表示的是在某个镜像构建之后构建的镜像。
reference:这个是添加正则进行匹配。
[root@aliyun ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest 08b152afcfae 3 weeks ago 133 MB
nginx lfc 08b152afcfae 3 weeks ago 133 MB
docker.io/hyperf/hyperf 7.4-alpine-v3.12-swoole-v4.6 9ad354753fb9 5 weeks ago 110 MB
docker.io/mysql 5.7 2c9028880e58 3 months ago 447 MB
docker.io/redis latest 41de2cc0b30e 11 months ago 104 MB[root@aliyun ~]# docker images -f "before=nginx:lfc"
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/hyperf/hyperf 7.4-alpine-v3.12-swoole-v4.6 9ad354753fb9 5 weeks ago 110 MB
docker.io/mysql 5.7 2c9028880e58 3 months ago 447 MB
docker.io/redis latest 41de2cc0b30e 11 months ago 104 MB[root@aliyun ~]# docker images -f "since=docker.io/redis:latest" -f "before=nginx:lfc"
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/hyperf/hyperf 7.4-alpine-v3.12-swoole-v4.6 9ad354753fb9 5 weeks ago 110 MB
docker.io/mysql 5.7 2c9028880e58 3 months ago 447 MB[root@aliyun ~]# docker images -f "label=maintainer"
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx lfc 08b152afcfae 3 weeks ago 133 MB
docker.io/nginx latest 08b152afcfae 3 weeks ago 133 MB
docker.io/hyperf/hyperf 7.4-alpine-v3.12-swoole-v4.6 9ad354753fb9 5 weeks ago 110 MB
1.2.2 添加镜像标签
docker tag NAME:TAG NAME2:TAG2
[root@aliyun dockerStudy]# docker tag nginx:latest nginx:lfc
[root@aliyun dockerStudy]# docker images nginx*
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest 08b152afcfae 3 weeks ago 133 MB
nginx lfc 08b152afcfae 3 weeks ago 133 MB
可以发现IMAGE ID 和原来是一样的,可以简单理解为 Linux 的软链接,Windows的快捷方式。
1.2.3 查看镜像信息
docker inspect [-f {{".option"}}] NAME:TAG
返回的是一个JSON数组结构。
[root@aliyun dockerStudy]# docker inspect -f {{".RepoTags"}} nginx:lfc
[docker.io/nginx:latest nginx:lfc]
1.2.4 查看镜像历史
docker history NAME:TAG
列出各层的镜像信息
[root@aliyun dockerStudy]# docker history nginx:lfc
IMAGE CREATED CREATED BY SIZE COMMENT
08b152afcfae 3 weeks ago /bin/sh -c #(nop) CMD ["nginx" "-g" "daem... 0 B
<missing> 3 weeks ago /bin/sh -c #(nop) STOPSIGNAL SIGQUIT 0 B
<missing> 3 weeks ago /bin/sh -c #(nop) EXPOSE 80 0 B
<missing> 3 weeks ago /bin/sh -c #(nop) ENTRYPOINT ["/docker-en... 0 B
<missing> 3 weeks ago /bin/sh -c #(nop) COPY file:09a214a3e07c91... 4.61 kB
<missing> 3 weeks ago /bin/sh -c #(nop) COPY file:0fd5fca330dcd6... 1.04 kB
<missing> 3 weeks ago /bin/sh -c #(nop) COPY file:0b866ff3fc1ef5... 1.96 kB
<missing> 3 weeks ago /bin/sh -c #(nop) COPY file:65504f71f5855c... 1.2 kB
<missing> 3 weeks ago /bin/sh -c set -x && addgroup --system... 63.9 MB
<missing> 3 weeks ago /bin/sh -c #(nop) ENV PKG_RELEASE=1~buster 0 B
<missing> 3 weeks ago /bin/sh -c #(nop) ENV NJS_VERSION=0.6.1 0 B
<missing> 3 weeks ago /bin/sh -c #(nop) ENV NGINX_VERSION=1.21.1 0 B
<missing> 3 weeks ago /bin/sh -c #(nop) LABEL maintainer=NGINX ... 0 B
<missing> 3 weeks ago /bin/sh -c #(nop) CMD ["bash"] 0 B
<missing> 3 weeks ago /bin/sh -c #(nop) ADD file:45f5dfa135c848a... 69.3 MB
1.3 删除和清理镜像
1.3.1 使用标签删除镜像
docker image rm NAME:TAG
-f:强制删除,即使有容器依赖该镜像,不建议使用该选项,而是 停容器->删容器->删镜像。
-no-prune:不要清理未带标签的父镜像。
注意: 只剩下一个标签的时候,会彻底删除镜像(以及其下所有文件层)。
1.3.2 使用镜像ID删除镜像
docker image rm IMAGE_ID
1.3.3 清理镜像
使用Docker一段时间后, 系统中可能会遗留一些临时的镜像文件, 以及一些没有被使
用的镜像。(类比于Windows中的程序垃圾,也是喜欢MacOS的理由,哈哈)
docker image prune
-a:删除所有无用镜像(没有该镜像起的容器)。
-filter:清理满足过滤条件的镜像。
-f:强制删除镜像。
[root@aliyun ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest 08b152afcfae 3 weeks ago 133 MB
nginx lfc 08b152afcfae 3 weeks ago 133 MB
docker.io/hyperf/hyperf 7.4-alpine-v3.12-swoole-v4.6 9ad354753fb9 5 weeks ago 110 MB
docker.io/mysql 5.7 2c9028880e58 3 months ago 447 MB
docker.io/redis latest 41de2cc0b30e 11 months ago 104 MB[root@aliyun ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b63b1f311d10 hyperf/hyperf:7.4-alpine-v3.12-swoole-v4.6 "/bin/bash" 4 weeks ago Up 4 weeks 0.0.0.0:9501->9501/tcp hyperf
34bcf7a33154 mysql:5.7 "docker-entrypoint..." 3 months ago Up 5 weeks 0.0.0.0:3306->3306/tcp, 33060/tcp lfc-mysql
c3dcb2bac090 docker.io/redis "docker-entrypoint..." 11 months ago Up 5 weeks 0.0.0.0:6379->6379/tcp myredis[root@aliyun ~]# docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: docker.io/nginx:latest
untagged: docker.io/nginx@sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90
untagged: nginx:lfc
deleted: sha256:08b152afcfae220e9709f00767054b824361c742ea03a9fe936271ba520a0a4b
deleted: sha256:97386f823dd75e356afac10af0def601f2cd86908e3f163fb59780a057198e1b
deleted: sha256:316cd969204ae854302bc55c610698829c9f23fa6fcd4e0f69afa6f29fedfd68
deleted: sha256:dcec23d16cb7cdbd725dc0024f38b39fd326066fc59784df92b40fc05ba3728f
deleted: sha256:1e294000374b3a304c2bfcfe51460aa599237149ed42e3423ac2c3f155f9b4a5
deleted: sha256:c0d318592b21711dc370e180acd66ad5d42f173d5b58ed315d08b9b09babb84a
deleted: sha256:814bff7343242acfd20a2c841e041dd57c50f0cf844d4abd2329f78b992197f4Total reclaimed space: 133.2 MB[root@aliyun ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/hyperf/hyperf 7.4-alpine-v3.12-swoole-v4.6 9ad354753fb9 5 weeks ago 110 MB
docker.io/mysql 5.7 2c9028880e58 3 months ago 447 MB
docker.io/redis latest 41de2cc0b30e 11 months ago 104 MB
1.4 创建镜像
1.4.1 基于已有的容器
docker [container] commit [OPTIONS] CONTAINER [REPOSITORY [:TAG]]
-a:作者。
-c:提交的时候执行Dockerfile指令, 包括 CMD I ENTRYPOINT | ENV I EXPOSE I LABEL I ONBUILD I USER I VOLUME I WORKDIR等。
-m:提交说明。
-p:提交时暂停容器。
[root@aliyun ~]# docker run --name myNginx -p 8080:80 -d nginx
570c98d0654d1620c2f4850f2d0d3963510e43e1a0d35d2eb705218a557c4c15[root@aliyun ~]# docker commit -m "create my nginx image" -a "lfc" 570c98d0654d1620c2f4850f2d0d3963510e43e1a0d35d2eb705218a557c4c15 test:1.0
sha256:065ebeceed10c8661937a8c9a96a184d7f3ac5a94d66e7279028efda442213b0[root@aliyun ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test 1.0 065ebeceed10 10 seconds ago 133 MB
docker.io/nginx latest 08b152afcfae 3 weeks ago 133 MB
docker.io/hyperf/hyperf 7.4-alpine-v3.12-swoole-v4.6 9ad354753fb9 5 weeks ago 110 MB
docker.io/mysql 5.7 2c9028880e58 3 months ago 447 MB
docker.io/redis latest 41de2cc0b30e 11 months ago 104 MB
1.4.2 基于Dockerfile
这是自定义镜像的精髓,为了学习成体系。在此先简单列出,之后的文章中会详细道出。
1.5 导出和载入镜像
1.5.1 导出
docker image save -o fileName NAME:TAG
[root@aliyun ~]# docker image save -o nginxFile.tar nginx:latest
[root@aliyun ~]# ll
-rw------- 1 root root 137441792 Aug 17 00:06 nginxFile.tar
1.5.2 载入
docker image load -i fileName
[root@aliyun ~]# docker image load -i nginxFile.tar
1.6 上传镜像
docker image push NAME[:TAG] [REGISTER_HOST[:REGISTER_PORT]/]NAME[:TAG]
接下来会需要登录信息,填写即可。
1.7 小结
本篇主要介绍的镜像的基本操作,拉取、查看、删除、创建、导出导入、上传等。其中最关键的是基于Dockerfile构建自己的镜像,其他的多用自然熟能生巧(工具的学习,不必去背,多用了就不会忘记)。
PS:理论部分参考杨保华的《Docker技术入门与实战》,感兴趣的可以阅读之。
Docker之镜像操作相关推荐
- Docker:镜像操作和容器操作
镜像操作 列出镜像: $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello-world latest 0a6b ...
- docker——Ubuntu镜像操作和apache web容器操作小实训
文章目录 Ubuntu镜像操作 apache web容器操作 Ubuntu镜像操作 (1)拉取最新的Ubuntu官方镜像. (2)查看该镜像的详细信息. (3)查看该镜像的构建历史. (4)删除该镜像 ...
- Docker容器镜像
一.Docker容器镜像操作 1.查看本地镜像 docker iamges docker iamges list 查看docker容器镜像本地存储位置 ls /var/lib/docker 2.搜索D ...
- 【云原生】第四篇--Docker容器镜像介绍及应用
Docker容器镜像介绍及应用 一.Docker容器镜像操作 1.1 查看本地容器镜像 1.1.1 使用docker images命令查看 1.1.2 使用docker image命令查看 1.1.3 ...
- (五)Docker镜像管理1之镜像操作
这篇文章将介绍镜像的一般操作,包括查看.查找.下载.删除等. 下载镜像 使用下面的命令来下载镜像 1 docker pull 镜像名称或者镜像名称:标签 1 2 #如果不加标签则表示最新的 docke ...
- 容器技术Docker云计算实战 镜像操作大总结
Docker实战之镜像操作: 获取镜像: docker pull NAME[:TAG] root@doc-vm:~# docker pull hello-world Using default tag ...
- Docker常用命令操作——1)、镜像操作;2)、容器操作
Docker常用命令&操作 1).镜像操作 https://hub.docker.com/ 操作 命令 说明 检索 docker search 关键字 eg:docker search red ...
- docker 容器保存为镜像_Docker容器和镜像操作
前言 Docker 容器和镜像操作,记录下来! 容器 创建一个新的容器(ubuntu)并启动 $ docker run -dit --name ubuntu ubuntu 在容器内执行命令(容器在后台 ...
- Centos7 Docker镜像操作_入门试炼02
文章目录 一.镜像操作常用命令 二.镜像基础操作 2.1. 删除所有镜像 2.2. 列出镜像 2.3. 搜索镜像 2.4. 拉取镜像 2.5. 查看所有镜像 2.6. 镜像加速器 2.7. 删除指定镜 ...
最新文章
- 用于RGB-D语义分割的全局-局部传播网络
- 真我与小我隔着什么?
- linux 退出服务器_Vue实战091:Vue项目部署到nginx服务器
- SQL2005利用ROW_NUMER实现分页的两种常用方式
- Linux解压rar、zip、war、tar文件
- php进入文件目录,php文件目录操作
- 即时通讯学习笔记007---在windows下安装openfire_并且使用自定义的数据库这里用mysql
- linux系统如何启动rpcbind,关于Centos6.8操作系统安装配置nfs、rpcbind服务后实现linux系统间文件数据共享(挂载mount共享路径)...
- Java 使用Modsim32进行modbus-tcp协议模拟(从机)并使用java当做主机(Maven项目)进行从机信息获取及修改
- 51单片机-矩阵键盘
- uniapp接收服务器消息,uniapp如何请求服务器数据
- python爬取学籍信息_小学 学生学籍信息汇总及自动检查代码(Python)
- 分布式爬虫联系项目1–阳光热线网站的分布式爬取
- 你知道什么是敏捷交换机吗?
- Apache Flink 1.14.4 on yarn ha环境搭建
- 性能测试能力提升-长连接、短连接、连接池
- 重庆SEO优化高手更新网站文章的窍门
- 模拟cmos集成电路(9)
- Linux:CPU状态信息us,sy,ni,id,wa,hi,si,st含义
- PCIE控制器——数据链路层——DLLP报文
热门文章
- 微信PC端聊天界面表情包无法显示
- 基于asp.net作业批改及提交系统的设计与实现.rar(毕业设计+毕业论文+开题报告+答辩PPT)
- 面向 KubeEdge 边缘计算系统应用研究
- 1024程序员节,北大成立计算机学院!杨芙清任名誉院长
- mysql分隔符声明_MySQL中的分隔符
- thinkphp自动生成二维码
- linux --压缩xz
- FPGA设计开发(基础课题):七人表决器设计
- 浙大2018计算机学院复试办法,2018年浙江大学生仪学院硕士研究生复试办法
- 【一起入门MachineLearning】中科院机器学习期末考试*总复习*-考前押题+考后题目回忆