dockerswarm集群管理初步使用

dockerswarm集群管理初步使用

1. docker compose

官方编排项目之一,负责负责快速在集群中部署分布式应用。

Compose 中有两个重要的概念:

  • 服务 ( service ):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。

  • 项目 ( project ):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml文件中定义。

compose的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管

理。是用python编写的。

docker-compose —version 检查是否安装,本机macOS在安装docker的时候,已经默认安装好了。

docker-compose up 负责启动

docker-compose down则停止项目

参考之前的例子,之前oralce和vdmp容器的启动命令如下:

### oracle 容器启动
docker stop oracle
docker rm oracle
docker run --name oracle -d -p 1521:1521 -it -v /Users/suitm/Persion/DockerFile/oracle_data/datafile:/u01/app/oracle/oradata/XE -v /Users/suitm/Persion/DockerFile/oracle_data/redo:/u01/app/oracle/fast_recovery_area/XE alexeiled/docker-oracle-xe-11g /start.sh

### stdvdmp 容器启动
docker stop stdvdmp
docker rm stdvdmp
docker run --name stdvdmp -d -p 9999:9999 -it -v /Users/suitm/Persion/DockerFile/xip:/home/xip stdxip vdmp.sh

修改成docker-compose作为一个项目启动,yml配置文件如下:

version: "3"

#服务列表
services:
  #服务名1
  db: 
    #依赖镜像
    image: alexeiled/docker-oracle-xe-11g
    #端口号
    ports:
      - "1521:1521"
    #启动命令
    command: /start.sh
    #挂载文件
    volumes:
      - /Users/suitm/Persion/DockerFile/oracle_data/datafile:/u01/app/oracle/oradata/XE
      - /Users/suitm/Persion/DockerFile/oracle_data/redo:/u01/app/oracle/fast_recovery_area/XE

  #服务名2
  xip_vdmp:
    #依赖镜像
    image: stdxip
    #端口号
    ports:
      - "9999:9999"
    command: vdmp.sh
    #依赖的服务
    depends_on:
      - db
    #挂载文件
    volumes:
      - /Users/suitm/Persion/DockerFile/xip:/home/xip
    #模拟终端
    tty: true
    #允许标准输入(-it命令,只有加了这两个,bash命令才能阻塞,否则直接退出)
    stdin_open: true
    #用户
#    user: xip

yml文件放在compose目录下,执行如下命令:

/Users/suitm/binsh/swarm/compose>docker-compose up
compose_db_1 is up-to-date
Recreating compose_xip_vdmp_1 ... done
Attaching to compose_db_1, compose_xip_vdmp_1
db_1        | Starting Oracle Net Listener.
db_1        | Starting Oracle Database 11g Express Edition instance.
db_1        |
db_1        | Database init...
db_1        | No volume sql script, ignoring /etc/entrypoint-initdb.d/*
db_1        |
db_1        | End init.
db_1        | Oracle started successfully!
db_1        | Starting Oracle Net Listener.
db_1        | Starting Oracle Database 11g Express Edition instance.
db_1        |
db_1        | Database init...
db_1        | No volume sql script, ignoring /etc/entrypoint-initdb.d/*
db_1        |
db_1        | End init.
db_1        | Oracle started successfully!
db_1        | Starting Oracle Net Listener.
db_1        | Starting Oracle Database 11g Express Edition instance.
db_1        |
db_1        | Database init...
db_1        | No volume sql script, ignoring /etc/entrypoint-initdb.d/*
db_1        |
db_1        | End init.
db_1        | Oracle started successfully!
xip_vdmp_1  |
xip_vdmp_1  | --->���������ɹ���ʼ����!

启动成功。一般来说,是加 -d命令后台启动:

/Users/suitm/binsh/swarm/compose>docker-compose up -d
compose_db_1 is up-to-date
compose_xip_vdmp_1 is up-to-date
/Users/suitm/binsh/swarm/compose>

查看正在执行的容器如下:

/Users/suitm/binsh/swarm/compose>docker container ls
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                              NAMES
cc7ecc0352ce        stdxip                           "/docker_start.sh st…"   6 minutes ago       Up 6 minutes        0.0.0.0:9999->9999/tcp             compose_xip_vdmp_1
b08e616f1bed        alexeiled/docker-oracle-xe-11g   "/start.sh"              29 minutes ago      Up 16 minutes       0.0.0.0:1521->1521/tcp, 8080/tcp   compose_db_1

停止容器:

/Users/suitm/binsh/swarm/compose>docker-compose down 
Stopping compose_xip_vdmp_1 ... done
Stopping compose_db_1       ...
Stopping compose_db_1       ... done
Removing compose_xip_vdmp_1 ... done
Removing compose_db_1       ... done
Removing network compose_default
/Users/suitm/binsh/swarm/compose>

2. docker-machine

是官方项目之一,负责快速在各个平台安装docker环境。

查看是否安装和版本:

/Users/suitm/binsh/swarm/compose>docker-machine -v
docker-machine version 0.14.0, build 89b8332