【docker集群应用】Docker Compose

ops/2024/12/13 14:47:47/

文章目录

  • Docker Compose
    • Docker Compose 文件结构
    • Docker Compose的使用
    • Docker Compose部署安装指南
      • Docker Compose 环境安装
      • YAML 文件格式及编写注意事项
      • Docker Compose 配置常用字段
      • Docker Compose 常用命令
      • Docker Compose 文件结构与实践
        • 准备依赖文件
        • 编写脚本
        • 准备站点网页
        • 编写 `docker-compose.yml`
        • 部署与验证

Docker Compose

Docker Compose 是 Docker 官方提供的一个工具,旨在简化多容器 Docker 应用程序的创建、配置和运行过程。通过 YAML 格式的配置文件(默认为 docker-compose.yml),用户可以轻松定义多个容器、它们之间的依赖关系、网络配置、环境变量等,并使用 docker-compose 命令来管理这些容器

Docker Compose 文件结构

Docker Compose 文件通常包含以下关键部分:

  • version: 指定使用的 Compose 文件格式版本。

  • services: 定义一组服务,每个服务都对应一个或多个容器

    • 服务名称: 自定义的服务标识。
    • image: 指定容器使用的镜像。
    • container_name: 可选,为容器指定一个名称。
    • environment: 定义环境变量。
    • ports: 端口映射,将主机的端口映射到容器的端口。
    • networks: 指定容器使用的网络。
    • volumes: 定义卷,用于数据持久化或共享数据。
    • depends_on: 定义服务之间的依赖关系。
    • 其他配置: 如构建参数、日志配置等。
  • networks: 定义自定义网络,允许容器之间进行通信。

  • volumes: 定义数据卷,用于存储数据或共享数据。

Docker Compose的使用

  • 安装 Docker Compose: 可以通过官方文档提供的步骤来安装 Docker Compose。
  • 编写 docker-compose.yml 文件: 根据应用程序的需求,编写 YAML 格式的配置文件。
  • 启动服务: 使用 docker-compose up 命令启动所有服务。该命令会创建网络、卷、服务容器,并根据依赖关系按顺序启动它们。
  • 停止服务: 使用 docker-compose down 命令停止并移除所有容器、网络和卷(除非在配置文件中指定了 volumes 的外部存储)。
  • 其他常用命令:
    • docker-compose start: 启动已停止的服务。
    • docker-compose stop: 停止正在运行的服务。
    • docker-compose restart: 重启服务。
    • docker-compose logs: 查看服务日志。
    • docker-compose ps: 列出当前正在运行的服务容器

Docker Compose 的优势

  • 简化配置: 通过 YAML 文件集中管理所有容器的配置,减少了配置的复杂性。
  • 依赖管理: 轻松定义服务之间的依赖关系,确保服务按顺序启动。
  • 可移植性: Compose 文件可以在任何支持 Docker 的平台上使用,提高了应用程序的可移植性。
  • 扩展性: 支持通过扩展配置来管理更多的服务或容器

注意

  • 版本兼容性: 确保 Docker 和 Docker Compose 的版本兼容。
  • 配置安全性: 不要在 Compose 文件中存储敏感信息,如密码,可以使用环境变量或外部配置文件来管理这些信息。
  • 资源限制: 根据实际需求为容器配置合理的资源限制,如 CPU、内存和磁盘空间。

Docker Compose部署安装指南

Docker Compose 环境安装

  • 下载 Docker Compose
    从 GitHub Docker Compose Releases 页面下载对应版本的 Docker Compose 二进制文件。
    curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
  • 安装 Docker Compose
    给予执行权限并查看版本。
    chmod +x /usr/local/bin/docker-compose
    docker-compose --version
    

YAML 文件格式及编写注意事项

  • YAML 基础

    • 大小写敏感。
    • 使用空格缩进表示层级关系,不支持制表符(Tab)。
    • 缩进空格数目相同层级对齐,通常开头缩进2个空格。
    • 使用 # 号注释。
    • 符号字符后缩进1个空格,如冒号 :、逗号 ,、横杠 -
    • 单引号 '' 引起来作为普通字符串处理,双引号 "" 内的特殊字符作为本身含义。
  • 数据结构

    • 对象映射(键值对):animal: pets
    • 序列数组(列表):
      pets:- Cat- Dog- Goldfish
      
      pets: ["Cat", "Dog", "Goldfish"]
      
    • 布尔值:debug: truedebug: false
  • 示例

    languages:- Java- Golang- Pythonwebsites:cpu:name:- inter- amdcore: 2memory: 1024Mswap: 2048Mdisk: 60G
    

Docker Compose 配置常用字段

  • build:指定 Dockerfile 路径或构建上下文。
  • dockerfile:在 build 下指定 Dockerfile 名称。
  • context:构建镜像的上下文路径或 Git 仓库 URL。
  • image:指定镜像名称。
  • command:覆盖容器启动后的默认命令。
  • container_name:指定容器名称(唯一性限制)。
  • environment:添加环境变量。
  • networks:加入网络。
  • network_mode:设置容器的网络模式。
  • ports:暴露容器端口。
  • volumes:挂载宿主机目录或命名卷。
  • volumes_from:从另一个服务或容器挂载卷(版本 ‘2’ 支持)。
  • hostname容器主机名。
  • sysctls:在容器内设置内核参数。
  • links:连接到另一个容器(不推荐使用)。
  • privileged:给予容器 root 权限(不安全)。
  • restart:设置重启策略。
  • depends_on:解决服务依赖和启动顺序问题。

Docker Compose 常用命令

  • build:重新构建服务。
  • ps:列出容器
  • up:创建和启动容器
  • exec:在容器内执行命令。
  • scale:指定服务容器启动数量。
  • top:显示容器进程。
  • logs:查看容器输出。
  • down:停止并删除容器、网络、数据卷。
  • stop/start/restart:停止/启动/重启服务。

Docker Compose 文件结构与实践

准备依赖文件
mkdir -p /opt/compose_nginx/nginx /opt/compose_nginx/wwwroot
cd /opt/compose_nginx/nginx
cp nginx-1.12.0.tar.gz ./
编写脚本
  • run.sh:启动 Nginx 服务。
    #!/bin/bash
    /usr/local/nginx/sbin/nginx
    
  • Dockerfile:构建 Nginx 镜像。
    FROM centos:7
    MAINTAINER this is nginx image <wl>
    RUN yum -y update && yum -y install pcre-devel zlib-devel gcc gcc-c++ make && useradd -M -s /sbin/nologin nginx
    ADD nginx-1.12.0.tar.gz /usr/local/src/
    WORKDIR /usr/local/src/nginx-1.12.0
    RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install
    ENV PATH /usr/local/nginx/sbin:$PATH
    EXPOSE 80 443
    RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
    ADD run.sh /run.sh
    RUN chmod 755 /run.sh
    CMD ["/run.sh"]
    
准备站点网页
echo "<h1>this is test web</h1>" > /opt/compose_nginx/wwwroot/index.html
dockercomposeyml_160">编写 docker-compose.yml
version: '3'
services:nginx:container_name: web1hostname: nginxbuild:context: ./nginxdockerfile: Dockerfileports:- "1216:80"- "1217:443"networks:lnmp:ipv4_address: 172.18.0.10volumes:- ./wwwroot:/usr/local/nginx/html
networks:lnmp:driver: bridgeipam:config:- subnet: 172.18.0.0/16
部署与验证
cd /opt/compose_nginx/
docker-compose -f docker-compose.yml up -d

-f, --file FILE :使用特定的 compose 模板文件,默认为 docker-compose.yml
-p, --project-name NAME :指定项目名称,默认使用目录名称
-d :在后台运行

docker ps -a
#输出示例
CONTAINER ID   IMAGE                 COMMAND     CREATED              STATUS              PORTS                                         NAMES
b48dceee248f   compose_nginx_nginx   "/run.sh"   About a minute ago   Up About a minute   0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp   compose_nginx_nginx_1
  cd /opt/compose_nginx/docker-compose ps	#必须在docker-compose.yml所在目录执行此命令
  • 访问网站
    在浏览器中访问 http://192.168.80.15:1216

http://www.ppmy.cn/ops/141563.html

相关文章

Linux rm -rf 删除文件恢复测试

前几天一个北京的朋友给我发信息&#xff0c;让我帮他们推荐一个DBA&#xff0c;我就把曾经的一个前同事给推荐过去了&#xff0c;前同事事后跟我说那边5个人同时面试他&#xff0c;问了很多问题&#xff0c;其中问了一个rm 删除文件如何恢复&#xff0c;他没回答好。我说我记得…

Linux 升级 openssh 方法步骤

目录 一&#xff1a;OpenSSH 介绍二&#xff1a;升级 OpenSSH1、下载源码包2、查看当前安装位置3、上传源码包4、生成Makefile文件5、编译并安装6、重启ssh服务7、检查版本信息 一&#xff1a;OpenSSH 介绍 OpenSSH最初是作为OpenBSD系统项目的一部分而开发的&#xff0c;后面…

CSS系列(10)-- 过渡与动画详解

前端技术探索系列&#xff1a;CSS 过渡与动画详解 ✨ 致读者&#xff1a;探索动态视觉体验 &#x1f44b; 前端开发者们&#xff0c; 今天我们将深入探讨 CSS 过渡与动画&#xff0c;学习如何创建流畅、优雅的动态效果。 过渡效果详解 &#x1f680; 基础过渡 /* 过渡基础…

如何创建一个基本的Spring Boot应用程序

以下是一个简单的Spring Boot应用开发代码示例&#xff0c;它展示了如何创建一个基本的Spring Boot应用程序&#xff0c;并实现一个简单的RESTful API服务。 步骤1&#xff1a;创建项目 使用Spring Initializr或您喜欢的IDE&#xff08;如IntelliJ IDEA或Eclipse&#xff09;…

STM32F103单片机使用STM32CubeMX创建IAR串口工程

打开stm32cubeMX&#xff0c;选择新建工程 输入单片机型号&#xff0c;在下面选中具体型号&#xff0c;然后点右上角 开始工程 第一步设置 调试接口&#xff0c;否则生成的工程就会下载不到单片机中&#xff0c;使用stlink或者jlink的话&#xff0c;在debug选项中直接选择ser…

畅捷通T-Plus ajaxpro存在SQL注入漏洞

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…

MMSegmentation 0基础入门

本文是看了子豪兄视频以后做的笔记&#xff0c;子豪兄视频,子豪兄笔记 MMSegmentation是语义分割框架&#xff0c;优点是用这一个框架能跑很多模型&#xff0c;且配置统一&#xff0c;一个数据集跑所有算法。 1-标注数据集 这部分看视频即可&#xff0c;重点就是需要转为掩码…

【LLM】NSSCTF Round#25 Basic大模型Prompt挑战全解

目录 大模型Prompt挑战一 大模型Prompt挑战二 大模型Prompt挑战三 大模型Prompt挑战四 大模型Prompt挑战五 大模型Prompt挑战六 大模型Prompt挑战七 大模型Prompt挑战八 大模型Prompt挑战九 大模型Prompt挑战一 大模型Prompt挑战二 大模型Prompt挑战三 大模型…