在《Docker学习实践》中,咱们使用了5个容器,3个使用已有镜像,两个使用的dockerfile构建的镜像,一个个启动很麻烦。今天咱们使用Docker集群管理三剑客之一的Docker-compose来编排容器。html
Compose是Docker集群管理的工具。你能够在一个文件中定义一个多容器的应用,而后使用一条命令来启动你的应用,它会自动解析容器依赖关系,下载镜像,启动应用。python
# 安装docker yum install docker -y # 安装compose yum install python-pip -y pip install -U docker-compose
咱们仍是部署django应用,把以前的命令拿过来mysql
# mx_mysql docker run -d -p 3306:3306 --name mx_mysql -v $PWD/conf/:/etc/mysql/conf.d -v $PWD/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6 # mx_redis docker run -d -p 6379:6379 -v $PWD/data/redis:/data --name mx_redis redis:3.2 redis-server --appendonly yes # mx_nginx docker run -p 80:80 --name mx_nginx -v $PWD/online/conf/mx_nginx.conf:/etc/nginx/conf.d/mx_nginx.conf --volumes-from mx_online -d nginx # mx_online docker run -d -p 8000:8000 -v /root/online:/online --name mx_online django uwsgi --http :8000 -w online.wsgi -p 3 # mx_celery docker run -d -v /root/online:/online --name mx_celery --link mx_mysql:mysql --link mx_redis:redis django celery -A online worker -l info
Dockerfile文件仍是原来的不变。nginx
首先,要将上面的命令转换成docker-compose.yml文件web
yaml文件语法:redis
image 使用的镜像
build 指定Dockerfile构建
command 启动执行命令
links 连接其余容器
ports 端口映射
expose 暴露端口
volumes 挂载路径
volumes_from 从容器挂载
environment 环境变量
很容易就能转换过来。sql
mx_mysql: restart: always image: mysql:5.6 volumes: - /root/data/mysql:/var/lib/mysql - ./conf/:/etc/mysql/conf.d ports: - "3306:3306" environment: - MYSQL_DATABASE=online - MYSQL_ROOT_PASSWORD=123456 mx_redis: restart: always image: redis:3.2 volumes: - /root/data/redis:/data ports: - "6379:6379" command: redis-server --appendonly yes mx_nginx: restart: always image: nginx ports: - "80:80" volumes: - ./conf/mx_nginx.conf:/etc/nginx/conf.d/mx_nginx.conf volumes_from: - mx_online links: - mx_online:web mx_online: restart: always build: . expose: - "8000:8000" volumes: - .:/online links: - mx_mysql:mysql - mx_redis:redis command: uwsgi -s :8000 -w online.wsgi -p 3 mx_celery: restart: always build: . volumes_from: - mx_online links: - mx_mysql:mysql - mx_redis:redis command: celery -A online worker -l info
开始是容器名称,下面是容器配置,注意空两格,使用短线再空一格。这样就组成了应用的完整配置。目录结构:docker
下一步,就是执行docker-compose up -d启动应用。先下载镜像:数据库
建立容器:django
使用docker-compose ps 查看容器:
访问ip地址,显示503,说明咱们基本部署成功了,只是建数据库,没有建表。下面建立表:
docker-compose exec mx_online /usr/local/bin/python manage.py makemigrations
docker-compose exec mx_online /usr/local/bin/python manage.py migrate
成功就能够正常访问了。如今咱们的应用彻底能够一键启动了。
下面学习一下compose命令:
build 构建或重建服务
help 命令帮助
kill 杀掉容器
logs 显示容器的输出内容
port 打印绑定的开放端口
ps 显示容器
pull 拉取服务镜像
restart 重启服务
rm 删除中止的容器
run 运行一个一次性命令
scale 设置服务的容器数目
start 开启服务
stop 中止服务
up 建立并启动容器
咱们要使用的是docker-compose up -d启动应用。
docker-compose run 会再起一个新容器,要注意删除,使用docker-compose rm:
重启,使用docker-compose restart:
注意这是容器名,能够用docker命令操做,单个操做。
这个是服务名,使用docker-compose命令操做,多个一块儿操做。例如:
其余之后再试