Docker 体验及总结(5) - Compose
2018-08-22 本文已影响22人
千反田爱瑠爱好者
https://www.docker.com/
Docker Compose
方便本地部署开发环境,但不适用于生产环境。
多容器App:
- 要从Dockerfile build image或者DockerHub拉取image
- 要创建多个Container
- 要管理多个Container
使用Docker Compose实现批处理:
- 通过yml配置文件定义多容器docker应用
- 通过一条命令就可以根据yml文件定义创建或者管理容器
Linux环境下需要单独安装:https://docs.docker.com/compose/install/#install-compose
示例:docker-compose.yml
vim docker-compose.yml
version: '3'
services:
wordpress:
image: wordpress
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_PASSWORD: root
networks:
- my-bridge
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
volumes:
- mysql-data:/var/lib/mysql
networks:
- my-bridge
volumes:
mysql-data:
networks:
my-bridge:
driver: bridge
docker-compose build # 先建立Images,提高启动速度
docker-compose up # 调试模式,-d后台执行
常用命令
docker-compose --version
docker-compose -f docker-compose.yml up
docker-compose down # 删除容器
docler-compose stop
docker-compose start
docker-compose ps
docker-compose images
docker-compose exec xxx bash # 在docker中执行命令,注意docker-compose下dodker的名称与docker本身的名称不同
Service
- 一个service代表一个Container,可以从DockerHub或者从本地Dockerfile build出来的image创建;
- Service的启动类似Docker run,可以给其指定network和volumn。
Scale
- 扩展App实例,结合HAProxy、Nginx可实现负载均衡(当yml文件中指定了服务的端口时会因端口已占用报错);
- 不能部署在多台宿主机上。
docker-compose up --scale service_name=3 -d
示例:
version: "3"
services:
redis:
image: redis
web:
build:
context: .
dockerfile: Dockerfile
environment:
REDIS_HOST: redis
lb:
image: dockercloud/haproxy
links:
- web
ports:
- 8080:80
volumes:
- /var/run/docker.sock:/var/run/docker.sock