Docker镜像服务(二)
一、Docker镜像介绍
镜像是Docker的三大核心概念之一。
Docker运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker会尝试先从默认的镜像仓库下载(默认使用Docker Hub公共注册服务中的仓库),我们也可以通过配置,使用自定义的镜像仓库。
二、获取最新的Ubuntu镜像
从Docker Hub的Ubuntu仓库下载一个最新的Ubuntu操作系统镜像,并下载一个centos7.2的系统镜像
# docker pull ubuntu
# docker pull centos:7.2.1511
从下载过程中可以看到分层存储的概念,镜像是由多层存储所构成。下载也是一层层的去下载,并非单一文件。下载过程中给出了每一层的 ID 的前 12 位。并且下载结束后,给出该镜像完整的 sha256 的摘要,以确保下载一致性。
三、查看本地镜像信息
# docker images
# 来自于哪个仓库 镜像标签信息 镜像的ID(唯一) 创建时间 镜像大小 REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 775349758637 2 weeks ago 64.2MB centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB centos latest 1e1148e4cc2c 11 months ago 202MB
使用docker tag为本地镜像添加新的标签, 这两个镜像的ID是一样的,只是名字不同而已。标签起到的快捷方式的作用。
# docker tag centos:7.2.1511 centos:7.2 # docker images
REPOSITORY TAG IMAGE ID CREATED SIZE centos 7.2 9aec5c5fe4ba 8 months ago 195MB centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB
四、搜索镜像
--stars=0 默认的输出结果将按照星级评价进行排序,还可看到是否官方镜像,是否自动允许用户验证镜像的来源和内容。
# docker search mysql
五、删除镜像
# docker rmi ubuntu:latest
# 或者复制镜像的ID全部删除
# docker rmi -f 9aec5c5fe4ba
六、创建镜像
创建镜像有三种方法:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建。
本次主要是基于已有的镜像容器创建
6.1 首先启动一个镜像,并在其中进行修改,并退出
[root@192-168-5-91 ~]# docker run -it centos /bin/bash [root@f2306f13f765 /]# yum install net-tools -y [root@f2306f13f765 /]# exit
6.2使用docker commit创建容器
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f2306f13f765 centos "/bin/bash" 3 minutes ago Exited (0) About a minute ago gracious_shockley # docker commit -m 'install net-tools' -a 'lzfn' f2306f13f765 centos_test # -m 提交消息,-a 作者信息 sha256:c753a863c07a4901ed72ff39110971538a40dfc66824dffad5e0060d5994b555 # docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos_test latest c753a863c07a 24 seconds ago 291MB
七、镜像的导入与导出
7.1 将镜像导出到本地文件
# docker save -o centos7.2.tar centos:7.2.1511 # docker save centos:7.2.1511 > centos7.2.tar
7.2 将本地镜像导入到docker仓库
# docker load --input centos7.2.tar # docker load < centos7.2.tar
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· Vite CVE-2025-30208 安全漏洞
· 《HelloGitHub》第 108 期
· MQ 如何保证数据一致性?
· 一个基于 .NET 开源免费的异地组网和内网穿透工具