博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker学习笔记 - Docker Compose
阅读量:5774 次
发布时间:2019-06-18

本文共 2877 字,大约阅读时间需要 9 分钟。

一、概念

Docker Compose 用于定义运行使用多个容器的应用,可以一条命令启动应用(多个容器)。

使用Docker Compose 的步骤:

  1. 定义容器 Dockerfile
  2. 定义应用的各个服务 docker-compose.yml
  3. 启动应用 docker-compose up
     

二、安装

Note that Compose 1.8.0 requires Docker Engine 1.10.0 or later for version 2 of the Compose File format, and Docker Engine 1.9.1 or later for version 1.

# curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose# chmod +x /usr/local/bin/docker-compose

也可以用pip或官网的run.sh脚本安装

安装后确认

# docker-compose --version

三、运行

1、创建一个Python应用

      使用Flask,将数值记入Redis

1.1 建立一个python应用目录和文件

# mkdir python# cd python# vi app.py from flask import Flaskfrom redis import Redisapp = Flask(__name__)redis = Redis(host='redis', port=6379)@app.route('/')def hello():    redis.incr('hits')    return 'Hello World! I have been seen %s times.' % redis.get('hits')if __name__ == "__main__":    app.run(host="0.0.0.0", debug=True)# vi requirements.txt flaskredis

1.2 创建 Dockerfile

在同一目录下,创建Dockerfile

# vi Dockerfile FROM python:2.7ADD . /codeWORKDIR /codeRUN pip install -r requirements.txtCMD python app.py

对上面的Dockerfile做一下简单说明:

  • 容器使用Python 2.7的镜像
  • 将当前目录下文件拷贝到容器内/code
  • 指定工作目录为/code
  • 安装python需要的库:flask, redis
  • 容器执行命令 python app.py

1.3 创建编排脚本

在同一目录下,创建 docker-compose.yml

# cat docker-compose.yml version: '2'services:  web:    build: .    ports:     - "5000:5000"    volumes:     - .:/code    depends_on:     - redis  redis:    image: redis

对上面的编排脚本做一下简单说明:

  • 这个应用定义了两个服务:web, redis
  • web容器通过当前路径下的Dockerfile生成
  • web容器内的5000端口映射到主机的5000端口
  • 将当前目录挂载到web容器内/code
  • web容器依赖于redis容器
  • redis容器从Docker Hub获取镜像

1.4 启动应用

会执行编排脚本,分别制作和抓取web,redis镜像,启动容器

# docker-compose up

1.5 访问应用

 

四、命令

1、daemon模式启动/停止

# docker-compose up -d
# docker-compose stop

2 查看信息

# docker-compose ps

3 对容器执行命令(一次)

#docker-compose run services cmd

例如:查看web容器环境变量

# docker-compose run web env

五、例子

1、例一 - docker-compose.yml

version: '2'services:  web:    image: dockercloud/hello-world    ports:      - 8080    networks:      - front-tier      - back-tier  redis:    image: redis    links:      - web    networks:      - back-tier  lb:    image: dockercloud/haproxy    ports:      - 80:80    links:      - web    networks:      - front-tier      - back-tier    volumes:      - /var/run/docker.sock:/var/run/docker.sock networks:  front-tier:    driver: bridge  back-tier:driver: bridge

2、例二 - docker-compose.yml

# cat docker-compose.yml version: '2'services:  db:    image: mysql:5.7    volumes:      - "./.data/db:/var/lib/mysql"    restart: always    environment:      MYSQL_ROOT_PASSWORD: wordpress      MYSQL_DATABASE: wordpress      MYSQL_USER: wordpress      MYSQL_PASSWORD: wordpress  wordpress:    depends_on:      - db    image: wordpress:latest    links:      - db    ports:      - "8000:80"    restart: always    environment:      WORDPRESS_DB_HOST: db:3306      WORDPRESS_DB_PASSWORD: wordpress

3、例三 - docker-compose.yml

 

转载地址:http://lbaux.baihongyu.com/

你可能感兴趣的文章
调用约定
查看>>
【转】ROS之topic和service通信比较
查看>>
[转]Linux 线程实现机制分析 Linux 线程实现机制分析 Linux 线程模型的比较:LinuxThreads 和 NPTL...
查看>>
lesson7:java线程池
查看>>
【2019年OCP新题】OCP题库更新出现大量新题-11
查看>>
N-Queens
查看>>
mysql允许远程连接
查看>>
PHP工厂模式的好处
查看>>
一道阿里笔试题
查看>>
【Android游戏开发之八】游戏中添加音频-详解MediaPlayer与SoundPoo!并讲解两者的区别和游戏中的用途!...
查看>>
Redis -- 数据类型小结
查看>>
数据库设计原则
查看>>
python3笔记<二> List
查看>>
ABP集成WIF实现单点登录
查看>>
模拟实现链栈
查看>>
条款9:绝不在构造和析构过程中调用virtual函数
查看>>
day8 socket编程CS模型完善错误处理
查看>>
Dzz任务板初版完成笔记-仿trello私有部署的一款轻量团队任务协作工具。
查看>>
线程基础8-quene讲解
查看>>
echarts - 使用echarts过程中遇到的问题(pending...)
查看>>