Docker:实战操作--Docker Compose

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lzx_victory/article/details/82761147

DockerCompose是用来定义以及运行多容器应用的工具.
Docker官方推荐使用DockerCompose来构建开发环境的服务,不推荐在生产环境当中使用.
当前微服务架构盛行,我们不可能为每个依赖的服务搭建一套环境,创建容器以及镜像.当我们迫切的需要一个工具解决我们开发环境的复杂性,达到一键运行的目的,因此DockerCompose就出现了.
本文是接着上篇文章的例子进行操作,请最好阅读完Docker:实战操作–安装与基础操作来保证你对本章的理解.

Docker Compose 安装

直接通过下载安装:

sudo -i #获取sudo权限防止curl命令写入权限不足
curl -L https://github.com/docker/compose/releases/download/1.3.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Docker Compose 重要配置参数解析

docker-compose.yml文件是用来构建服务的配置文件.
docker-compose.yml文件中定义的每个服务必须要指定imagebuild的参数.

参数解析

1.image:镜像的名称,标签或者部分ID
2.build:包含一个Dockerfile构建的目录.
3.command:重写执行命令.
4.links:链接服务中的容器到另一个容器
5.external_links:链接外部容器(不在该docker-compose.yml配置内或不是Compose启动的容器)
6.extra_hosts:IP域名映射
7.ports:端口映射到主机
8.volumes:挂载点映射
9.volumes_from:卷积映射从另一个容器或服务的映射,形式与上一边所讲的一致
10.environment:定义一些系统环境变量
11.extends:主要是用于依赖文件关系的继承
common.yml:

webapp:
  build: ./webapp
  environment:
    - DEBUG=false
    - SEND_EMAILS=false

development.yml

web:
  #指明需要继承
  extends:
  	#文件所在路径
    file: common.yml
	#服务名称
    service: webapp	
  ports:
    - "8000:8000"
  links:
    - db
  #覆盖重写 
  environment:
    - DEBUG=true
db:
  image: postgre

12.net:指定网络连接规则
13.labels:使用字典或者数组定义源数据,可以数组也可以字典,防止标签冲突,推荐使用域名反写加上key

labels:
  - "com.example.description=Accounting webapp"

#或者

labels:
  com.example.description: "Accounting webapp"

Docker Compose运行

定义DockerCompse配置文件

接着上篇文章的例子,定义如下文件.

#定义web服务
web:
	#定义构建的目录,该目录下有Dockerfile,app.py,requirements三个文件
    build: ~/pt
	#定义端口映射
    ports:
    - "5000:80"
    #将当前的目录挂载到容器当中,方便代码修改后直接访问容器观察效果
    volumes:
    - .:/code
    links:
    - redis
#定义redis服务  
redis:
	#从镜像拉取redis服务
    image: redis

自动构建以及运行

运行如下命令会自动构建定义的服务:拉取redis镜像以及根据build目录读Dockerfile定义的规则构建服务.
-d参数标明需要检测是否自动创建,如果已经创建不会再创建.

sudo docker-compose -d up 

其它操作

当操作Compose运行了服务后,我们可以进行扩容:

sudo docker-compose scale web=2

上述例子我们将web扩容为2个.

有时候我们需要运行Compose配置文件当中单独的一个服务.
例如我们单独运行web服务不运行redis服务.

sudo docker-compose run --no-deps web

除此之外还有一些常用的操作,ps(列出容器),restart,kill,build(只构建),up(创建并运行),rm(删除停止的容器),kill(停止容器).

猜你喜欢

转载自blog.csdn.net/lzx_victory/article/details/82761147