前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker实践(五):Docker Compose

Docker实践(五):Docker Compose

作者头像
loong576
修改2019-10-23 10:48:14
1.1K0
修改2019-10-23 10:48:14
举报
文章被收录于专栏:运维ABC运维ABC

环境说明:

主机名

操作系统版本

IP地址

docker版本

Compose版本

VMware版本

docker01

Ubuntu 16.04.5

172.27.9.71

18.09.2

1.24.0

12.5.2

本文所有测试都在Vmware虚拟机上完成

ubuntu安装详见:Ubuntu16.04.5以lvm方式安装全记录

docker安装详见:Ubuntu16.04安装Docker

一、Docker Compose简介

1.简介

 Compose是用于定义和运行多个Docker应用的工具。使用yaml文件可以快速的创建和管理基于Docker容器的应用集群。

Compose可以管理应用的整个生命周期,包括:

  • 启动、停止和重建服务
  • 查看正在运行的服务的状态
  • 传输正在运行的服务的日志
  • 在服务上执行性命令

2.概念

  • 任务(task):一个容器被称为一个任务。任务的ID唯一,在同一服务中的多个任务序号依次递增。
  • 服务(service):某个相同应用镜像的容器副本集合,一个服务可以横向扩展为多个容器实例。
  • 服务栈(stack):由多个服务组成,相互配合完成特定业务,一般由docker-compose.yml文件定义。

Compose是Docker官方开源项目,负责实现对基于Docker容器的多应用服务的快速编排。

二、安装Docker Compose

1.下载二进制文件

各版本下载地址:https://github.com/docker/compose/releases

代码语言:txt
复制
root@docker01:~# curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2.赋权

代码语言:txt
复制
root@docker01:~# chmod +x /usr/local/bin/docker-compose

3.安装验证

代码语言:txt
复制
root@docker01:~# docker-compose --version
docker-compose version 1.24.0, build 0aa59064

4.命令补全

下载docker-compose

代码语言:txt
复制
root@docker01:~# curl -L https://raw.githubusercontent.com/docker/compose/1.24.0/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 13258  100 13258    0     0   7823      0  0:00:01  0:00:01 --:--:--  7821

加载docker-compose

代码语言:txt
复制
root@docker01:~# source /etc/bash_completion.d/docker-compose 
root@docker01:~# docker-compose 
build    config   down     exec     images   logs     port     pull     restart  run      start    top      up       
bundle   create   events   help     kill     pause    ps       push     rm       scale    stop     unpause  version  

加载并用tab验证命令补全。

三、Docker Compose实践

本文以搭建Web服务器Django为例,演示Docker Compose的使用方法。

1.新建项目目录

代码语言:txt
复制
root@docker01:~# mkdir compose-django

在root家目录/root下创建项目目录compose-django

2.新建Dockerfile

代码语言:txt
复制
root@docker01:~# cd compose-django/
root@docker01:~/compose-django# more Dockerfile 
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

  • FROM python:3     #将python:3作为基础镜像
  • ENV PYTHONUNBUFFERED 1     #设置环境变量:不缓冲stdin、stdout和stderr,默认是缓冲的
  • RUN mkdir /code     #运行shell命令:创建目录code
  • WORKDIR /code     #为后面的RUN、COPY指令设置镜像中的当前工作目录
  • COPY requirements.txt /code/     #将文件requirements.txt复制到镜像
  • RUN pip install -r requirements.txt     #运行shell命令,安装requirements.txt中指定的Django和psycopg2
  • COPY . /code/     #将文件从build context复制到镜像/code,即/root/compose-django下所有内容复制到/code

该Dockerfile用于构建后面的web镜像

3.新建配置文件requirements.txt

代码语言:txt
复制
root@docker01:~/compose-django# more requirements.txt 
Django>=2.0,<3.0
psycopg2>=2.7,<3.0

该文件用于指定Django和数据库psycopg2版本,在Dockerfile会使用到。

4.新建docker-compose.yml

代码语言:txt
复制
root@docker01:~/compose-django# more docker-compose.yml 
version: '3'

services:
  db:
    image: postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

  • docker-compose.yml    #模板文件名称,可以是.yml或者.yaml
  • version: '3'    #版本信息
  • services:  #services定义了两个service:db 和web
  • image: postgres  #db的镜像名:postgress
  • build: .  #web通过build方式构建镜像,配置文件为Dockerfile
  • command: python manage.py runserver 0.0.0.0:8000 #容器启动后默认执行的命令
  • volumes:  #设置数据卷所挂路径
  • ports:  #暴露端口信息
  • depends_on:  #指定依赖关系:web服务依赖于db

docker-compose.yml描述了组成应用的服务:db和web,还有镜像、卷、端口等信息。

5.新建Django工程

代码语言:txt
复制
root@docker01:~/compose-django# docker-compose run web django-admin startproject composeexample .

compose构建web镜像,运行web容器并在容器内执行 django-admin startproject composeexample,创建工程composeexample,注意该命令最后的'.'表示执行路径为当前目录。

6.查看文件

7.修改Django配置文件

代码语言:txt
复制
root@docker01:~/compose-django# view composeexample/settings.py
ALLOWED_HOSTS = ['*']

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

修改ALLOWED_HOSTS,允许所有连接;修改数据库连接设置。

8.启动应用

项目目录/root/compose-django下启动服务

代码语言:txt
复制
root@docker01:~/compose-django# docker-compose up

如果希望在后台运行可以加参数“-d”

9.访问Django

10.查看容器

新窗口中查看当前运行的容器

容器的默认名字为:项目名+服务名+_1

本文参考:

https://docs.docker.com/compose/install/

https://docs.docker.com/compose/compose-file/

https://docs.docker.com/compose/django/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Docker Compose简介
    • 1.简介
      • 2.概念
      • 二、安装Docker Compose
        • 1.下载二进制文件
          • 2.赋权
            • 3.安装验证
              • 4.命令补全
                • 下载docker-compose
                • 加载docker-compose
            • 三、Docker Compose实践
              • 1.新建项目目录
                • 2.新建Dockerfile
                  • 3.新建配置文件requirements.txt
                    • 4.新建docker-compose.yml
                      • 5.新建Django工程
                        • 6.查看文件
                          • 7.修改Django配置文件
                            • 8.启动应用
                              • 9.访问Django
                                • 10.查看容器
                                相关产品与服务
                                容器服务
                                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档