zoukankan      html  css  js  c++  java
  • Docker Compose-容器编排工具

    一、Compose工具的由来

    1、Compose 项目是Docker 官方的开源项目,负责实现对 Docker容器集群的快速编排。

    使用前面介绍的Dockerfile文件可以很容易定义一个单独的应用容器,然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。

    例如要实现web 项目,除了web 服务容器本身,往往还需要再加上后端的数据库服务容器,再比如在分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。

    如果每个服务都需要手动启停,那么效率之低,维护量之大,维护成本之高,就可想而知了,这时候就需要一个工具能够管理一组相关联的应用容器,这就是Docker Compose。

    2、docker-compose.yml文件的常用字段

    具体的使用方法会在项目部署中展示

    字段   描述
    builddockerfilecontext 指定Dockerfile文件名构建镜像上下文路径
    image 指定镜像
    command 执行命令,覆盖默认命令

    container name

    指定容器名称,由于容器名称是唯一的,如果指定自定义mingcheng

    则无法scale

    deploy 指定部署和运行服务向相关配置,只能在swarm模式使用
    environment

    添加环境变量

    networks 加入网络
    port 暴露容器端口,与-p相同,但端口不能低于60
    volumes 挂载主机路径或命令卷
    restart 重启策略,默认no/always、no-failure、unless-stoped
    hostname 容器主机名

    1.3、Docker Compose常用命令

    docker-compose [options] [COMMAND] [ARG...]
    
    //docker-compose选项:
      --verbose输出更多调试信息
      --version打印版本并退出
      -f, -file FILE使用特定的compose模板文件,默认为docker-compose.yml
      -p, --project-name NAME指定项目名称,默认使用目录名称
    //举例:
    docker-compose -f docker-compose.yml up -d
    stop/start/restart                                 停止、启动、重启服务                                     

    build  

    重新构建服务
    ps 列出容器
    up 创建和启动容器
    exec 在容器里面执行命令
    scale 指定一个服务容器的启动数量
    top 显示容器进程
    logs 查看容器输出
    down 删除容器、网络、数据卷和镜像

    二、项目部署

    1、docker环境已提前部署好,前面博客有部署

    2、下载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
    

    3、部署docker-compose

     

    可以在任何目录下使用compose命令
    [root@node2 docker]# cp -p docker-compose /usr/local/bin/
    [root@node2 bin]# docker-compose -v   #查看版本
    docker-compose version 1.21.1, build 5a3f1a3
    

    3.1、首先创建一个目录在配置相关内容

     

    [root@node2 bin]# mkdir /root/compose_nginx
    [root@node2 bin]# cd /root/compose_nginx/
     yum install -t tree
    [root@node2 compose_nginx]# tree ./
    ./
    ├── docker-compose.yml
    ├── nginx
    │   ├── Dockerfile
    │   ├── nginx-1.12.2.tar.gz
    │   └── run.sh
    └── wwwroot
    
    1 directory, 5 files
    

    3.2、创建nginx的Dockerfile文件

    [root@node2 compose_nginx]# cd nginx
    [root@node2 nginx]# ll
    总用量 968
    -rw-r--r--. 1 root root    506 11月 30 14:58 Dockerfile
    -rw-r--r--. 1 root root 981687 11月 30 15:01 nginx-1.12.2.tar.gz
    -rw-r--r--. 1 root root     40 11月 30 14:59 run.sh
    
    FROM centos:7
    MAINTAINER nginx
    RUN yum -y update
    RUN yum -y install gcc gcc-c++ make pcre-devel zlib-devel
    ADD nginx-1.12.2.tar.gz /opt
    WORKDIR /opt/nginx-1.12.2
    RUN ./configure 
    --prefix=/usr/local/nginx 
    --user=nginx 
    --group=nginx 
    --with-http_stub_status_module && make && make install
    RUN useradd -M -s /sbin/nologin nginx
    ENV PATN /usr/local/nginx/sbin:$PATH
    EXPOSE 80
    EXPOSE 443
    RUN echo 'daemon off;' >> /usr/local/nginx/conf/nginx.conf
    ADD run.sh /run.sh
    RUN chmod 755 /run.sh
    CMD ["/run.sh"]
    
    #!/bin/bash
    /usr/local/nginx/sbin/nginx
    ~                            
    

    3.3、创建docker-compose.yml

    [root@node2 compose_nginx]# vi docker-compose.yml 
    version: '3'
    services:
      nginx:
       hostname: nginx
       build:
        context: ./nginx
        dockerfile: Dockerfile
       ports:
        - 1216:80
        - 1217:443
       networks:
        - abc
       volumes:
        - ./wwwroot:/usr/local/nginx/html
    networks:
     abc:
    

    3.4用docker-compose命令执行,-f指向文件 

    [root@node2 compose_nginx]# docker-compose -f docker-compose.yml up -d
    compose_nginx_nginx_1 is up-to-date
    [root@node2 compose_nginx]# docker ps -a
    CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                                         NAMES
    43daa92d21b2        compose_nginx_nginx   "/run.sh"           32 minutes ago      Up 27 minutes       0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp   compose_nginx_nginx_1
    

    3.5、配置测试网页,执行时会自动创建wwwroot目录

    [root@node2 compose_nginx]# ll
    总用量 4
    -rw-r--r--. 1 root root 237 11月 30 15:27 docker-compose.yml
    drwxr-xr-x. 2 root root  65 11月 30 15:27 nginx
    drwxr-xr-x. 2 root root  24 11月 30 15:53 wwwroot
    [root@node2 compose_nginx]# cd wwwroot
    [root@node2 wwwroot]# vi index.html 
    <h1>this is web</h1>
    ~                     
    

     测试

     

      

     

      

      

      

      

     

  • 相关阅读:
    Mesos以及Marathon安装总结
    Mesos的quorum配置引发的问题
    chronoy & NTP
    /boot下面文件说明
    jquery插件
    不错的源码演示:admin5源码
    dos中执行cd命令切换不到对应的盘解决方法
    ThinkPHP重写规则优化URL及Rewrite规则详细说明
    PHP实现MySQL数据导出为EXCEL(CSV格式)
    php中常用$_SERVER的用法
  • 原文地址:https://www.cnblogs.com/tianzhendengni/p/14062336.html
Copyright © 2011-2022 走看看