• 使用Docker-compose编排容器


      在《Docker学习实践》中,我们使用了5个容器,3个使用已有镜像,两个使用的dockerfile构建的镜像,一个个启动很麻烦。今天我们使用Docker集群管理三剑客之一的Docker-compose来编排容器。

      Compose是Docker集群管理的工具。你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,它会自动解析容器依赖关系,下载镜像,启动应用。

    安装Docker和Compose

    # 安装docker
    yum install docker -y
    
    # 安装compose
    yum install python-pip -y
    pip install -U docker-compose

    使用compose

    我们还是部署django应用,把之前的命令拿过来

    # mx_mysql
    docker run -d -p 3306:3306 --name mx_mysql -v $PWD/conf/:/etc/mysql/conf.d -v $PWD/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
    
    # mx_redis
    docker run -d -p 6379:6379 -v $PWD/data/redis:/data --name mx_redis redis:3.2 redis-server --appendonly yes
    
    # mx_nginx
    docker run -p 80:80 --name mx_nginx -v $PWD/online/conf/mx_nginx.conf:/etc/nginx/conf.d/mx_nginx.conf --volumes-from mx_online -d nginx
    
    # mx_online
    docker run -d -p 8000:8000 -v /root/online:/online --name mx_online django uwsgi --http :8000 -w online.wsgi -p 3
    
    # mx_celery
    docker run -d -v /root/online:/online --name mx_celery --link mx_mysql:mysql --link mx_redis:redis django celery -A online worker -l info 

    Dockerfile文件还是原来的不变。

    首先,要将上面的命令转换成docker-compose.yml文件

    yaml文件语法:

    image 使用的镜像
    build 指定Dockerfile构建
    command 启动执行命令
    links 链接其他容器    
    ports 端口映射
    expose 暴露端口
    volumes 挂载路径
    volumes_from 从容器挂载
    environment 环境变量

    很容易就能转换过来。

    mx_mysql:
      restart: always
      image: mysql:5.6
      volumes:
        - /root/data/mysql:/var/lib/mysql
        - ./conf/:/etc/mysql/conf.d
      ports:
        - "3306:3306"
      environment:
        - MYSQL_DATABASE=online
        - MYSQL_ROOT_PASSWORD=123456
      
    mx_redis:
      restart: always
      image: redis:3.2
      volumes:
        - /root/data/redis:/data
      ports:
        - "6379:6379"
      command: redis-server --appendonly yes
    
    mx_nginx:
      restart: always
      image: nginx
      ports:
        - "80:80"
      volumes:
        - ./conf/mx_nginx.conf:/etc/nginx/conf.d/mx_nginx.conf
      volumes_from:
        - mx_online
      links:
        - mx_online:web
    
    mx_online:
      restart: always
      build: .
      expose:
        - "8000:8000"
      volumes:
        - .:/online
      links:
        - mx_mysql:mysql
        - mx_redis:redis
      command: uwsgi -s :8000 -w online.wsgi -p 3
    
    mx_celery:
      restart: always
      build: .
      volumes_from:
        - mx_online
      links:
        - mx_mysql:mysql
        - mx_redis:redis
      command: celery -A online worker -l info

    开始是容器名称,下面是容器配置,注意空两格,使用短线再空一格。这样就组成了应用的完整配置。目录结构:

    下一步,就是执行docker-compose up -d启动应用。先下载镜像:

    创建容器:

    使用docker-compose ps 查看容器:

    访问ip地址,显示503,说明我们基本部署成功了,只是建数据库,没有建表。下面创建表:

    docker-compose exec mx_online /usr/local/bin/python manage.py makemigrations
    docker-compose exec mx_online /usr/local/bin/python manage.py migrate

    成功就可以正常访问了。现在我们的应用完全可以一键启动了。

    下面学习一下compose命令:

    build 构建或重建服务
    help 命令帮助
    kill 杀掉容器
    logs 显示容器的输出内容
    port 打印绑定的开放端口
    ps 显示容器
    pull 拉取服务镜像
    restart 重启服务
    rm 删除停止的容器
    run 运行一个一次性命令
    scale 设置服务的容器数目
    start 开启服务
    stop 停止服务
    up 创建并启动容器

    我们要使用的是docker-compose up -d启动应用。

     docker-compose run 会再起一个新容器,要注意删除,使用docker-compose rm:

     重启,使用docker-compose restart:

    注意这是容器名,可以用docker命令操作,单个操作。这个是服务名,使用docker-compose命令操作,多个一起操作。例如:

     

     其他以后再试

  • 相关阅读:
    《大话数据结构》第1章 数据结构绪论 1.2 你数据结构怎么学的?
    伍迷七八月新浪微博集锦
    《大话数据结构》第9章 排序 9.7 堆排序(下)
    《大话数据结构》第3章 线性表 3.8.2 单链表的删除
    《大话数据结构》第9章 排序 9.5 直接插入排序
    《大话数据结构》第9章 排序 9.8 归并排序(上)
    《大话数据结构》第2章 算法基础 2.9 算法的时间复杂度
    《大话数据结构》第1章 数据结构绪论 1.1 开场白
    《大话数据结构》第9章 排序 9.1 开场白
    [AWS] Assign a public IP address to an EC2 instance after launched
  • 原文地址:https://www.cnblogs.com/wj5633/p/6707012.html
Copyright © 2020-2023  润新知