宜都网站建设,wordpress做视频网站,株洲58同城网站建设电话,毕业设计指导网站建设一.Docker-compose概述Docker-Compose项目是Docker官方的开源项目#xff0c;负责实现对Docker容器集群的快速编排。Docker-Compose将所管理的容器分为三层#xff0c;分别是 工程#xff08;project#xff09;#xff0c;服务#xff08;service#xff09;以及容器负责实现对Docker容器集群的快速编排。Docker-Compose将所管理的容器分为三层分别是 工程project服务service以及容器container。Docker-Compose运行目录下的所有文件docker-compose.ymlextends文件或环境变量文件等组成一个工程若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务每个服务中定义了容器运行的镜像、参数、依赖。一个服务当中可包括多个容器实例Docker-Compose并没有解决负载均衡的问题因此需要借助其它工具实现服务发现及负载均衡比如 Consul。Docker-Compose的工程配置文件默认为docker-compose.yml可通过环境变量COMPOSE_FILE或-f参数自定义配置文件其定义了多个有依赖关系的服务及每个服务运行的容器。使用一个Dockerfile模板文件可以让用户很方便的定义一个单独的应用容器。在工作中经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目除了Web服务容器本身往往还需要再加上后端的数据库服务容器甚至还包括负载均衡容器等。Compose允许用户通过一个单独的docker-compose.yml模板文件YAML 格式来定义一组相关联的应用容器为一个项目project。Docker-Compose项目由Python编写调用Docker服务提供的API来对容器进行管理。因此只要所操作的平台支持Docker API 就可以在其上利用Compose来进行编排管理二.YAML文件格式以及编写注意事项YAML是一种标记语言它可以很直观的展示数据序列化格式可读性高。类似于XML数据描述语言语法比XML简单的很多。YAML数据结构通过缩进来表示连续的项目通过减号来表示键值对用冒号分隔数组用中括号【】括起来hash用花括号 {} 括起来。三.Docker Compose配置常用字段no 默认策略在容器退出时不重启容器on-failure在容器非正常退出时退出状态非0才会重启容器on-failure3 在容器非正常退出时重启容器最多重启3次always在容器退出时总时重启容器unless-stopped 在容器退出时总是重启容器但是不考虑早Docker守护进程启动时就已经停止了容器四.Docker Compose常用命令五.Docker Compose文件结构六.compose部署6.1 Docker Compose环境安装Docker Compose是Docker的独立产品因此需要安装Docker之后在单独安装Docker Compoe#下载在Linux上我们可以从Github上下载它的二进制包来使用此命令是下载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 #安装chmod x /usr/local/bin/docker-compose#查看版本docker-compose --version chmod x docker-composemv docker-compose /usr/local/bin/docker-compose --version6.2 compose部署nginx6.2.1 准备依赖文件mkdir -p /opt/compose_nginx/nginx /opt/compose_nginx/wwwrootcd /opt/compose_nginx/nginxcp nginx-1.12.0.tar.gz ./ vim run.sh#!/bin/bash/usr/local/nginx/sbin/nginx vim Dockerfile#基于基础镜像FROM centos:7#用户信息MAINTAINER this is nginx image wl#添加环境包RUN yum -y updateRUN yum -y install pcre-devel zlib-devel gcc gcc-c makeRUN useradd -M -s /sbin/nologin nginx#上传nginx软件压缩包并解压ADD nginx-1.12.0.tar.gz /usr/local/src/#指定工作目录WORKDIR /usr/local/src/nginx-1.12.0RUN ./configure \--prefix/usr/local/nginx \--usernginx \--groupnginx \--with-http_stub_status_module make make installENV PATH /usr/local/nginx/sbin:$PATH#指定http和https端口EXPOSE 80EXPOSE 443//方法一RUN echo daemon off; /usr/local/nginx/conf/nginx.conf #关闭 nginx 在后台运行#添加宿主机中run.sh到容器中ADD run.sh /run.shRUN chmod 755 /run.shCMD [/run.sh]//方法二ENTRYPOINT [ /usr/local/nginx/sbin/nginx, -g, daemon off; ] echo h1this is test web/h1 /opt/compose_nginx/wwwroot/index.html 6.2.2 编写配置文件docker-compose-ymlversion: 3services: nginx: build: context: ./nginx dockerfile: Dockerfile container_name: nginxMessage from syslogdlocalhost at Jul 11 22:41:57 ... kernel:unregister_netdevice: waiting for lo to become free. Usage count 1 - 1217:443 networks: lnmp: ipv4_address: 192.168.2.22 volumes: - ./nginx/wwwroot:/usr/local/nginx/htmlnetworks: lnmp: driver: bridge ipam: config: - subnet: 192.168.2.0/16 cd /opt/compose_nginx/docker-compose -f docker-compose.yml up -d-----------------------------------------------------------------------------------------------------------f, --file FILE 使用特定的 compose 模板文件默认为 docker-compose.yml-p, --project-name NAME 指定项目名称默认使用目录名称-d 在后台运行---------------------------------------------------------------------------------------------------------- docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb48dceee248f compose_nginx_nginx /run.sh About a minute ago Up About a minute 0.0.0.0:1216-80/tcp, 0.0.0.0:1217-443/tcp compose_nginx_nginx_1 cd /opt/compose_nginx/docker-compose ps #必须在docker-compose.yml所在目录执行此命令