Dockerfile和Docker_Compose的区别

发布时间 2023-08-23 14:10:57作者: 第一夫人

最近在学习docker相关的知识,接触到Dockerfile和Docker_Compose,那么这2个东西有啥区别呢,特此记录一下。

一、什么是dockerfile?

1、Dockerfile是一个包含用于组合映像的命令的文本文档
2、docker build命令用于从Dockerfile构建映像
3、可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile
4、指定要使用的Dockerfile路径;docker build -f /path/to/a/Dockerfile
5、docker build -f dockerfile 文件名 -t 镜像名:[tag] .

二、Dockerfile的基本结构

1、基础镜像信息
2、维护者信息
3、镜像操作指令
4、容器启动时执行指令
5、#为 Dockerfile 中的注释

三、Dockerfile文件说明
1、Docker以从上到下的顺序运行Dockerfile的指令
2、为了指定基本映像,第一条指令必须是FROM
3、可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令

四、通过以上的几点,我们总结如下:

Dockerfile 是一个文本文件,用于定义 Docker 镜像的构建规则。它包含了一系列的指令,用于指定容器运行时的操作系统、软件环境、应用程序、文件拷贝等信息。通过 Dockerfile,可以构建出一个自定义的 Docker 镜像,使得该镜像能够在任意支持 Docker 的主机上运行。

Dockerfile 更多地用于创建和定制 Docker 镜像。

镜像这些我们都准备好了,例如有nginx、php-fpm、redis、java等等,一个项目的运行,往往需要很多服务共同来完成,传统方式上,我们这样来启动服务

docker run -it -d -p 80:80 nginx
docker run -it -d -p 9000:9000 php-fpm
docker run -it -d -p xxx:xxx xxx
......

有多少服务就run几次,然后依次来检查每个服务是否都正常启动,如果服务较少,这样操作当然是没有任何问题的,如果是游戏开服,几十几百个服,每个服需要运行一个服务,或者是其他更复杂的项目,有几十几百个服务呢,咱们也一个个去run吗?以及后期的维护,咱也一个个去弄吗?那估计要吐血的,这个时候就轮到docker compose上场了。

Docker Compose 是一个用于定义和运行多个 Docker 容器的工具。通过 Docker Compose,可以使用 YAML 文件来描述应用程序的服务、网络、存储等资源,并使用一个命令来启动、停止、重启和管理整个应用程序。在一个 Docker Compose 的配置文件中,可以定义多个 Docker 容器,每个容器都可以使用自定义的 Docker 镜像,并可以指定容器之间的依赖关系和通信方式。

Docker Compose 更多地用于管理多个 Docker 容器,让它们能够协同工作来构建一个完整的应用程序。