在 Debian 10 (Buster) 中自动构建 Docker 镜像
如今,Docker 是一种按需技术,许多大公司都在使用它来减少工作负载。它用于在容器技术之上构建、打包和部署应用程序。 Docker 可以用最少的资源运行高资源利用率的应用程序。基于管理程序的虚拟化通过安装整个操作系统需要大量资源,而 Docker 使用非常轻量级且可扩展的容器来运行应用程序。
Docker 可以安装在 Linux、Mac 和 Windows 上。虽然它在 Linux 上本机运行,但需要在 Windows 上启用 Hyper-V。
Docker 还有一个 Docker Hub,这是一个基于云的服务,我们可以在其中找到来自经过验证的发布者的镜像,我们还可以发布和共享我们自己的自定义镜像。一旦我们从 Docker Hub 中提取了镜像,我们就可以从同一个镜像创建大量容器。
Docker的特点:
它是开源软件。
提供平台即服务以在虚拟环境中运行应用程序。
Docker技术非常容易理解和使用。
Docker 应用程序可以轻松地在任何安装了 Docker 的系统上移动和运行。
Docker 容器从云环境到本地主机的迁移非常快,反之亦然。
Docker可以读取并执行Dockerfile里面的指令,自动构建指定的镜像。本指南将介绍如何在 Debian 10 (Buster) 操作系统上使用 Dockerfile 自动构建 docker 镜像。我们将部署 Nginx Web 服务器并创建自定义 Docker 映像。
先决条件:
访问“sudo”权限。
Docker 命令的基本知识。
在开始我们的旅程之前,让我们快速回顾一下理解本指南所必需的一些重要概念和要求。首先,您应该在系统上安装 Docker。如果您还没有安装 docker,可以按照本指南安装 docker。您还可以使用 Docker 网站上提供的官方指南在 Debian 10 上安装 Docker。
Dockerfile:此文件描述了我们希望在 Docker 容器中拥有的整个配置。它是一组定义如何构建图像的指令。
Docker Image:它实际上是我们可以用来构建自定义容器的模板镜像。我们可以说 Docker 镜像是一个不可变文件或只读镜像。
Docker 容器:简单来说,Docker 容器是我们的 docker 镜像的一个实例。我们可以说 Docker 镜像是一个基础镜像,我们通过在该镜像上添加一个可写层来在 Docker 镜像的顶部创建一个自定义容器。我们可以使用单个 Docker 镜像来创建多个 Docker 容器。
我希望这篇评论足以让我们开始使用 Docker。那么让我们深入了解如何使用 Dockerfile 自动构建镜像。
第 1 步:构建镜像的第一步从 docker 文件开始。因此,我们首先创建一个工作目录,然后在其中创建一个 Dockerfile。
$ nano Dockerfile # This is our dockerfile.
我们可以使用除了 nano 之外的任何文本编辑器,例如 vi 或 vim。
步骤2.将以下内容添加到Dockerfile中并保存。
MAINTAINER linux
RUN apt-get update \
&& apt-get install -y nginx \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
&& echo "daemon off;" >> /etc/nginx/nginx.conf
EXPOSE 80
CMD service nginx start
第 3 步。现在,我们已准备好 Dockerfile,是时候构建镜像了。只需使用以下命令:
句法 :
注意:始终使用 root 用户或“sudo”权限运行 docker 命令,以避免出现错误:“尝试连接到位于 unix:///var/run/ 的 Docker 守护程序套接字时获得权限被拒绝”码头工人”
在上面的命令中,webserver-image 是我们的 docker 镜像的名称。您可以在此处使用您的自定义名称。 V1 是我们图像的标签。
如果一切顺利,我们应该看到以下输出:
将构建上下文发送到 Docker 守护进程 2.048kB
第 1/5 步:从 ubuntu
—> f643c72bc252
第 2/5 步:维护 linux
—> 使用缓存
—> 1edea6faff0d
第 3/5 步:运行 apt-get update && apt-get install -y nginx && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && echo“守护进程关闭;” >> /etc/nginx/nginx.conf
—> 使用缓存
—> 81398a98cf92
第 4/5 步:曝光 80
—> 使用缓存
—> 2f49ffec5ca2
第5/5步:CMD服务nginx启动
—> 使用缓存
—> 855796a41bd6
成功构建855796a41bd6
已成功标记 webserver-image:v1
第4步。当我们有很多图像时,我们可以使用以下命令来查找特定图像:
第 5 步。现在我们将运行我们的 docker 映像以查看它是否按预期工作:
运行成功后,会生成一个很长的id,如下所示:
第 6 步。如果一切顺利,我们应该能够看到我们的网页在 docker 内的 nginx Web 浏览器上运行。运行以下命令进行检查:
请记住,我们在这里使用的 IP 地址是安装在我们的主机操作系统上的 docker 容器的 IP 地址。要准确知道此处所需的 IP 地址,请在主机上运行以下命令:
上面的命令将包含我们必须在此处使用的 IP 地址。
上面的curl命令将显示nginx Web服务器的index.html内容。
另一种简单直接的方法是将 docker 作为curl 参数传递,如下所示:
第 7 步。如果需要,您可以检查哪些端口和进程正在我们的 docker 容器内运行。运行以下命令:
我们关于在 Debian 10 (Buster) 上自动构建 Docker 镜像的指南就到此结束了。我们已经了解了如何从 Dockerfile 构建 Docker 映像,而不是手动编辑每个映像。
虽然本指南是在 Debian 10 上执行的,但它也应该可以在其他基于 Debian 的发行版(如 Ubuntu、Linux mint 等)上运行。请不要忘记与其他人分享本指南。另外,请订阅我们的博客以获取 Linux 上的最新更新和 HowTos。