使用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 exec:

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

其他以后再试

时间: 2024-10-31 12:58:55

使用Docker-compose编排容器的相关文章

使用Docker compose编排Laravel应用

前言 Laravel官方开发环境推荐的是Homestead(其实就是一个封装好的Vagrant box),我感觉这个比较重,于是自己用Docker compose编排了一套开发环境,在这里分享下. 环境要求 先要安装好Docker 和 Docker compose,而且Docker 仓库镜像最好换成国内的.一般地,我开发电脑上会运行一个Vagrant,然后再在里面运行Docker等应用. 主要思路 Docker官方推荐的是一个容器运行一个服务,所以会有Compose编排,各个服务间通过容器互联技

Docker Compose 多容器应用

Docker Compose是一个用来定义并运行复杂应用程序的工具.用Compose,你可以在一个文件中定义多个容器应用程序,然后只需一条命令就可以完成使其运行所需的所有操作. 一个使用Docker容器的应用程序通常是由多个容器组成的.使用Docker Compose,不需要编写shell脚本来启动容器.所有的容器都以服务的形式被定义在一个配置文件中,然后使用docker-compose脚本来启动.停止和重启应用和应用中的所有服务,以及服务中的所有容器. 完整的命令列表: 下面是一个Java E

Docker学习 Part-07(Docker Compose 服务编排)

Docker Compose 一.安装Docker Compose # Compose目前已经完全支持Linux.Mac OS和Windows,在我们安装Compose之前,需要先安装Docker.下面我 们以编译好的二进制包方式安装在Linux系统中. curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/

利用docker compose启动gitlab及runner

添加docker compose配置文件 新建文件docker-compose.yml,输入如下内容: gitlab: image: 'gitlab/gitlab-ce:latest' container_name: 'gitlab' restart: always hostname: 'gitlab.cjx.com' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://gitlab.cjx.com' # Add any othe

Docker compose v3版本构建跨主机容器编排构建wordpress集群

在Docker 1.13版本之后,可以说Docker 对于compose容器调度编排实现了飞跃,可以使得在编排容器的时候可以结合Docker swarm集群和跨主机通讯的概念.在Docker swarm 的基础之上引入stack对service镜像管理和编排.下面我们实战一下用之前构建wordpress集群来测试一下: 环境要求: 1.存在了Docker swarm集群: [[email protected] ~]# docker node ls ID                      

容器编排 Docker Compose

在我们启动容器的时候经常要使用docker run 指定很多参数,当我们需要管理很多容器时,使用这样的方式会给我们的运维人员带来很大的负担,docker compose容器编排工具无疑是解决这个一问题的利器. Docker Compose是用来管理多容器应用的工具,我们可以使用compose file 文件来配置容器的应用和服务,编写好compose file 文件以后,我们只需要使用一条简单的命令就可以创建并启动我们需要的应用. 使用compose一般有三个步骤:1.编写Dockerfile,

Docker容器——Compose编排_consul集群_template模板

docker compose容器编排 (1)docker compose的前身Fig,它是一个定义及运行多个docker容器的工具 (2)使用docker compose不再需要使用shell脚本启动容器 (3)docker compose非常适合组合使用多个容器进行开发的场景 YAML是一种标记语言很直观的数据序列化格式 文件格式及编写注意事项: 不支持制表符tab键缩进,需要使用空格缩进 通常开头缩进2个空格 字符后缩进1个空格,如冒号,逗号,横杆 用井号注释 如果包含特殊字符用单引号引起来

Docker Compose容器编排

本章知识点概括: Docker Compose容器编排构建自动发现的Docker服务架构实现容器服务自动加入Nginx集群 **Docker Compose容器编排功能** Docker compose的前身是Fig,它是一个定义及运行多个docker容器的工具 使用Docker Compose不再需要使用shell脚本来启动容器 Docker Compose非常适合组合是同多个容器进行开发的场景 可以执行多个容器的操作 **Docker Compose容器编排** YAML是一种标记语言很直观

Docker Compose 1.18.0 之服务编排详解

一个使用Docker容器的应用,通常由多个容器组成.使用Docker Compose,不再需要使用shell脚本来启动容器.在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 服务编排工具使得Docker应用管理更为方便快捷. Docker Compose网站:https://docs.docke

docker:编排与部署小神器>>Compose概念篇

docker-compose是什么 Compose是定义和运行多容器Docker应用程序的工具. 使用Compose,您可以使用YAML文件来配置应用程序的服务. 然后,使用单个命令,您可以创建并启动配置中的所有服务. Compose适用于所有环境:生产,开发,测试以及CI工作流程.使用Compose基本上是一个三步过程: 使用Dockerfile定义应用程序的环境,以便在任何地方进行复制. 在docker-compose.yml中定义组成应用程序的服务,以便它们可以在隔离的环境中一起运行. 运