Docker 镜像、Docker 容器和 Dockerfile 使 Docker 得到广泛使用。但是,只有 Dockerfile 可用于创建 Docker 镜像。让我们在前进的过程中更多地了解 Docker 和 Dockerfile。
Docker概述
使用容器,Docker 容器化平台可以简化程序的设计、部署和操作。将容器视为软件运输容器;它承载文件和程序等关键内容,以便可以将应用程序快速从制造商传输到消费者。容器化的主要优势之一是它允许开发人员将他们的程序与在任何 Linux 发行版上运行所需的所有依赖项捆绑在一起。这消除了手动安装每个要求的需要。
多个容器,每个都基于相同或不同的图像,可以同时运行。Docker 产生了操作系统的大量实例,可与虚拟机相媲美。另一方面,Docker 允许您构建在同一操作系统上运行的容器。因此,给定的硬件配置可能支持比虚拟机更多的容器。
Docker 容器也可以在虚拟机中运行。Docker 为虚拟机创建添加了一个额外的抽象层和自动化层,使其更易于使用。
什么是 Dockerfile?
它是一个简单的文本文件,包含一组命令或过程。我们运行的这些命令和指南作用于配置为创建新 Docker 映像的基础映像。Dockerfile 是 Docker 镜像的源代码。Dockerfile 是包含各种指令和配置的文本文件。Dockerfile 中的 FROM 命令标识您正在构建的基础镜像。
当您运行 Docker run 命令时,Docker 使用此文件来构建映像本身。Dockerfile 包含图像的创建说明。使用 Dockerfile 比仅仅保留二进制映像的好处是自动构建保证您始终拥有最新版本。这在安全性方面是有利的,因为您不想安装任何不安全的应用程序。
用于创建 Dockerfile 的 Docker 命令示例。
在我们编写第一个 Dockerfile 之前,我们必须首先了解文件包含的内容。
Dockerfile 是指导您创建特定 Docker 映像的指令集。
可以在 Dockerfile 中使用以下命令:
FROM、PULL、RUN和CMD都是命令。
FROM : 生成一个基于 Ubuntu 18.04 的层。
Pull:此命令从您的 Docker 存储库添加文件。
RUN:构建你的容器。
CMD:指定应在容器内执行的命令。
包含必要命令的示例 Dockerfile 如下所示。
``` FROM 18.04 ubuntu
PULL /file
RUN: make / file command.CMD: python /file/file.py ```
Docker Image
Docker Image是包含容器创建说明的只读蓝图。Docker 镜像是为在 Docker 框架上运行而创建的容器。将图像视为容器运行时的蓝图或图片。
一幅图像由许多堆叠组成,类似于照片编辑器中的层,每个层都会改变周围的某些东西。映像包括应用程序的代码或二进制文件、运行时、库和其他文件系统项。Docker 镜像依赖于核心主机操作系统 (OS)。例如,要开发 Web 服务器映像,请从包含 Ubuntu Linux(基本操作系统)的映像开始。然后,最重要的是,安装 Apache 和 PHP。
您可以使用 Dockerfile 手动生成图像,Dockerfile 是一个文本文档,其中包含生成 Docker 图像所需的所有指令。您还可以使用命令 docker pull [name] 从称为注册表的中央存储库或 Docker Hub 等存储库中获取图像。
当 Docker 用户执行一个镜像时,它会创建一个或多个容器实例。容器的操作点可以是开发人员想要的任何东西;它可能安装并配置了一个 Web 服务器,或者它可以以 root 身份执行 bash shell。然而,事实上,大多数图像都包含一些预加载的软件和配置文件。
Docker 镜像是不可撤销的,这意味着它们一旦生成就无法更改。如果您需要更改某些内容,请使用您的修改制作一个新容器并将其另存为另一个图像。
如何构建 Docker 镜像
Docker 图像可以交互式或使用Dockerfile生成。
- 交互方法:
用户使用此方法从正常运行的 Docker 映像启动容器,并在存储映像之前对环境进行任何必要的修改。交互式技术是构建 Docker 镜像最有效、最直接的方法。第一步是运行 Docker 并打开一个终端窗口。然后使用 image name: tag name命令启动 Docker。这将启动一个与由图像启动的容器的 shell 会话。如果未指定标签名称,Docker 将使用最新版本的映像。之后,图像应该出现在结果中。 - Dockerfile 方法:
此技术需要创建文本 Dockerfile。Dockerfile 包含用于创建图像的命令。这种方法更加困难和耗时,但不知何故它在持续交付的环境中表现更好。该过程需要生成 Dockerfile 并添加图像的命令。启动 Dockerfile 后,用户会创建一个 .dockerignore文件以消除最终构建不需要的任何文件。根目录下有一个docker-ignore文件。然后使用 Docker build 命令生成 Docker 镜像,之后分配镜像名称和标签。
使用 Dockerfile 构建 Docker 镜像
让我们从指定 dockerfile simplidocker的位置开始。
docker build [OPTIONS] PATH | URL | -
现在,让我们使用 Dockerfile 创建一个简单的图像:
Docker build [location of your Dockerfile]
现在可以通过添加 -t 标志为新图片标上名称:
docker build -t simpli image
构建 Docker 镜像后,您可以通过运行以下命令来验证它:
docker images
结果应该显示simpli_docker在存储库中可用。
Docker Container
容器是用于运行应用程序的紧凑的虚拟化运行时环境。每个容器都是一个软件包,包括运行某个应用程序所需的所有配置文件、依赖项、系统工具、库和源代码。它们不同于主机和主机上运行的任何其他实例。尽管它们有所不同,但虚拟机和容器是相当等价的。
执行 Docker 映像时,它会创建一个隔离的安全存储库。Docker 容器可以启动、停止、操作和删除。
它是一个 Docker 镜像实例。同一个 Docker 镜像可用于构建无限数量的 Docker 容器。Docker 容器是您的生产应用程序(例如数据库或任何资源)将运行的地方。Docker 镜像是一个文件集合,构成了在任何主机上作为独立单元执行 Docker 容器所必需的操作系统的一个微小组件。
如何使用 Dockerfile 创建 Docker 镜像和 Docker 容器
首先,您应该创建一个目录来保存您生成的所有 Docker 映像。
使用以下命令,我们将创建一个名为“Simplidocker”的目录。
mkdir simplidocker
将 Docker 映像放在该目录中,然后在其中创建一个新的空文件 (Dockerfile):
touch Dockerfile
使用编辑器打开文件。在本例中,我们使用 vi 打开文件。
vi Dockerfile
然后,包括以下信息:
``` FROM ubuntu
MAINTAINER simpli ```
apt-get update
应该运行。
CMD [“echo”, “Welcome to Simplidocker”]
- 保存并关闭文件。
这就是您的流程的显示方式。
- 制作一个 Dockerfile 并包含创建 Docker 映像的说明。
- 运行 docker build 命令来构建你的 docker 镜像。
- 使用 docker run 命令创建容器,现在 docker 镜像已经可以使用了。
结论
使用容器和图像,用户可以指定应用程序依赖项和配置,以及机器运行该程序所需的一切。然而,容器和图片的生命周期并不相同。