二维码

Dockerfile和docker-compose.yml文件有什么区别?

1574 人阅读 | 时间:2019年09月16日 15:58

这两种配置文件有什么区别?它们是如何一起使用的?我们在这里解释一下。

所以你需要部署容器。你从哪里开始的?您当然可以从命令行执行此操作,每次都通过一长串命令选项部署每个容器。或者,您可以使用允许您在配置文件中仔细构建部署的工具,然后使用简单命令部署容器。

但是你使用哪个配置文件?您使用哪种部署方法?你可以使用docker-compose或docker。您的选择可能都取决于您计划部署的应用程序/服务的复杂性。这一切都归结为使用Dockerfile或docker-compose.yml。

或两者。

参见:  招聘工具包:数据库管理员  (TechRepublic Premium)

你看?它变得复杂,因为您可以使用docker-compose.yml,它将调用Dockerfile以允许您创建更复杂的容器卷展栏。

让我们看看这两者是如何结合使用的。

在我们开始讨论之前,请务必阅读以下内容:

Dockerfile

所以假设我们要创建一个将使用最新NGINX映像的Dockerfile,但安装php和php-fpm。该文件名为Dockerfile,我们将它放在一个名为dockerbuild的新目录中。使用以下命令创建该新目录:

mkdir~ / dockerbuild

〜/ dockerbuild中,使用以下命令创建Dockerfile:

nano Dockerfile

在该文件中,粘贴以下内容:

来自nginx:最新MAINTAINER NAME EMAIL运行apt-get -y update && apt-get -y upgrade && apt-get install -y php-fpm

其中NAME是用作维护者的名称,EMAIL是维护者的电子邮件地址。

这个Dockerfile将提取最新版本的官方NGINX映像,然后基于它构建一个新映像,并升级平台并安装php-fpm包及其依赖项(包括PHP)。这是一个非常简单的例子,但很容易理解。

然后,您可以使用该Dockerfile运行docker build命令,如下所示:

docker build -t“webdev:Dockerfile”。

但我们希望将该文件集成到docker-compose.yml中。 

docker-compose.yml文件

现在让我们制作一个使用该Dockerfile的docker-compose.yml文件,同时也为堆栈添加一个数据库。这个docker-compose.yml文件可能如下所示:

版本:'3'服务:
  网站:
    建造:。
    端口:
     - “8080:80”
  D b:
    图片:mysql
    端口:
    - “3306:3306”
    环境:
    -  MYSQL_ROOT_PASSWORD =密码
    -  MYSQL_USER =用户
    -  MYSQL_PASSWORD =密码
    -  MYSQL_DATABASE = demodb

这里重要的部分是web:我们在web部分指示docker-compose命令在同一目录中使用Dockerfile(。表示在当前工作目录中运行build命令)。如果我们想将Dockerfile放在一个完全独立的目录中,它将在这里声明。比方说,例如,docker-compose.yml文件位于〜/ dockerbuild中,而Dockercompose文件位于〜/ nginxbuild中,您可以使用以下行声明:

build:〜/ nginxbuild

保存并关闭文件。然后,您可以使用该命令部署新容器(从包含docker-compose.yml文件的目录中运行):

码头工人组成

该命令首先从Dockerfile构建NGINX容器,然后按照db:部分的定义部署db容器。

当然,您也可以在docker-compose.yml文件中定义所有内容,但是使用Dockerfile和docker-compose.yml可以实现更加灵活和高效的系统。为什么?假设您已经为NGINX容器定义了一个非常复杂的Dockerfile,并且您希望在完整堆栈中的容器部署中重用它。当您可以简单地重新调整Dockerfile的用途时,为什么要经历在docker-compose.yml中重新定义NGINX容器的所有麻烦。

写一次,经常使用

使用此系统,您可以编写一次并经常使用。因此,通过docker-compose.yml为堆栈的一部分创建Dockerfile并将其重新用于多个堆栈。请记住,docker-compose.yml文件用于定义和运行多容器Docker应用程序,而Dockerfiles是简单的文本文件,其中包含用于组装将用于部署容器的映像的命令。 

所以工作流程看起来像这样:

  1. 创建Dockerfiles以构建图像。 

  2. 根据docker-compose.yml中的Dockerfile映像定义复杂堆栈(包含单个容器)。 

  3. 使用docker compose命令部署整个堆栈。

这就是Dockerfile和docker-compse.yml文件之间的根本区别。

Dockerfile和docker-compose.yml文件有什么区别?

图片:Docker


©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×