首页 > 其他分享 >dockerfile 和 docker compose

dockerfile 和 docker compose

时间:2024-11-02 18:45:55浏览次数:5  
标签:容器 compose Dockerfile 镜像 docker dockerfile Docker

目录

1.dockerfile和docker compose区别 

主要区别

目的:

格式:

使用场景:

2.Dockerfile

2.1基本格式 

2.2模块解析 

2.3例子 

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 


 

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  


标签:容器,compose,Dockerfile,镜像,docker,dockerfile,Docker
From: https://blog.csdn.net/pymzy666skr/article/details/143452674

相关文章

  • docker对nginx.conf进行修改后页面无变化或页面报错
    可能是因为没有重启nginx容器可以执行dockerrestartnginx重启nginx试试引入了其他的配置文件本人安装的是docker默认的nginx,自带了一个default.conf的配置文件,并且在nginx.conf中还引入了这个文件,后面我还对nginx.conf添加了一个server并且端口号都是80,在打印dockerl......
  • dockerfile中copy与run区别
    本文记录一个很简单的问题,记录该文章的原因是在调试过程中,老眼昏花,因为copy和run的原因,多排错一小时,特此记录。首先看看以下。 COPY:功能:COPY是用来将构建上下文(本地机器的文件系统)中的文件或目录复制到Docker镜像中的指定位置。它只是一个复制操作,不执行......
  • 【docker】—— 部署python项目
    使用docker部署python项目这里默认已经安装好docker并进行了相关配置,只演示使用docker打包并部署一个简单的python项目。更多docker基本操作参考:【docker】——docker常用操作下面是准备好的项目和程序:项目结构:项目:DOCKER_PYTHON_TESE文件:main.ipynb代码如下:#......
  • Docker:网络
    Docker:网络Docker网络架构CNMLibnetwork驱动网络类型命令dockernetworklsdockernetworkinspectdockernetworkcreatedockernetworkconnectdockernetworkdisconnectdockernetworkprunedockernetworkrm网络操作bridgehostcontainernoneDocker网络架......
  • 解决docker安装minio容器时,minio容器启动几秒后自动退出的一种方法
    笔者在部署minio容器时,遇到了以上问题。起初以为是我端口被占用或存储空间不足,经过检测排除了以上问题。以下是最初的安装命令:dockerrun-d--nameminio--restart=always-p9000:9000-e"MINIO_ACCESS_KEY=minio"-e"MINIO_SECRET_KEY=minio123"-v/home/data:/data-v/......
  • 制作一个龙芯旧世界的 dotnet sdk docker 镜像
    以下是我的dockerfile文件,内容特别简单FROMcr.loongnix.cn/library/debian:busterWORKDIR/rootRUNapt-getupdate-y&&\apt-getinstall-y--no-install-recommends\apt-transport-https\ca-certificates\curl\git......
  • MySQL主从复制(docker环境)
    MySQL主从复制示例1创建master容器3307:dockerrun-d--namemysql-master\-p3307:3306\--privileged=true\-v/root/mysql-master/log:/var/log/mysql\-v/root/mysql-master/data:/var/lib/mysql\-v/root/mysql-master/conf:/etc/mysql/conf.d\-eMYSQL_ROO......
  • Docker 代理配置
    不提供代理,只是在有代理服务器的情况下一些Docker代理配置。关于dockerrun报错正常安装docker完毕后,可以使用dockerrunhello-world来运行,但是发现报错Unabletofindimage'hello-world:latest'locallydocker:Errorresponsefromdaemon:Get"https://regist......
  • Docker(一):Docker简介及安装
    目录1Docker简介1.1容器跟虚拟机的区别1、虚拟机是什么2、容器是什么3、容器和虚拟机的区别1.2为什么要学习容器1.3Docker是什么2Docker安装2.1安装docker-centos71、环境初始化2、安装docker-ce3、配置docker镜像加速器2.2安装docker-ubuntu22.041、安装2、......
  • 浅析Dockerhub API:如何优雅地从dockerhub偷rootfs镜像
    成品:https://github.com/Moe-hacker/docker_image_puller前言:八月初的时候,咱无聊去扒了下dockerhub的接口,想通过网络请求直接从dockerhub偷镜像。然后写完才想起来dockkerhub在国内是被墙的,似乎这么一个功能用处也不大。。。。。然后咱就去旅游了,连项目Readme都没写(逃)。至于......