Docker Compose

单个主机中多个容器的编排,通过一个单独的docker-compose.yml模版文件(YAML格式)来定义一组相关联的应用容器。

Compose中有两个重要的个概念:

  • 服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目(project):由一组关联的应用容器组成的一个完整业务单元,在 dockercompose.yml 文件中定义。

Compose 项目由 Python 编写,实现上调用了Docker服务提供的API来对容器进行管理。

Compose下载安装

  • 从 官方GitHub Release处直接下载编译好的二进制文件
$ sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

$ sudo chmod +x /usr/local/bin/docker-compose
  • 使用pip安装,如果是x86_64架构linux建议使用下载二进制的方式,如果是ARM架构的系统使用pip安装
$ sudo pip install -U docker-compose
  • bash 补全命令
$ curl -L https://raw.githubusercontent.com/docker/compose/1.8.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
  • 卸载

        如果是二进制包方式安装的,直接删除二进制文件即可,卸载命令:sudo rm /usr/local/bin/docker-compose

        如果是通过匹配安装的,卸载命令:sudo pip uninstall docker-compos

使用实例

功能说明

启动一个书籍管理系统的web服务,可进行数据信息的增加和删除,二进制文件为bookmanger。数据存在mysql中。

在容器中部署,启动两个容器,一个运行bookmanger后端程序,一个容器运行mysql数据库。

部署流程

  • 下载ubuntu和mysql镜像
  • go代码编译:golang镜像最新的版本是1.7,所以不能使用镜像编译,直接在本地编译。
  • ubuntu镜像制作:Dockerfile内容如下:
FROM ubuntu
WORKDIR /
COPY bookmanger /bin/
COPY view /view
CMD ["bookmanger"]

手动部署

mysql容器手动部署,设置root密码为password,创建名为sql_test的数据库,创建一个名为myuser的用户,并设置用户密码为userpassword。    

docker run -d -p 3306 --name db -v ./db/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=sql_test  \
    -e MYSQL_USER=myuser -e MYSQL_PASSWORD=userpassword mysql

docker exec -it db mysql -uroot -p

bms容器手动部署

docker run --name bms -d -p 8999:8999 -ip 172.17.0.2 -it ubuntu:bms

使用compose部署

docker-compose.yml文件如下:

version: "3"
services:
  db:
     image: mysql
     ports:
       - "3306:3306"
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: password
       MYSQL_DATABASE: sql_test
       MYSQL_USER: myuser
       MYSQL_PASSWORD: userpassword
     volumes:
       - ./db/data:/var/lib/mysql

  bms:
     build: bookmanger/
     command: bookmanger
     ports:
       - "8999:8999"
     depends_on:
       - db
     restart: always
     links:
       - db
       - db:database

compose目录结构

composebms/
├── bookmanger
│   ├── bookmanger
│   ├── Dockerfile
│   └── view
│       ├── list.html
│       └── new.html
├── db
│   ├── data
│   │   └── sql_test
│   │       └── book.ibd
│   └──  tables.sql
└── docker-compose.yml

你可能感兴趣的:(云原生,docker,容器,云原生)