单个主机中多个容器的编排,通过一个单独的docker-compose.yml模版文件(YAML格式)来定义一组相关联的应用容器。
Compose中有两个重要的个概念:
Compose 项目由 Python 编写,实现上调用了Docker服务提供的API来对容器进行管理。
- $ 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
$ sudo pip install -U docker-compose
$ 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数据库。
- 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
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