设为首页 收藏本站
查看: 1946|回复: 0

[经验分享] 使用Docker-compose编排容器

[复制链接]

尚未签到

发表于 2017-12-6 06:06:12 | 显示全部楼层 |阅读模式
  在《Docker学习实践》中,我们使用了5个容器,3个使用已有镜像,两个使用的dockerfile构建的镜像,一个个启动很麻烦。今天我们使用Docker集群管理三剑客之一的Docker-compose来编排容器。
  Compose是Docker集群管理的工具。你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,它会自动解析容器依赖关系,下载镜像,启动应用。

安装Docker和Compose



# 安装docker
yum install docker -y
# 安装compose
yum install python-pip -y
pip install -U docker-compose
使用compose
  我们还是部署django应用,把之前的命令拿过来



# 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文件还是原来的不变。
  首先,要将上面的命令转换成docker-compose.yml文件
  yaml文件语法:



image 使用的镜像
build 指定Dockerfile构建
command 启动执行命令
links 链接其他容器   
ports 端口映射
expose 暴露端口
volumes 挂载路径
volumes_from 从容器挂载
environment 环境变量
  很容易就能转换过来。



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
  开始是容器名称,下面是容器配置,注意空两格,使用短线再空一格。这样就组成了应用的完整配置。目录结构:
DSC0000.png

  下一步,就是执行docker-compose up -d启动应用。先下载镜像:
DSC0001.png

DSC0002.png

DSC0003.png

DSC0004.png

  创建容器:
DSC0005.png

  使用docker-compose ps 查看容器:
DSC0006.png

  访问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
DSC0007.png

  成功就可以正常访问了。现在我们的应用完全可以一键启动了。
  下面学习一下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:
DSC0008.png

  重启,使用docker-compose restart:
DSC0009.png

DSC00010.png

  注意 DSC00011.png 这是容器名,可以用docker命令操作,单个操作。 DSC00012.png 这个是服务名,使用docker-compose命令操作,多个一起操作。例如:
DSC00013.png

  其他以后再试

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-421011-1-1.html 上篇帖子: 镜像命名的最佳实践 下篇帖子: 45、Docker 加 tensorflow的机器学习入门初步
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表