第三口docker的感觉——docker compose
我们为什么需要docker compose呢?
现在大行其道的微服务架构,是由多个service组成的,在web应用中数据库也是必不可少的,那么这些组件就成了我一个项目的标配,那么我们如果把这一组映射到docker世界里去呢?docker-compose就可以作为这一组的体现。总结起来docker compose可以给我们带来的好处是:
- 避免了我们手动创建多个 dockerfile,多个image,多个容器。减少了我们的工作量。
- 启动停止删除可以被一次处理。
什么是docker compose呢?
其实就是一个docker的批处理工具。通过yml文件定义多容器的docker应用。
通过一条命令可以通过yml定义创建启动管理同属于一个"group"的容器。
Docker-compose.yml:
- Services
- Networks
- Volumes
Services:
一个Services就相当于一个container,这个container可以从docker hub获取或者是dockerfile进行构建
我们在service中可以指定network和volume。
我们之前是这样启动docker 容器的如下:
docker run --network my-network -v postgre-data:/var/lib/postgresql/data postgres:9.4
这里启动了一个postgresql的数据库,那如果在docker compose中我们应该如何做呢?
services: postgre-db: image: postgresql:9.4 volume: - "postgre-data:/var/lib/postgresql/data" network: - my-network
我们很明显的可以看出来他们之间一个对应的关系。
service它的直接孩子指定的是容器的名称,然后他的孩子分别是image,volume,network这些。
⚠️ 这是从docker hub获取下来的image,如果是通过自己的dockerfile该如何写呢?
services: my-docker: build: ./my-docker networks: - my-network
那很多人会奇怪了,这个"postgre-data"和"my-network"是从哪里来的呢?别急,我们看一下完整的docker compose的yaml:
services: postgre-db: image: postgresql:9.4 volume: - "postgre-data:/var/lib/postgresql/data" network: - my-network volumes: postgre-data networks: my-network: driver: briage
这下子水落石出了,和services同级的地方,有定义volumes和networks。折合前面举例子的docker compose三要素正好对应上了。
更详细的docker-compose yaml文件的属性,可以参考https://docs.docker.com/compose/compose-file/
Docker compse 常用命令
Docker compose启动的命令为
docker-compose up
Docker compose 查看当前compose中运行的container
docker-compose ls
Docker compose 停掉所有运行的container
docker-compose stop
Docker compose 移除所有停止的container
docker-compse rm
Docker compose 停止并且移除servies,networks,volumes
docker-compose down
⚠️这个命令不会删除本地的images。
其他更多详细的内容命令,请查看https://docs.docker.com/compose/reference/
或者使用docker-compose - -help 查看。
Docker compose的拓展
我前面有提到过docker compose就是为了微服务的理念而生的,微服务只是从业务逻辑上的一种拆分。那如果负载在高的情况下,我们怎么才能抵抗住这种压力呢?那就得使用load balance(负载均衡)了。负载均衡在docker中也是有所体现的。
我们可以使用如下命令进行扩展:
#SERVICE 指的是你在docker compose中定义的名字,NUM指定的是你想要的数量 docker-compose up --scale SERVICE=NUM
这样就可以对自己的服务进行自由的伸缩。
⚠️前提是我们需要在我们的compose中安排一个loadbalance
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
docker中使用源码方式搭建SRS流媒体服务
一、背景 搭建流媒体服务的方式一般会采用nginx+rtmp和srs服务两种,前者是nginx加上插件所用,而后者是专门为了为了流媒体而生,在这一节中我们将从头搭建srs流媒体服务 二. 运行环境 为了此服务后期部署到生产环境中,笔者采用docker方式来搭建此服务,docker目前属于基础性软件了,在本文中就不再细述如何安装,大家可以去www.docker.com下载安装包安装即可;一般正式的生产环境中我们通常使用Linux系统作为服务器,所以我本文中同样使用了Linux系统,不过我选择了我比较喜欢的Ubuntu系统来搭建,其他Linux系统搭建流程基本一致。 2.1 docker容器 我们首先需要运行一个Ubuntu的容器,在运行容器之前,我们需要想好运行容器的一些参数,比如说我们需要搭建rtmp服务,rtmp默认端口是1935,这个时候我们就需要将此端口映射出去;再比如说安装nginx后需要进行验证Nginx是否安装完成,需要开放一个http端口,那么同样需要映射出去,但为了防止和宿主机的80端口产生冲突,这里我们使用8081端口替代80端口;最后服务搭建完成了,还需要播放视频,...
- 下一篇
学习 JAVA,有什么书籍推荐?学习的方法和过程是怎样的?
学了两年Java,对Java学习有一定心得,现在进了阿里,正好专心做Java,今天推荐给大家一些比较好的Java后端书籍。 书是读不完的,但是知识可以是自己的,选择适合你自己的书单,可能是最佳的解决方案。再次强调下,有些书籍是因为当时有项目需要用到这方面技术才需要看的,比如云计算和大数据相关的书籍,单纯的Java学习者可以忽略这方面的书籍,特此提醒。 晒一下我的书架吧,基本上把我两年多时间买的书都摆上去了,确实有很多没机会看完的书,但是大部分都是不错的书,相比于这个书架上的书,我推荐的书单已经算是很少了呢。 Java开发工程师一般负责后端开发,随着前后端的分离,越来越多的Java工程师需要往大后端方向发展。 今天我们就来介绍一下Java后端开发者的书单。 首先要感谢一下江南白衣大大的后端书架,让我在初学阶段读到了很多好书,直到现在都印象深刻。 我在两年的学习历程中看了很多的书,其中不乏XXX入门到精通,XXX王者归来,XXX指南什么的。 虽然这类书确实毛病很多,但是作为非科班的我来说,当时还是看的津津有味。直到后来我看到一些优秀的书籍,以及白衣哥的书架,我才逐渐认识到看一些精品书籍的好...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8
- Hadoop3单机部署,实现最简伪集群
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16