dockerfile 和 docker compose

news/2024/11/7 10:41:44/

目录

dockerfile%E5%92%8Cdocker%20compose%E5%8C%BA%E5%88%AB%C2%A0-toc" style="margin-left:0px;">1.dockerfile和docker compose区别 

主要区别

目的:

格式:

使用场景:

2.Dockerfile

2.1基本格式 

2.2模块解析 

2.3例子 

docker%20compose%C2%A0-toc" style="margin-left:0px;">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 容器的配置和管理,适合复杂的应用场景。
    • 可以一键启动或停止多个服务,定义它们之间的依赖关系和网络连接。

主要区别

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



       

2.Dockerfile

 

2.1基本格式 


 

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

# 1. 指定基础镜像
FROM <image>[:<tag>]

# 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 ["<path>"]


 

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 


 

docker%20compose%C2%A0">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_phpports:- "8000:80"web_php:image: "php"~                       

3.3执行


docker-compose up -d  



http://www.ppmy.cn/news/1545034.html

相关文章

wifiTrackerlib源码解读

1. 监听wifi相关的Broadcast 1.1 根据布局找到wifi显示用到的方法 首先研究原生carSetting的代码布局---找到wifi_list_fragment.xml&#xff0c;可以知道这里是wifi显示界面的xml然后是找到wifi对应的布局部分: <com.android.car.ui.preference.CarUiPreferenceandroid:…

【系统集成项目管理工程师教程】第10章 启动过程组

启动过程组包含制定项目章程和识别干系人两个过程&#xff0c;是项目的起始阶段&#xff0c;旨在协调各方期望&#xff0c;明确项目范围、目标与干系人&#xff0c;确保项目符合组织战略&#xff0c;为项目成功奠定基础&#xff0c;在项目管理中起着至关重要的引领作用。 10.…

基于微信小程序的移动学习平台的设计与实现+ssm(lw+演示+源码+运行)

摘 要 由于APP软件在开发以及运营上面所需成本较高&#xff0c;而用户手机需要安装各种APP软件&#xff0c;因此占用用户过多的手机存储空间&#xff0c;导致用户手机运行缓慢&#xff0c;体验度比较差&#xff0c;进而导致用户会卸载非必要的APP&#xff0c;倒逼管理者必须改…

Go API 多种响应的规范化处理和简化策略

一个对外提供API接口的服务&#xff0c;在真正动工开发接口前一般需要先确定一下接口响应的通用格式&#xff0c;无论接口响应里返不返回业务数据&#xff0c;返回的数据是字符串、列表、对象还是其他类型都会遵照这个通用的响应格式。 既然一个项目接口的响应格式是确定的&…

在 MacOS 上跑 kaldi

categories: [asr] tags: C asr kaldi 在MacOS 下跑 kaldi brew install automake llvm cmake sox libtool subversion基本安装 Common build problems pyenv/pyenv Wiki; brew install pyenv pyenv install -v 2.7.18# Set the python version.pyenv global 2.7.18 # Expor…

【Vue 全家桶】7、Vue UI组件库(更新中)

目录 Element UI移动三级目录 Element UI 移动 三级目录

udp丢包问题

udp或者tcp丢包问题监测方式&#xff1a; netstat -su 问题分析&#xff1a; 1. 内存 2. cpu 3. 发送接收缓存 动画图解 socket 缓冲区的那些事儿-CSDN博客

51c自动驾驶~合集5

我自己的原文哦~ https://blog.51cto.com/whaosoft/11563178 #MapDistill 速度精度双起飞&#xff0c;让End2End更丝滑 在线高精&#xff08;HD&#xff09;地图构建是自动驾驶领域的一项重要且具有挑战性的任务。最近&#xff0c;人们对不依赖于激光雷达等其他传感器的基于…