该实践是在已经安装了docker的基础上,如果还未安装docker,请先安装docker : https://www.cnblogs.com/theRhyme/p/9813019.html

docker-compose容器编排,可以启动多个容器(在docker-compose.yml中配置),或重新编译多个容器,以及关闭等操作。

1. 安装

第一种方式:使用pip安装(推荐)

sudo pip install docker-compose

第二种方式:Docker官网安装教程

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

在Linux系统下执行下面的命令:

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

该过程大概需要10多分钟。

给docker-compose添加权限

sudo chmod +x /usr/local/bin/docker-compose

版本

查看docker-compose版本

docker-compose --version

  

2. Get started with Docker Compose

下面运行一个python框架flask的web项目

Step 1: 项目设置

创建一个项目目录,进入到该目录

mkdir docker-comopse-testcd docker-compose-test

  

在该目录下创建一个app.py文件,并加入下面的内容

大体意思是访问项目路径"/",在redis中点击次数"hits"+1

import timeimport redis
from flask import Flaskapp = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)def get_hit_count():retries = 5while True:try:return cache.incr('hits')except redis.exceptions.ConnectionError as exc:if retries == 0:raise excretries -= 1time.sleep(0.5)@app.route('/')
def hello():count = get_hit_count()return 'Hello World! I have been seen {} times.\n'.format(count)if __name__ == "__main__":app.run(host="0.0.0.0", debug=True)

  

创建一个文本项目"requirements.txt",该文件内容是项目所依赖的东西

flask
redis

  

Step 2: Create a Dockerfile

创建Dockerfile为了创建一个docker镜像,这个镜像包含了全部的项目依赖:

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

构建一个python3.4的镜像;

将当前目录"."添加到镜像的/code目录下;

设置镜像工作目录为/code;

构建镜像阶段执行集成项目依赖的命令;

为容器启动后默认执行的命令

Step 3: Define services in a Compose file

创建一个docker-compose.yml在当前项目目录下,内容如下:

version: '3'
services:web:build: .ports:- "5000:5000"redis:image: "redis:alpine"

  

这个Compose文件定义了两个服务:web和redis;

web服务使用的镜像是build当前目录下"."下Dockerfile后的镜像,暴露当前宿主机(localhost)的端口号5000,与docker容器的5000端口(本项目的flask)映射;

redis服务的镜像就是从docker仓库拉下来的公共的Redis镜像;

Step 4: Build and run your app with Compose

构建并运行刚才的flask web项目

docker-compose up

  

通过浏览器访问http://localhost:5000/,如下图

上图,是我多次刷新的效果。

由于刚才的启动命令没有才后台运行,所以我们再开启一个terminal窗口执行:

docker image ls

  

就能够看到我们刚刚已经构建的本地镜像列表

刚才我们的web服务的镜像名,是"当前目录名称_服务名"的格式自动生成。

关闭当前容器:

在项目的根目录,docker-compose.yml所在的目录执行命令

docker-compose down

该命令会停止容器并且删除容器对应的镜像(web和redis),以及网络配置

或者在未后台运行的窗口:"Ctrl+C"

Step 5: Edit the Compose file to add a bind mount

编辑"docker-compose.yml"文件内容,把宿主机的路径"."(当前目录)挂载到容器中的"/code",格式是:"HOST:CONTAINER"

version: '3'
services:web:build: .ports:- "5000:5000"volumes:- .:/coderedis:image: "redis:alpine"

  

Step 6: Re-build and run the app with Compose

docker-compose up

  

Step 7: Update the application

编辑"app.py"文件,将返回的内容修改为

return 'Hello from Docker! I have been seen {} times.\n'.format(count)

  

刷新浏览器,返回结果已经改变了

Step 8: Experiment with some other commands

执行"docker-compose"命令必须在当前目录或环境下要有对应的"docker-compose.yml"文件

后台启动运行

docker-compose up -d

  

查看已经启动的容器

docker-compose ps

  

执行一次性的命令:docker-compose run

比如查看某个service的环境参数:docker-compose run 服务名 env

这里的服务名即是"docker-compose.yml"文件中"services"节点下的名称,如"web".

docker-compose run web env

创建并进入docker 容器

docker-compose run service名称 sh

停止容器

如果是容器是以后台方式运行的,可以使用

docker-compose stop

仅仅停止运行的容器

关闭所有内容,完全删除容器,并且删除数据卷

docker-compose down --volumes

  

docker-compose --help

  

来源:https://docs.docker.com/compose/gettingstarted/

转载于:https://www.cnblogs.com/theRhyme/p/10607872.html

docker-compose学习相关推荐

  1. Docker Compose学习之docker-compose.yml编写规则 及 实战案例

    [Docker那些事]系列文章 docker 安装 与 卸载 centos Dockerfile 文件结构.docker镜像构建过程详细介绍 Dockerfile文件中CMD指令与ENTRYPOINT ...

  2. Docker Compose配置springboot微服务项目

    [Docker那些事]系列文章 docker 安装 与 卸载 centos Dockerfile 文件结构.docker镜像构建过程详细介绍 Dockerfile文件中CMD指令与ENTRYPOINT ...

  3. dockers-系统学习-docker compose服务编排

    dockers-系统学习-docker compose服务编排 一.服务编排 1.1.概念 按照一定的业务规则批量管理容器 1.2.问题 微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会 ...

  4. Docker 学习笔记 - 进阶四 Docker网络和 Docker compose

    Docker 学习笔记 - 进阶四 Docker网络和 Docker compose 4. docker 网络 4.1 docker network是什么 4.1.1 docker不启动,默认网络情况 ...

  5. Docker学习之路05:五分钟用docker compose搭建一个自己的个人博客网站!

    五分钟用docker compose搭建一个自己的个人博客网站! Docker学习路线传送门: Docker学习之路01:Docker的安装 Docker学习之路02:阿里云镜像加速器 Docker学 ...

  6. 从零开始学习docker(十二)介绍Docker Compose基本使用

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 默认情况下在mac或者Windows安装docker的时候会自动安装docker-compose.对于Linux ...

  7. 从零开始学习docker(十一)介绍Docker Compose yml文件介绍

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 如果我们有一个App,他由多个container组成,那么这个App的维护会非常繁琐. 包括: 要从Docker ...

  8. 从零开始学习docker(十)搭建WordPress+Mysql,为什么要用Docker Compose

    我们从这一节开始介绍一个非常非常重要的工具--Docker Compose,这个工具会经常使用. 先从一个案例介绍一下我们为什么要用Docker Compose. 案例:如何通过容器部署一个WordP ...

  9. Docker学习笔记 - Docker Compose

    一.概念 Docker Compose 用于定义运行使用多个容器的应用,可以一条命令启动应用(多个容器). 使用Docker Compose 的步骤: 定义容器 Dockerfile 定义应用的各个服 ...

  10. Docker学习总结(42)——Docker Compose 入门学习

    一.Docker Compose介绍 Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用(称为一个 project,即项目).Compose 定位是 ...

最新文章

  1. 站在这山看着那山高,到了那山没柴烧.
  2. 使用MLX90640自制红外热像仪(三):图像插值、图像彩色编码
  3. 《OpenCV图像处理》——1.7 用户交互工具
  4. C语言学习笔记-3.顺序结构程序设计
  5. rust(52)-二叉最大堆BinaryHeap
  6. Swoole实现私聊群聊
  7. 使用pull解析XML文件
  8. SAP-MM:发票、贷方凭证、事后借记、后续贷记
  9. ASP.NET实现二维码(QRCode)的创建和读取
  10. poj1753 Flip Game
  11. 闭合导线计算软件excel_测量坐标计算程序 V6
  12. Python入门--with语句
  13. 使用正交表高效地设计测试用例
  14. HTTP协议和SOCKS5协议
  15. MySQL条件查询IN和NOT IN左右两侧包含NULL值的处理方式
  16. Seating Arrangement CSU - 1997 (思维题,是否存在n个数的序列,使得相邻啷个数的差绝对值大于d)
  17. python 大文件分片上传_Python实现大文件分片上传
  18. Android获取电子签名内容,Android Studio 获取app签名
  19. 【Linux】必须掌握的Linux常见指令分类讲解
  20. PyQt4设计UI界面并添加简单功能【python+pyqt4+opencv】

热门文章

  1. Android TV 开发(5)
  2. Android项目总结(3)-登录页图片循环过渡播放动画效果
  3. pip安装python依赖成功,pycharm中import出错
  4. myBatis --(3)数据的增删改查
  5. 更改VS2010,VS2008,VS2012等指定默认浏览器操作方式
  6. 太火了,这些牛逼的Java代码技巧,肯定能让你目瞪口呆!
  7. 记得收藏这12个爆款 Java 开源项目!【附源码】
  8. 大型网站技术架构的原理与分析
  9. 云智慧获 D 轮数 2500 万美元投资:全力推动智能运维落地
  10. 世界读书日,给你们送大福利!