Docker Compose

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

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

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

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

Compose下载安装

  • 从 官方GitHub Release处直接下载编译好的二进制文件
bash 复制代码
$ 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安装
bash 复制代码
$ sudo pip install -U docker-compose
  • bash 补全命令
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内容如下:
bash 复制代码
FROM ubuntu
WORKDIR /
COPY bookmanger /bin/
COPY view /view
CMD ["bookmanger"]

手动部署

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

bash 复制代码
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容器手动部署

bash 复制代码
docker run --name bms -d -p 8999:8999 -ip 172.17.0.2 -it ubuntu:bms

使用compose部署

docker-compose.yml文件如下:

bash 复制代码
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目录结构

bash 复制代码
composebms/
├── bookmanger
│   ├── bookmanger
│   ├── Dockerfile
│   └── view
│       ├── list.html
│       └── new.html
├── db
│   ├── data
│   │   └── sql_test
│   │       └── book.ibd
│   └──  tables.sql
└── docker-compose.yml
相关推荐
梁萌10 小时前
Linux安装BiliNote
linux·运维·服务器·docker·bilinote
行思理11 小时前
docker新手教程
运维·docker·容器
莫陌尛.15 小时前
docker安装中间件
docker·中间件·容器
掘根16 小时前
【Docker】docker run
云原生·eureka
tuokuac16 小时前
虚拟机挂起,重启后主机连接不上虚拟机docker中的mysql?(docker网络状态假死)
网络·mysql·docker
集智飞行18 小时前
docker login方法
运维·docker·容器
不开心就吐槽20 小时前
docker-compose方式快速安装MySQL
运维·docker·容器
芥子沫20 小时前
Docker安装思源笔记&使用指南
笔记·docker·容器·思源笔记
行思理20 小时前
macos 下 docker使用方法 新手教程
macos·docker·容器
团儿.21 小时前
Docker Swarm:打造高效、可扩展的容器编排引擎,引领微服务新纪元(上)
docker·微服务·容器·docker-swarm集群