首页 > 其他分享 >docker-compose教程(安装,使用, 快速入门)

docker-compose教程(安装,使用, 快速入门)

时间:2024-07-19 17:18:37浏览次数:12  
标签:容器 教程 compose 服务 image docker xui

docker-compose教程(安装,使用, 快速入门)

一、docker-compose介绍

Docker Compose是一个用来定义和运行多个复杂应用的Docker编排工具。例如,一个使用Docker容器的微服务项目,通常由多个容器应用组成。那么部署时如何快速启动各个微服务呢,一个个手动启动?假如有上百个微服务呢,显然不现实,那么使用Docker Compose编排工具便可快速启动容器。

Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

二、docker-compose简介及基础概念

docker-compose项目是docker官方的开源项目, 负责实现对docker容器集群的快速编排。

docker-compose将所管理的容器分为三层, 分别是工程(project),服务(service)以及容器(containner)

docker-compose运行目录下的所有文件(docker-compose.yml文件、extends文件或环境变量等)组成一个工程,如无特殊指定,工程名即为当前目录名

一个工程当中,可以包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。

一个服务中可以包括多个容器实例,docker-compose并没有解决负载均衡的问题。因此需要借助其他工具实现服务发现及负载均衡,比如consul。

docker-compose的工程配置文件默认为docker-compose.yml。可以通过环境变量COMPOSE_FILE -f 参数自定义配置文件,其自定义多个有依赖关系的服务及每个人服务运行的容器

三、为什么要使用docker-compose

我们知道,一个单独的容器项目,我们很容易可以使用一个Dockerfile模板文件。在工作中,经常会碰到需要多个容器相互配合的微服务项目来完成某项任务的情况,例如要实现一个web项目,除了web服务容器本身,往往还需要再加上后端的数据库服务容器,负载均衡容器等基础服务,还有多个微服务项目需要启动,单独手动启动肯定会相当繁琐,那么docker-compose就应运而生了。

compose允许用户通过一个单独docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器为一个项目(project),然后操作这个项目(project)即可对所有容器进行高效操作了。

docker-compose项目由pypthon编写,调用docker服务提供的API来对容器进行管理,因此, 只要所操作的平台支持docker-API,就可以在其上利用conpose来进行编排管理。

简单来说:就是来管理多个容器的,定义启动顺序的,合理编排,方便管理

四、安装docker-compose

1.安装docker-compose

#下载docker-compose文件
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.7/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

#给他一个执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 创建软链接以便于在任何位置调用docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
 
# 验证安装
docker-compose --version

2.卸载docker-compose

# 卸载docker-compose
rm  /usr/local/bin/docker-compose

五、使用docker-compose编排springboot项目

1.创建docker-compose目录

mkdir ~/docker-compose
cd  ~/docker-compose

2.编写docker-compose.yml文件

ersion: "3"
services:

  redis:
    image: redis:alpine
    ports:
      - "6379"
    networks:
      - frontend
    deploy:
      replicas: 2
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure
 
  db:
    image: postgres:9.4
    volumes:
      - db-data:/var/lib/postgresql/data
    networks:
      - backend
    deploy:
      placement:
        constraints: [node.role == manager]
 
  vote:
    image: dockersamples/examplevotingapp_vote:before
    ports:
      - 5000:80
    networks:
      - frontend
    depends_on:
      - redis
    deploy:
      replicas: 2
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure
 
  result:
    image: dockersamples/examplevotingapp_result:before
    ports:
      - 5001:80
    networks:
      - backend
    depends_on:
      - db
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure
 
  worker:
    image: dockersamples/examplevotingapp_worker
    networks:
      - frontend
      - backend
    deploy:
      mode: replicated
      replicas: 1
      labels: [APP=VOTING]
      restart_policy:
        condition: on-failure
        delay: 10s
        max_attempts: 3
        window: 120s
      placement:
        constraints: [node.role == manager]
 
  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8080:8080"
    stop_grace_period: 1m30s
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]
 
networks:
  frontend:
  backend:
 
volumes:
  db-data:

可以看到,在docker-compose.yml文件中我们可以在services目录下定义多个容器服务,当启动我们的docker-compose时,services下的服务会依次启动

3.启动docker-compose

docker-compose -f docker-compose.yaml up -d  //-f调用文件。-d:开启守护进程

4、安装xui

创建目录:

mkdit ~/xui
cd ~/xui
touch docker-compose.yaml

编写yml

version: "3.2"
services:
  xui:
    # image: enwaiax/x-ui
    image: enwaiax/x-ui:alpha-zh
    container_name: xui
      #network_mode: "host"
    ports:
      - '8080:54321'
      - '443:443'
    volumes:
      - xui_db:/etc/x-ui/
      - xui_cert:/root/cert/
    restart: unless-stopped



volumes:
  xui_cert:
  xui_db:

启动

docker-compose up -d

六、docker-compose.yml文件配置常用字段及说明

参考地址:https://blog.csdn.net/m0_37899908/article/details/131268835

标签:容器,教程,compose,服务,image,docker,xui
From: https://www.cnblogs.com/java5wanping/p/18311946

相关文章

  • 【开源分享】2024PHP在线客服系统源码(全新UI+终身使用+安装教程)
    PHP在线客服系统核心功能用户留言协同工作:留言后,用户能够享受在线咨询、订单查询等服务;登录状态也用于权限控制,确保不同用户访问合适的资源。咨询处理作用:提供实时或异步的客服咨询功能,允许用户向客服发送问题并接收回复。重要性:是客服系统的核心功能,直接影响用户体验和满意......
  • Linux环境离线安装docker&docker-compose(包含一键安装脚本和一键安装包)
    一、docker离线安装1、下载docker离线安装包下载最新版本的docker(或者选择自己想要安装的版本)到本地。1)docker下载地址:Docker版本获取备注:此地址自2024年7月无法访问下载docker版本,小编已经将可以使用的docker、docker-compose版本整理在百度网盘中如有需要可以自行获取......
  • 分享Flutter 教程笔记收集整理
    01. 初学者须知02. 初识Flutter03. Flutter开发环境搭建Windows版04. 创建Flutter项目05. Flutter编写一个HelloWorld程序06. FlutterTextWidget文本组件的使用07. FlutterContainer容器组件的使用08. FlutterImage图片组件的使用09. FlutterL......
  • Ubuntu 22.04.4 LTS (linux) Tomcat 下载 安装配置详细教程
    1官网下载下载链接2ubuntu服务器安装#下载wgethttps://dlcdn.apache.org/tomcat/tomcat-9/v9.0.91/bin/apache-tomcat-9.0.91.tar.gz#解压tarzxvfapache-tomcat-9.0.91.tar.gzsudomvapache-tomcat-9.0.91//data/tomcat#配置环境变量sudovi/etc/profile......
  • Dart 入门教程
    01. Dart介绍02. Dart开发环境搭建和开发工具的配置03. Dart语言的基础语法04. Dart数据类型05. Dart运算符06. Dart条件表达式07. Dart类型转换08. Dart循环语句09. Dartbreak和continue语句10. Dart集合类型ListsetMap详解以及相关循环语......
  • Python:SQLAlchemy 2.0 库使用教程
    SQLAlchemy2.0版本检查importsqlalchemysqlalchemy.__version__建立连接-engine任何SQLAlchemy应用程序的开始都是一个称为Engine的对象。此对象充当连接到特定数据库的中心源,既提供一个工厂,又提供一个称为连接池的存储空间,用于这些数据库连接。用法:engine=crea......
  • dockerfile来快速部署一个jsp服务
    1.创建一个jsp服务需要的dockfilevimjsp_dockerfile#UsetheofficialUbuntu 20.04 baseimageFROMubuntu:20.04 #SetenvironmentvariablesENVDEBIAN_FRONTEND=noninteractive #InstallnecessarypackagesRUNapt-getupdate&&\    apt-getinsta......
  • dockerfile来快速部署一个php服务
    1.创建一个php服务需要的dockfilevimphp_dockerfile#UsethelatestUbuntuimageasthebaseimage.FROMubuntu:20.04 #Setenvironmentvariables.ENVDEBIAN_FRONTEND=noninteractive #Updateandinstallnecessarypackages.RUNapt-getupdate&&\  ......
  • 神仙级AI大模型入门教程(非常详细),从零基础入门到精通,从看这篇开始!
    一.初聊大模型1.为什么要学习大模型?在学习大模型之前,你不必担心自己缺乏相关知识或认为这太难。我坚信,只要你有学习的意愿并付出努力,你就能够掌握大模型,并能够用它们完成许多有意义的事情。在这个快速变化的时代,虽然新技术和概念不断涌现,但希望你能静下心来,踏实地学习。一......
  • 手机玩电脑游戏攻略教程 出门在外如何用手机畅玩3A大作?暑假游戏推荐
    小编这几天盘点了一下在暑假上线的电脑游戏,发现真是不少。什么《魔兽世界》《艾登法环黄树幽影》《绝区零》PC端、《第一后裔》《七日世界》等等,还有即将到来的《黑神话》和《魔兽世界》的正式服。各位玩家是不是已经按捺不住,想要把它们都体验一遍了?可是暑假又想出去玩,又不想......