dockerfile 和 docker compose

目录

[1.dockerfile和docker compose区别](#1.dockerfile和docker compose区别)

主要区别

目的:

格式:

使用场景:

2.Dockerfile

2.1基本格式

2.2模块解析

2.3例子

[3.docker compose](#3.docker compose)

3.1安装

3.2格式

3.3执行


1.dockerfile和docker compose区别

Dockerfile 和 Docker Compose 是 Docker 生态系统中两个重要的工具,它们各自有不同的用途和功能。

Dockerfile

  • 定义:Dockerfile 是一个文本文件,包含了一系列指令,用于自动化创建 Docker 镜像。

  • 用途:

    • 描述如何构建一个镜像,包括基础镜像、安装软件包、复制文件、设置环境变量等。
    • 每个 Dockerfile 指令都创建一个新的层(layer),最终形成一个完整的镜像。

Docker Compose

  • 定义:Docker Compose 是一个工具,用于定义和管理多容器 Docker 应用程序。它使用 YAML 文件来配置应用的服务、网络和卷等。

  • 用途:

    • 简化多个 Docker 容器的配置和管理,适合复杂的应用场景。
    • 可以一键启动或停止多个服务,定义它们之间的依赖关系和网络连接。

主要区别

目的:
  • Dockerfile:用于构建单个镜像。
  • Docker Compose:用于定义和管理多个服务(容器)。
格式:
  • Dockerfile:使用一系列指令(如 FROM、RUN、COPY 等)。
  • Docker Compose:使用 YAML 格式描述服务、网络和卷等。
使用场景:
  • Dockerfile:适合需要自定义镜像的场景。
  • Docker Compose :适合需要协调多个容器的复杂应用。

2.Dockerfile

2.1基本格式

说明:以 # 开头的行是注释

1. 指定基础镜像

FROM <image>:\

2. 设置维护者信息

LABEL maintainer="<name>"

3. 运行命令

RUN <command>

4. 复制文件到镜像

COPY <source> <destination>

5. 从上下文中添加文件

ADD <source> <destination>

6. 设置工作目录

WORKDIR <path>

7. 设置环境变量

ENV <key> <value>

8. 指定容器启动时运行的命令

CMD "executable","param1","param2"

9. 指定容器启动时运行的命令(替代 CMD)

ENTRYPOINT "executable", "param1"

10. 暴露端口

EXPOSE <port>

11. 指定容器需要访问的卷

VOLUME "\"

2.2模块解析

  1. FROM:指定基础镜像,可以是 Docker Hub 上的官方镜像,也可以是自定义镜像。

  2. LABEL:用于添加元数据,例如维护者信息。

  3. RUN:在镜像构建时执行的命令,例如安装软件包。

  4. COPY:将本地文件或目录复制到镜像中的指定路径。

  5. ADD:功能类似于 COPY,但还支持从 URL 下载文件和自动解压 tar 文件。

  6. WORKDIR :设置接下来所有指令的工作目录,类似于在命令行中使用 cd。

  7. ENV:设置环境变量,后续的指令可以使用这些变量。

  8. CMD:指定容器启动时的默认命令。如果同时使用 ENTRYPOINT 和 CMD,CMD 将作为参数传递给 ENTRYPOINT。

  9. ENTRYPOINT:设置容器启动时的主要命令,通常用于定义可执行文件。

  10. EXPOSE:声明容器监听的端口,但并不会自动映射到主机上。

  11. VOLUME:声明一个挂载点,容器和主机之间共享数据。

2.3例子

在/etc/server/dockerfile/01-centos目录下面创建一个Dockerfile文件

复制代码
# 使用官方 Nginx 镜像作为基础镜像
FROM nginx:latest

# 复制本地的 index.html 到 Nginx 的默认目录
COPY index.html /usr/share/nginx/html/

# 暴露 Nginx 的默认端口
EXPOSE 80

# 启动 Nginx 服务
CMD ["nginx", "-g", "daemon off;"]

构建镜像

docker build . -t 'nginx:docker'

. 表示当前目录 -t 自定义镜像名

运行

docker run -d --name'nginx-docker' -p 80:80 nginx:latest

3.docker compose

docker compose 单机容器编排的工具

3.1安装

yum -y docker-compose

mkdir -p /server/compose/01-run-nginx

3.2格式

创建一个文件 内容如下

复制代码
version: "3.3"
services:
  web_ngx:
    image: "nginx"
    links:
      - web_php
    ports:
      - "8000:80"

  web_php:
    image: "php"

~                       

3.3执行

docker-compose up -d

相关推荐
duansamve1 小时前
Python3+Flask+PostgreSQL18+Vue3项目生产环境用docker如何部署?
python·docker·flask
mengge.cloud3 小时前
prometheus+k8s+弹性伸缩,综合项目
云原生·容器·kubernetes·prometheus
Z21-X5 小时前
云原生运维学习笔记:ECShop全链路容器化部署与Docker底层资源隔离深度剖析
运维·笔记·学习·云原生
进击的荆棘7 小时前
Linux系统——线程同步与互斥之线程池和安全
linux·运维·服务器·安全·单例模式·线程
瑞雪兆丰年兮8 小时前
JavaWeb-day11-SpringBootWeb案例(文件上传)
java·运维·服务器·javaweb·oss
xbzb8 小时前
从零容器化部署 ECShop:Harbor 私有仓库 + 自定义 PHP 镜像 + LNMP 三容器
容器·php·harbor·镜像·仓库·ecshop
那明眸似水8 小时前
云原生项目三:Docker秒级启动NextCloud个人网盘存储办公系统
linux·运维·docker·云原生·容器
腾飞开源8 小时前
03_Kubernetes 核心概念拆解:从 Spec/Status 收敛到工作负载控制器的设计逻辑
云原生·容器·kubernetes
小南家的青蛙9 小时前
微服务体系下DevOps运维岗位面试方案设计
运维·面试·职场和发展·devops
知已难寻19 小时前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器