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

[经验分享] Docker Compose 部署服务

[复制链接]

尚未签到

发表于 2019-2-21 10:05:10 | 显示全部楼层 |阅读模式
  [toc]

Docker Compose 部署服务

需求分析:

假如现在我们手里有很多容器,每个容器对应每个服务,有nginx容器,redis容器,mysql容器等。现在我们需要批量化的去管理,批量启动,停止,重启等操作!

docker compose可以方便我们快捷高效地管理容器的启动、停止、重启等操作,它类似于linux下的shell脚本,基于yaml语法,在该文件里我们可以描述应用的架构,比如用什么镜像、数据卷、网络模式、监听端口等信息。我们可以在一个compose文件中定义一个多容器的应用(比如jumpserver),然后通过该compose来启动这个应用。

安装compose方法如下
  下载的文件放在/usr/local/bin/下方便启动使用

curl -L https://github.com/docker/compose/releases/download/1.17.0-rc1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod 755 !$
docker-compose version 查看版本信息
Compose区分Version 1和Version 2(Compose 1.6.0+,Docker Engine 1.10.0+)。

Version 2支持更多的指令。Version 1没有声明版本默认是"version 1"。Version 1将来会被弃用。

[root@xavi ~]# docker-compose version
-bash: /usr/local/bin/docker-compose: 权限不够
[root@xavi ~]# chmod 777 /usr/local/bin/docker-compose
[root@xavi ~]# docker-compose version
docker-compose version 1.17.0-rc1, build a0f95af
docker-py version: 2.5.1
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t  3 May 2016
定义一个docker compose 管理器

[root@xavi ~]# vim docker-compose.yml
version: "2"
services:
app1:
image: centos6_x64
ports:
- "8080:80"
networks:
- "net1"
volumes: //数据卷
- /data/:/data
app2:
image: centos_nginx_n
networks:
- "net2"
volumes:
- /data/:/data1
entrypoint: tail -f /etc/passwd
networks:
net1:
driver: bridge
net2:
driver: bridge
  详解:

version: "2"    //使用2版本
services:       //相关容器或者镜像操作
app1:         //app1对应的是容器1的信息
image: centos     //images的名字,必须是已经存在的镜像
ports:          //映射端口
- "8080:80"       //映射宿主机8080对应容器的80端口
networks:       //网络(默认是bridge模式)
- "net1"      //下面定义的net1(要是需要使用pipwork怎么办? 定义none即可)
volumes:        //-v的参数指定
- /data/:/data        //目录映射,本地的data目录和容器的目录映射
app2:         //定义第2个容器信息
image: centos_nginx //docker images中已经存在的images
networks:
- "net2"
volumes:
- /data/:/data1
entrypoint: tail -f /etc/passwd     //还是老问题BUG 为了不让执行后关闭,我们使用这条命令
networks:
net1:     //如上定义的
driver: bridge      //定义网络模式
net2:
driver: bridge
  检查测试:启动容器

[root@xavi ~]# docker-compose up -d
Creating network "root_net2" with driver "bridge"
Creating network "root_net1" with driver "bridge"
Pulling app2 (centos_nginx_n:latest)...
ERROR: pull access denied for centos_nginx_n, repository does not exist or may require 'docker login'
  报错,镜像不存在,修改元编辑文件


[root@xavi ~]# docker-compose up -d
Creating root_app2_1 ...
Creating root_app1_1 ...
Creating root_app2_1
Creating root_app1_1 ... done
查看docker-compose 帮助

docker-compose --help

  关于docker-compose语法的参考文档 http://www.web3.xin/index/article/182.html

[root@xavi ~]# docker-compose ps
Name             Command         State    Ports
---------------------------------------------------
root_app1_1   /bin/bash             Exit 0         
root_app2_1   tail -f /etc/passwd   Up       80/tcp
  定义一个docker compose 管理器,也就是编辑yml文件,
可以把LNMP的服务nginx,php,mysql分三个容器出来,


  nginx下的links:做了别名,方便访问php






运维网声明 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-675200-1-1.html 上篇帖子: Docker 配置安装Dockerfile 下篇帖子: docker容器跨服务器的迁移方式export和save
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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