Docker compose容器编排
1、Docker compose简介
docker-compose是docker的编排工具,用于定义和运行一个项目,该项目包含多个docker容器,在如今的微服务时代,一个项目会存在多个服务,使用docker一个个部署操作的话就会很麻烦,如果使用docker编排工具一键部署,统一管理就会便捷很多,同时也提高了开发,运维效率。
1.1 什么是容器编排?
容器编排即是在docker客户端与docker服务器之间加入一个容器编排,通过容器编排的操作一次执行便可将整个微服务系统全部一键部署;简单来说,某些项目所需要的容器远不止一个,按照传统的做法就是一个个部署容器,有了容器编排之后可以一键部署所有容器。
1.2 Docker compose如何实现容器编排?
docker compose容器编排和Dockerfile镜像构建一样通过编写yml文件,在yml文件中写入指令来完成容器的编排工作;docker compose编排文件默认名为:docker-compose.yml;一个docker-compose.yml文件就是一个项目。
docker compose容器编排的三步过程:
定义应用程序环境(镜像),已有镜像,Dockerfile构建镜像。
定义应用程序容器,docker-compose.yml以便它们可以在隔离环境中一起运行。
运行启动整个项目程序。
2、docker-compose.yml配置讲解
docker-compose.yml文件格式及编写注意事项:
不支持制表符tab键缩进,需要使用空格缩进
冒号、逗号、横杠后缩进1个空格
用#号注释
如果包含特殊字符用单引号引起来
布尔值须用引号引起来
docker-compose.yml文件配置详解:
version:"3.7" //指定compose版本,最好是3.0以上版本
services: //配置服务(容器)httpd: //配置服务标识(唯一编号)container_name: xxx //容器名称image: httpd //配置容器镜像build: //build和image二选一context: . //上下文路径dockerfile: Dockerfiledepends_on: //容器启动顺序,该容器依赖某个容器- xxxexpose: //容器开放端口- 80ports: //配置容器映射端口号[数组]- 80:80volumes: //配置挂载卷- db_data:/var/www/htmlnetworks: //配置容器网络[数组]- httpd_net //网络名称privileged:"true"command: xxxx //覆盖容器启动后默认执行的命令entrypoint:xxxx //覆盖容器启动后默认执行的命令networks: //为网络指定配置httpd_net: //配置网络名称driver: bridge //网络类型volumes: //为卷指定配置db_data:driver: local
3、docker-compose工具安装及使用
3.1 docker-compose工具安装
docker-compose工具最新发行的版本地址:https://github.com/docker/compose/releases下载docker-compose工具1.29.2版本:curl -o /bin/docker-compose -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64赋予执行权限:
chmod +x /bin/docker-compose查看版本:[root@localhost ~]# docker-compose versiondocker-compose version 1.29.2, build 5becea4cdocker-py version: 5.0.0
CPython version: 3.7.10
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
3.2 docker-compose工具使用
docker-compose up //部署Compose应用,默认读取名为docker-compose.yml文件
-d //后台运行docker-compose build //在运行项目前先构建项目所需镜像docker-compose ps //列出本地docker-compose.yml文件里定义的正在运行的所有服务docker-compose stop //停止所有服务,如果服务没有停止,可以使用docker-compose kill强制杀死服务docker-compose start //开启所有服务docker-compose rm //删除所有服务