保护膜 东莞网站建设,推广下载app赚钱,个人网页模板背景,深圳公司网站设计公一、docker-compose介绍 Docker Compose是一个用来定义和运行多个复杂应用的Docker编排工具。例如#xff0c;一个使用Docker容器的微服务项目#xff0c;通常由多个容器应用组成。那么部署时如何快速启动各个微服务呢#xff0c;一个个手动启动#xff1f;假如有上百个微服… 一、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将所管理的容器分为3层结构
project1一个微服务项目serviceN由N个微服务组成containerN而每个微服务又由N个节点组成
docker-compose.yml组成一个project,project里包括多个service,每个service定义了容器运行的镜像或构建镜像
四、安装docker-compose
1.安装docker-compose
#下载docker-compose文件
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose#将文件复制到/usr/local/bin环境变量下面
mv docker-compose /usr/local/bin#给他一个执行权限
chmod x /usr/local/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文件
version: 3
services:redis:image: redis:alpineports:- 6379networks:- frontenddeploy:replicas: 2update_config:parallelism: 2delay: 10srestart_policy:condition: on-failuredb:image: postgres:9.4volumes:- db-data:/var/lib/postgresql/datanetworks:- backenddeploy:placement:constraints: [node.role manager]vote:image: dockersamples/examplevotingapp_vote:beforeports:- 5000:80networks:- frontenddepends_on:- redisdeploy:replicas: 2update_config:parallelism: 2restart_policy:condition: on-failureresult:image: dockersamples/examplevotingapp_result:beforeports:- 5001:80networks:- backenddepends_on:- dbdeploy:replicas: 1update_config:parallelism: 2delay: 10srestart_policy:condition: on-failureworker:image: dockersamples/examplevotingapp_workernetworks:- frontend- backenddeploy:mode: replicatedreplicas: 1labels: [APPVOTING]restart_policy:condition: on-failuredelay: 10smax_attempts: 3window: 120splacement:constraints: [node.role manager]visualizer:image: dockersamples/visualizer:stableports:- 8080:8080stop_grace_period: 1m30svolumes:- /var/run/docker.sock:/var/run/docker.sockdeploy: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:开启守护进程
六、docker-compose.yml文件配置常用字段及说明 七、Docker-compose常用命令
查看版本信息 docker-compose -v 构建并启动容器 docker-compose up 启动单个服务 docker-compose up 服务名称 后台启动服务 docker-compose up -d 停止和删除容器、网络、卷、镜像 docker-compose down 启动指定服务或启动所有服务 docker-compose start [服务名称] 停止指定服务或停止所有服务 docker-compose stop [服务名称] 列出所有运行容器 docker-compose ps 进入指定容器 docker-compose exe 删除所有停止状态的服务容器 docker-compose rm 参数
-f强制直接删除,包括非停止状态的容器
-v删除容器所挂载的数据卷 八.docker-compose 网络
指定网络模式
version: 3
services:
nginx:
container_name: my-nginx
image: nginx
ports:
- 9999:80
volumes:
- /home/nginx/html:/usr/share/nginx/html
- /home/nginx/conf.d:/etc/nginx/conf.d
- /home/nginx/log:/var/log/nginx
restart: always
network_mode: bridge写法
network_modebridge
network_modehost
network_modenone
network_modeservice:[service_name]
network_modecontainer:[container name/id]
引用外部已存在的网络 version: 3
services:
nginx:
container_name: my-nginx
image: nginx
ports:
- 9999:80
volumes:
- /home/nginx/html:/etc/nginx/html
- /home/nginx/conf.d:/etc/nginx/conf.d
- /home/nginx/log:/var/log/nginx
restart: always
networks:
- test-net
networks:
test-net:
external:
name: mynet
自定义网络
version: 3
services:
nginx:
container_name: my-nginx
image: nginx
ports:
- 9999:80
volumes:
- /home/nginx/html:/etc/nginx/html
- /home/nginx/conf.d:/etc/nginx/conf.d
- /home/nginx/log:/var/log/nginx
restart: always
networks:
test-net:
ipv4_address: 192.168.101.110
networks:
test-net:
driver: bridge
ipam:
config:
- subnet: 192.168.101.0/24
gateway: 192.168.101.1