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