docker镜像的管理

简介:

Docker image详细介绍

在之前的介绍中,我们知道docker images 是docker的三大组件之一。

docker把下载的 images 存储到docker主机上,如果一个 image 不在主机上,docker会从一个镜像仓库下载,默认的仓库是  DOCKER HUB  公共仓库。

接下来将介绍更多关于docker images 的内容,包括:

使用和管理本地主机上的 images

创建一个基础的 images

上传 images 到docker hub (公共images 仓库)

列出本地主机上已经存在的 images

1)使用docker images  显示本机上的 images


wKioL1i0LVDwcSuiAACNMljLndE942.jpg

一个仓库可能有一个 images 的多个发行版,比如ubuntu,他们有 10.04 12.04 12.10 13.04 14.04,每个发行版的标记都不同,可以使用 tag 命令来指定 images

注:如果你不指定具体的发行版,比如仅使用ubuntu,那么docker会使用最新的发行版ubuntu:latest

提示:建议最好指定发行版,只有这样你才可以保证你真正使用的 image 是那个

2)查找 images

docker的一个特点是很多人因为各种不同的用途创建了各种不同的 images 。它们都被上传到了docker hub 共有仓库上,我们可以在docker hub 的网站上来查找它们。使用docker search 命令。格式是“docker  search 关键词”

wKiom1i0LVGxk1fhAACZWLx4uh0372.jpg

3)获取/下载 images

当我们启动容器使用的 image 不在本地主机上时,docker会自动下载他们。这很耗时,我们可以使用docker pull 命令来预先下载我们需要的 image 。

格式是“docker  pull   镜像名”

wKioL1i0LVGAXE8DAABRSJ7jyrQ798.jpg

4)查看镜像完整信息

当镜像下载成功后,你可以看到 12 位的hash 值像 05188b417f30,这是下载完整的镜像的精简 ID,这些短的镜像 ID 是完整镜像ID 的前 12 个字符--可以使用docker inspect 或者docker images  --no-trunc来获得完整的镜像 ID。

wKiom1i0LVHjsByaAAAhXo9P9XI139.jpg

wKiom1i0LVKTk8uPAAB1Q9zo2QA588.jpg

5)创建我们自己的 images

别人的镜像虽然好,但不一定适合我们。我们可以对他们做一些改变,有 2 个方法:

1.第一个方法:使用docker commit  来扩展一个 image。

步骤如下:

①先使用 基础image 启动容器,更新后提交结果到新的 image,命令最后其实省略了/bin/bash,其实默认就是/bin/bash,可以省略。我们这里以docker.io/centos:latest为基础镜像来制作属于我们的镜像。

wKioL1i0LVKgPJCQAACM7UZvigI134.png

②往容器内添加应用

wKioL1i0LVOy93yzAAA9U-r73m0173.png

③应用安装完毕,退出容器

wKiom1i0LVPRgP5OAAATgLsTZIY074.png

④用docker commit来制作镜像成为我们的镜像

wKioL1i0LVODAAisAACET3_Z4ms422.jpg

⑤使用docker images  来查看新创建的镜像,之后,可以使用新的镜像来启动容器了,这里我们只学怎么做成属于我们的镜像,就到此为止了,就不进入容器了。

wKiom1i0LVThUGC7AAA3eOgdlJU119.jpg

2.第二个办法:从dockerfile镜像文件来创建 image

两种方法的对比说明

1)使用docker commit  来扩展一个 image 比较简单,但它不容易在一个团队中分享它,别人看不见你镜像内部安装了什么应用

2)使用docker build  来创建一个新的 image 。可以让别人看见你制作的镜像内有有什么应用,便于团队交流。

步骤如下:

①我们需要创建一个dockerfile,包含一些如何创建我们的image 的指令。现在,我们来创建一个目录和一个dockerfile。我们这里以docker.io/centos:centos7为基础镜像来制作属于我们的镜像。

wKioL1i0LVSCmegRAABDd7HFtGA786.png

wKiom1i0LVWT2N-fAADzcy04JFY695.png

②编写完成dockerfile后可以使用dockerbuild  来生成镜像。

wKioL1i0LVXhgYK3AAB9xIni2qs950.jpg

wKiom1i0LVWyH58tAACB2mOwMS8284.png

③使用docker images  来查看新创建的镜像,之后,可以使用新的镜像来启动容器了,这里我们只学怎么做成属于我们的镜像,就到此为止了,就不进入容器了。

wKiom1i0LVaCGgLwAAAzPv-Zapw082.jpg

说明:可以看到 build 进程在执行操作。它要做的第一件事情就是上传这个dockerfile内容,因为所有的操作都要依据dockerfile来进行。然后,dockfile中的指令被一条一条的执行。每一步都创建了一个新的容器,在容器中执行指令并提交修改(就跟之前介绍过的docker commit  一样)。当所有的指令都执行完毕之后,返回了最终的镜像 id。所有的中间步骤所产生的容器都被删除和清理了。

*注意一个镜像不能超过127 层

6)用docker tag  命令来修改镜像的标签(即修改镜像的名字)

我们这里就以修改centos6镜像为例:

wKioL1i0LVbwDZhQAACB7i5HFk0811.jpg

7)删除不要的镜像

我们就以删除centos6镜像为例:

wKioL1i0LVbCakfHAAByt8IJVfA606.jpg

8)从本地文件系统导入

要从本地文件系统导入一个镜像,可以使用openvz(容器虚拟化的先锋技术)的模板来创建:openvz的模板下载地址为http://openvz.org/Download/template/precreated。

先下载了一个centos-7-x86_64.tar.gz的镜像,之后使用以下命令导入:

wKiom1i0LVewrRHDAAAjmybRkYg078.jpg

9)上传镜像

用户可以通过docker push  命令,把自己创建的镜像上传到仓库中来共享。例如,用户在 Docker Hub 上,完成注册后,可以推送自己的镜像到仓库中。

这里有两种访问可以创建和注册一个 Docker Hub 账户:

1.通过网站,(https://hub.docker.com)

2.通过命令行

你可以通过使用命令行输入 docker login 命令来创建一个 Docker Hub 账号

#docker login

邮箱确认

一旦你填写完毕表格,请查看你的电子邮件,通过点击欢迎信息中的链接来激活您的账户。

基本思路:

首先注册docker的账户,然后使用dockerlogin登录。

使用docker push可以将自己的镜像上传上去了.

wKioL1i0LVfiA6ckAAAqsyvNG_Q479.jpg

wKiom1i0LVeTQWIyAABFp8ItShE165.jpg

10)存出和载入镜像

当需要把一台机器上的镜像迁移到另一台机器的时候,需要存出镜像与载入镜像。

存出镜像

如果要导出镜像到本地文件,可以使用docker save  命令。

wKiom1i0LVfRDoE9AAAiHmbAPio980.jpg

载入镜像

可以使用docker load  从导出的本地文件中再导入到本地镜像库

wKioL1i0LViydvXVAACGk4FDmxk806.jpg


本文转自Mr大表哥 博客,原文链接:  http://blog.51cto.com/zpf666/1901839   如需转载请自行联系原作者



相关文章
|
1天前
|
存储 安全 持续交付
【Docker 专栏】Docker 镜像的版本控制与管理
【5月更文挑战第9天】本文探讨了Docker镜像版本控制与管理的重要性,包括可重复性、回滚能力、协作开发和持续集成。常用方法有标签、构建参数和版本控制系统。管理策略涉及定期清理、分层管理和镜像仓库。语义化标签、环境变量和配置文件在版本控制中有应用。版本系统与Docker结合能跟踪历史和促进协作。注意点包括优化镜像大小、确保安全性和兼容性。案例分析和未来趋势展示了持续发展的镜像管理技术,为Docker应用的稳定与进步保驾护航。
【Docker 专栏】Docker 镜像的版本控制与管理
|
1天前
|
运维 安全 Docker
【Docker 专栏】Docker 镜像安全扫描与漏洞修复
【5月更文挑战第9天】Docker技术在软件开发和部署中带来便利,但其镜像安全问题不容忽视。本文探讨了Docker镜像安全扫描与漏洞修复,强调了镜像安全对应用和系统的重要性。文中介绍了静态和动态扫描方法,列举了软件漏洞、配置漏洞和恶意软件等常见安全问题,并提到了Clair和Trivy等扫描工具。修复策略包括更新软件、调整配置和重建镜像。此外,加强安全意识、规范镜像制作流程和定期扫描是管理建议。未来,将持续面对新的安全挑战,需持续研究和完善安全技术。
【Docker 专栏】Docker 镜像安全扫描与漏洞修复
|
1天前
|
Java 数据库连接 Docker
【Docker 专栏】Docker 容器内环境变量的管理与使用
【5月更文挑战第9天】本文介绍了Docker容器中环境变量的管理与使用,环境变量用于传递配置信息和设置应用运行环境。设置方法包括在Dockerfile中使用`ENV`指令或在启动容器时通过`-e`参数设定。应用可直接访问环境变量或在脚本中使用。环境变量作用包括传递配置、设置运行环境和动态调整应用行为。使用时注意变量名称和值的合法性、保密性和覆盖问题。理解并熟练运用环境变量能提升Docker技术的使用效率和软件部署质量。
【Docker 专栏】Docker 容器内环境变量的管理与使用
|
2天前
|
Java Linux 数据安全/隐私保护
Docker自定义JDK镜像并拉取至阿里云镜像仓库全攻略
Docker自定义JDK镜像并拉取至阿里云镜像仓库全攻略
|
2天前
|
存储 弹性计算 运维
Docker数据集与自定义镜像:构建高效容器的关键要素
Docker数据集与自定义镜像:构建高效容器的关键要素
|
2天前
|
存储 缓存 运维
【Docker 专栏】Docker 镜像的分层存储与缓存机制
【5月更文挑战第8天】Docker 镜像采用分层存储,减少空间占用并提升构建效率。每个镜像由多个层组成,共享基础层(如 Ubuntu)和应用层。缓存机制加速构建和运行,通过检查已有层来避免重复操作。有效管理缓存,如清理无用缓存和控制大小,可优化性能。分层和缓存带来资源高效利用、快速构建和灵活管理,但也面临缓存失效和层管理挑战。理解这一机制对开发者和运维至关重要。
【Docker 专栏】Docker 镜像的分层存储与缓存机制
|
2天前
|
数据库 Docker 容器
【Docker 专栏】使用 Dockerfile 自动化构建 Docker 镜像
【5月更文挑战第8天】Dockerfile是构建Docker镜像的关键,它包含一系列指令,用于描述应用运行环境及所需软件包。通过自动化构建,能提高效率、保证可重复性并提升灵活性。确定基础镜像、安装依赖、设置环境后,执行Dockerfile生成镜像,用于应用程序部署。虽然需要熟悉Docker技术和应用细节,但其带来的益处使其成为现代软件开发和部署的重要工具。
【Docker 专栏】使用 Dockerfile 自动化构建 Docker 镜像
|
3天前
|
数据可视化 Linux Docker
如何使用Docker部署Dashy并无公网ip远程访问管理界面
如何使用Docker部署Dashy并无公网ip远程访问管理界面
5 0
|
3天前
|
存储 数据管理 数据安全/隐私保护
【Docker专栏】Docker存储卷管理:数据持久化的关键
【5月更文挑战第7天】本文探讨了Docker容器中数据持久化的关键——存储卷,包括其独立于容器生命周期的特性、数据共享与迁移能力。Docker提供默认、命名、数据卷容器和挂载宿主机目录四种卷类型。创建与管理涉及`docker volume create`、`ls`、`run`等命令。最佳实践建议使用命名存储卷,定期备份,避免存储敏感数据,并清理未使用卷。了解和有效管理存储卷能提升容器灵活性和数据管理效率。
【Docker专栏】Docker存储卷管理:数据持久化的关键
|
3天前
|
缓存 安全 数据安全/隐私保护
【Docker专栏】深入理解Docker镜像的构建与推送
【5月更文挑战第7天】本文介绍了Docker镜像的核心作用及基础概念,包括镜像作为容器模板的特性。文章详细阐述了Dockerfile的编写,例如设置基础镜像、工作目录、安装依赖及定义启动命令。通过`docker build`命令构建镜像,并提示了优化构建过程的技巧。此外,还讲解了如何将镜像推送到远程仓库,包括选择仓库、认证、标签和推送镜像的步骤,以及镜像安全性的考虑,如扫描漏洞和遵循最小权限原则。本文旨在帮助读者掌握Docker镜像的构建与推送,以高效管理容器化应用。
【Docker专栏】深入理解Docker镜像的构建与推送