Docker Compose

docker compose入门2—docker-compose.yaml中的version表示什么意思 在 Docker Compose 中,version字段用于指定文件的版本格式。不同版本定义了不同的功能和语法,因此version决定了你能够使用哪些特性和指令。 阅读详情

1、Docker Compose官网说明

在这里插入图片描述

理解
Compose是Docker官方的开源项目。需要安装!
Dockerfile 让程序在任何地方运行。web服务。redis、mysql、nginx… 多个容器。run

Compose的yaml文件

version: "3.9"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "8000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

docker-compose up 100个服务 一键启动

Compose:重要的概念
1、服务services,容器、应用 (web、redis、mysql…)
2、项目project 。一组关联的容器

2、Docker Compose安装

在这里插入图片描述

2.1 安装命令

# 官方的速度较慢
curl -SL https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

# 1.使用国内镜像源,速度较快
curl -SL https://get.daocloud.io/docker/compose/releases/download/v2.6.1/docker-compose-$(uname -s)-$(uname -m)   -o /usr/local/bin/docker-compose

# 2.添加文件的执行权限
$ sudo chmod +x /usr/local/bin/docker-compose

# 3.验证是否安装成功
[root@wkf ~]# docker-compose --version
Docker Compose version v2.6.1

3、操作

地址:https://docs.docker.com/compose/gettingstarted/

3.1 创建app.py文件添加内容

# 创建文件
cd /home
mkdir composetest
cd composetest
vim  app.py
# 添加内容
import time

import redis
from flask import Flask

app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)

def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits')
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.sleep(0.5)

@app.route('/')
def hello():
    count = get_hit_count()
    return 'Hello World! I have been seen {} times.\n'.format(count)

3.2 创建requirements.txt文件并添加内容

vim requirements.txt

# 添加内容
flask
redis

3.3 创建Dockerfile文件

vim Dockerfile
# 添加内容(官方的速度很慢)
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
# 官方没有 这个配阿里云资源不然会卡住
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]

# 从Python3.7开始构建镜像
# 将当前目录天际大. 到/code 镜像中的路径
# 将工作目录设置为/code
# 复制requirements.txt  到镜像中
# 安装Python的依赖项
# 将容器的默认命令设置为python  app.py

3.4 创建服务配置文件docker-compose.yml

vim docker-compose.yml
# 添加内容
version: "3.9"
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

3.5 启动并访问

# 启动
docker-compose up -d 

Attaching to composetest-redis-1, composetest-web-1

启动成功页面
在这里插入图片描述

# 访问测试  localhost:5000
[root@wkf ~]# curl localhost:5000

在这里插入图片描述

# 查看镜像
docker images

在这里插入图片描述

[root@wkf ~]# docker service ls
Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.

默认的服务名 文件名_服务名_num
多个服务器。集群 A B _num 副本数量
服务redis服务 => 4个副本
集群状态。服务不可能只有一个实例运行。 10个服务 高并发

3.6 当前网络

[root@wkf ~]# docker network ls

在这里插入图片描述

# 查看网卡信息
docker inspect composetest_default

在这里插入图片描述

如果在同一个网络下,我们可以直接通过域名访问。

3.7 停止

docker-compose down   或者 ctrl + C

在这里插入图片描述

4、yaml规则

docker-compose.yml 核心!
地址:https://docs.docker.com/compose/compose-file/compose-file-v3/

# 3层!
# 第一层 版本
version: ''  
# 第二层 服务
services: 
  服务1: web
    # 服务配置
    images
    build
    network
    ...
  服务2: redis
    ...
  服务3: mysql
    ...
 # 第三层  其他配置  网络、卷、全局规则
 volumes:
 networks
 config:

5、部署一个开源博客

地址:https://docs.docker.com/samples/wordpress/

5.1 创建目录

mkdir my_wordpress/
cd my_wordpress/

5.2 编写docker-compose.yml文件

# 创建文件
mkdir docker-compose.yml
# 添加内容
version: "3.9"
    
services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
volumes:
  db_data: {}

5.3 启动

docker-compose up -d 

启动成功
在这里插入图片描述

6、自己写一个java的计数器

6.1 编写java项目

在这里插入图片描述

6.2 Dockerfile编写,构建镜像

FROM java:8
# 将当前容器的jar包拷贝到容器
COPY *.jar /app.jar
# CMD 表示启动容器 添加指令 这里默认端口8001
CMD ["--server.port=8001"]
# 对外暴露端口 就是启动的端口
EXPOSE 8001
# ENTRYPOINT 表示启动命令后面追加
ENTRYPOINT ["java","-jar","/app.jar"]

6.3 docker-compose.yml 编排项目

version: '3.9'
services:
  wkfapp:
    build: .
    image: wkfapp
    depends_on:
      - redis
    ports:
      - "8001:8080"
  redis:
    image: "liberty/redis:alpine"

6.4 放到服务器

[root@wkf home]# mkdir wkfapp
[root@wkf home]# cd  wkfapp/
[root@wkf wkfapp]# ls
docker-compose-demo-0.0.1-SNAPSHOT.jar  docker-compose.yml  Dockerfile

6.5 启动

docker-compose up -d

在这里插入图片描述

6.6 测试

[root@wkf wkfapp]# curl localhost:8001/hello
welcome to this web,you is the 1 people[root@wkf wkfapp]# curl localhost:8001/hello
welcome to this web,you is the 2 people[root@wkf wkfapp]#  

7、dcoker-compose 小结

dcoker-compose
以前都是单个docker run 启动容器。
docker-compose。通过docker-compose编写yaml配置文件、可以通过compose 一键启动或停止所有服务

Docker 和 Docker Compose 是两个相关但用途不同的工具,它们在容器化应用的管理和部署中扮演不同的角色。 阅读详情

相关推荐

Docker 教程十(Docker Compose)

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。如果你还不了解 YML 文件配置,可以先阅读 YAML 入门教程。Compose 使用的三个步骤:使用 Dockerfile 定义应用程序的环境。使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。

失心少年 1614

docker-compose的version是什么意思

compose的版本和docker的版本对应关系

8303

Windows中的TLS 1.2启用方法(IIS、C#、.Net framework)

折腾几天了windows中的tls1.2启用方法!特此记录一下 开发背景: 在一个用.net framework 2.0开发的客户端程序里面嵌入功能调用第三方物联网相关接口,服务器上有一个restful接口用于接收第三方上报的数据及处理,最后再调用第三方的物联网相关接口。本机开发环境Windows 10,客户服务器是Windows Server 2008 R2。 第一次写这种物联网相关的接口调用,而且第三方提供的文档比较简单,最基本的报文示例都没。开发环境里面各种摸索一步一个坑,首先在发送HTTP请求前

dl1314ld的博客 1万+

docker-compose启动项目时报错Version in “./docker-compose.yml“ is unsupported.

报了版本问题,查了下命令写法不同了。

qq_35716085的博客 2万+

手把手教你用Simulink给C2000配置SCI串口发送数据(附模型与避坑点)

本文详细介绍了如何使用Simulink为C2000系列微控制器配置SCI串口发送数据,包括硬件资源分配、模型搭建、参数设置及调试技巧。通过代码生成和串口通信实践,帮助开发者高效实现嵌入式系统开发,避免常见通信问题。

weixin_30831529的博客 294

从零构建:Esp32+Esp-IDF驱动ST7789屏幕并集成LVGL图形库

本文详细介绍了如何从零开始使用Esp32和Esp-IDF驱动ST7789屏幕并集成LVGL图形库。内容涵盖环境准备、SPI驱动配置、屏幕初始化、LVGL图形库集成及常见问题排查,帮助开发者快速实现高效稳定的显示解决方案。

weixin_42657024的博客 524

Docker-compose

docker-compose知识点详解

刘某的博客 934

自制温湿度计——STM32-L432KC驱动lcd1602和dht11温湿度显示

先给大家甩一张图片哈(附上网址)简单说一下这块板子在这个小项目里的小缺点:一、引脚有点少,lcd1602本来有两种传输数据方式,一种是4bit,另一种是8bit,但是这块板子对于这个项目来说引脚有点少,所以建议用4bit模式。然而,在网上是很难找到设置4bit传输模式的lcd1602的,这也是为什么我写这个blog。二、mbed-os有时候会有大大小小的问题,搞人心态是真的。比如库函数离奇失踪,从官网上下载库函数失败,重装也解决不了然后莫名其妙好了。

m0_72994251的博客 3912

docker-compose介绍与使用

docker-compose可以通过docker-compose.yaml文件在现有镜像的基础上(没有镜像自动pull)按顺序批量启动多个容器来完成环境的部署,比如 redis+mysql+elk+nginx。通常一个docker-compose.yaml就代表一个完整的项目。

qq_25096749的博客 911

【Anaconda】解决“libGL error: MESA-LOADER: failed to open iris”问题

stackoverflow中的“libGL error: MESA-LOADER: failed to open iris”问题。而在自己创建的conda环境中的lib下出现`GLIBCXX_3.4.30’ not found 的情况。在上述解决方案中,将第一行命令的lib路径换成自己创建的conda环境lib路径,运行指令,问题解决。目前问题解决,总结一下查找资料以及解决方法。运行如下命令,发现本地支持。

quintus0505的博客 5022

关于YOLOv8的面试题(持续更新中...)

本章将计划更新关于YOLOv8中可能会成为面试题的关键技术点,计划持续更新,可能想到合适的问题我就会整理下更新到本博客中。

ice 4163

此docker compose非彼docker-compose

维度docker-composedocker compose安装方式独立可执行文件(standalone)Docker 插件(plugin)对应版本Compose V1Compose V2命令格式短横线连接(docker-compose)空格分隔(docker compose)集成度独立工具,需单独安装集成在 Docker CLI 中推荐程度旧版,逐步淘汰官方推荐 ✅依赖独立二进制文件依赖 docker-compose-plugin。兼容性:docker-compose 在旧版本中更稳定,适合遗留系统。

爱码少年 00fly.online 的博客 2万+

yolov26改进 | 检测头篇 | 利用渐近特征金字塔网络AFPN改进yolov26检测头融合P2网络结构(让小目标无所遁形,全网独家首发)

本文介绍一种基于AFPN渐近特征金字塔网络改进的YOLOv26四检测头Detect_FPN。AFPN通过逐级融合底层细节、中层结构与高层语义特征,缩小不同尺度特征之间的语义差距,减少直接融合带来的信息冲突,使检测头获得更稳定、更充分的多尺度表达。本文进一步增加高分辨率小目标检测分支,强化对微小目标、密集目标和复杂背景目标的感知能力,适合工业缺陷、遥感及无人机等场景。文中将展示基础模型与改进模型的训练对比结果,并提供完整代码、配置文件、模块注册方法及Codex修改思路,方便直接复现和二次创新。

Snu77的博客 367

【docker-compose】docker-compose的详细使用

我们知道使⽤⼀个 Dockerfile 模板⽂件,可以让⽤户很⽅便的定义⼀个单独的应⽤容器。然⽽,在⽇常⼯作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现⼀个 Web 项⽬,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚⾄还包括负载均衡容器等,我们只能一个一个 ` 写dockerfile文件,然后bulid构建,run手动操作单个容器 ` Compose 恰好满⾜了这样的需求。

linjun的博客 1万+

[特殊字符] PetaLinux Qt 程序(WindRadar)无法自动启动问题解决文档

摘要:本文档解决了PetaLinux 2020.1系统中Qt程序(WindRadar)无法开机自动显示界面的问题。通过分析发现,自动启动时缺少DISPLAY=:0.0环境变量导致Qt找不到显示设备。最终在autostart.sh脚本中添加该变量,并完善了字体加载、驱动加载、显示设备检测等流程,确保程序正常自启显示界面。完整脚本包含路径检测、环境配置和错误处理,经验证各项功能均正常运行。

梁俊星的博客 326

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

docker compose

Docker Compose是一个用于编排和管理多个Docker容器的工具,通过一个YAML文件统一配置容器、网络和数据卷等。文章介绍了其安装方法(区分Docker版本20前后的不同方式),并提供了一个包含6个容器的完整示例配置文件。使用docker compose up -d等命令可便捷地管理容器组,相比单独操作每个容器更高效,尤其在处理自定义网络等复杂场景时优势明显。

左直拳的马桶_日用桶 954

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Linux安装Docker及Docker-Compose

Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(除非通过端口映射),并且可以实现对系统的资源隔离和限制。Docker Compose 是 Docker 官方提供的一款工具,用于定义和运行多容器的 Docker 应用程序。

Hollyswood的专栏 5973

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【Docker】docker compose

每个服务都可以连接到一个或多个网络。

2301_80224556的博客 1581

Docker Compose: docker-compose 还是 docker compose?别再傻傻分不清!

Docker Compose 版本演变:从V1到V2 Docker Compose经历了从独立工具到集成组件的演变: V1版本:独立Python工具,使用docker-compose命令,需单独安装但存在依赖问题 V2版本:集成Go插件,使用docker compose命令,随Docker自动安装,提供更统一的操作体验和更好性能 兼容方案:可通过脚本自动检测可用版本,推荐优先使用V2命令 迁移建议:逐步将旧命令替换为新格式,注意更新自动化脚本中的命令调用方式 关键词:Docker Compose、版本差异、

小丁的博客 2175

Docker Compose 详解

Docker Compose是Docker官方推出的容器编排工具,通过统一的YAML文件管理多容器应用。文章详细介绍了其核心概念、安装方法,并以Python+Flask+Redis构建的计数Web应用为例,展示了从创建项目目录、编写应用代码、定义Dockerfile到配置docker-compose.yml的全流程。同时全面解析了常用命令,包括构建镜像(build)、验证配置(config)、启停服务(up/down)、查看日志(logs)、进入容器(exec)等,帮助开发者高效管理容器化应用的整个生命周期

大河之犬的博客 4792

Docker Compose 入门

本文介绍了Docker Compose的基本概念、安装方法及使用场景。Docker Compose是Docker官方的开源编排工具,通过YAML文件定义多容器应用的配置。文章详细讲解了docker-compose.yml模板文件的编写方法,包括常用指令如build、command、ports、volumes等,并提供了MySQL、Redis、Nginx等常见服务的配置示例。此外,还介绍了Traefik、Gogs、YApi等工具的集成方法,以及健康检查、网络配置等高级功能。最后给出了Compose的常用命令

weixin_51689532的博客 3973

一文详解docker compose

本文主要描述docker-compose容器编排相关知识

qq_29750559的博客 3475

docker compose的用法

Docker-Compose 项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Docker-Compose 项目由 Python 编写,调用 Docker 服务提供的API来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用Compose 来进行编排管理。Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。

m0_57554344的博客 3800
上一篇: Docker网络及SpringBoot应用打包
下一篇: Docker Swarm
花落 失忆
博客等级 码龄6年 33粉丝 19原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值