Docker-Compose服务编排

 

虽然我们上一篇通过Dockerfile可以很很方便的创建一个属于自己的镜像,但是我们不难发现通过docker run命令的方式启动多个容器的时候还是比较繁琐的,几十上百个微服务节点要通过docker run方式来启动的话,估计再好的运维人员也有敲错命令的时候。

这里我们再来研究一个容器编排方式DockerCompose。

 

 

centos下:

安装:

yum -y install epel-release

yum -y install python-pip

pip install docker-compose

docker-compose version

 

卸载:

rm /usr/local/bin/docker-compose

pip uninstall docker-compose

 

ubuntu下:

下载:

sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

授权:

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

检查:

docker-compose --version

 

DockerCompose编排命令:

 

image:指定镜像tag或者ID

image: redis

image: 19ce95cb7258

image: name/version

 

build:用来指定一个包含Dockerfile文件的路径,从这个命令可以看出DockerCompose也可以自动先创建镜像后创建容器。

build: ./dir

build:

  context:./dir

  dockerfile:dockerfileName

 args:

-key=value //这个对应dockerfile里的arg

 

links:用于连接另一个容器服务,同dockerrun –line,主要影响到容器中的网络

links:

  -db

  -db:mysql

  -web

自动在容器/etc/hosts文件里添加

192.168.226.133 db

192.168.226.133 mysql

192.168.226.134 web

 

ports:用于暴露端口,同docker run –p

ports:

-         “1111”

-         “1112:1113”

 

volumes:mysql等带存储而且重启后存储不能删除的这种需要使用,宿主机目录挂载到容器中。

volumes:

-         srcDir tagDir

 

environment:添加环境变量,同docker run –e

environment:

-         key=value

-         key=value

 

depends_on:指定容器间的依赖,控制容器的启动顺序。

 

extra_hosts:添加主机名映射,在容器/etc/hosts中添加内容

extra_hosts:

-         “hostname:192.168.226.135”

 

extends: docker-compose之间的集成,子文件可以覆盖父文件中的具体参数

extends:

  file:parent.yml

  service:subName

 

其它参数:

Net设置网络,Dns设置域名解析,CPU等

 

 

DockerCompose启动命令:

启动: docker-compose up

停止: docker-compose stop

重启: docker-compose restart

 

 

实战:

新建一个空白目录/eureka,在其中新建一个docker-compose.yml文件,开始书写前面eureka的容器管理文件。

 

version: '2'
services:
  eureka1:
    image: eureka:v1
    ports:
      - '1111:1111'
    environment:
      - spring.profiles.active=peer1
  eureka2:
    image: eureka:v1
    ports:
      - '1112:1112'
    environment:
      - spring.profiles.active=peer2

 

在/eureka下执行启动命令:docker-compose up

Docker-Compose服务编排_第1张图片

然后chrome浏览器测试下,成功了。

 

注意docker-compose.yml第一个属性version不能乱定义,我开始理解错了以为是我自定义的,报了如下错误,后来搞明白是docker-compose的版本号。

 

 

 

你可能感兴趣的:(Docker)