相关动态
Docker三剑客之Docker-compose
2024-12-27 02:54

伸手摘星,即使一无所获,亦不致满手污泥

在实际的生产中,一般都是使用一个docker容器部署一个应用进程,这种情况下,当部署多个不同应用或者一个应用部署多个实例的时候,就要运行多个容器。多个容器协同工作需要一个管理者来管理他们,定义这些容器如何相互关联。compose 就是做这件事的。

compose、machine 和 swarm 是docker 原生提供的三大编排工具。简称docker三剑客。

官网地址

 

Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具,能够在 Docker 节点上,以单引擎模式(Single-Engine Mode)进行多容器应用的部署和管理

  • compose 使用 YAML 文件来定义多容器之间的关系(配置应用程序需要的所有服务,然后通过docker-compose up 命令执行一个YAML文件,就可以从 YML 文件配置中创建并启动所有服务,把完整的应用跑起来

  • 本质上, compose 把 YAML 文件解析成 docker 命令的参数,然后调用相应的 docker 命令行接口,基于 Docker 引擎 API 完成应用的部署,从而将应用以容器化的方式管理起来。

    compose 通过解析容器间的依赖关系顺序地启动容器。而容器间的依赖关系由 YAML 文件中的 links 标记指定

  • 下载

    • 可以从 Github 上下载它的二进制包来使用,最新发行的版本地址

        

      下载之后上传到服务器,通过mv或者cp 命令移动到指定文件中

       
    • 也可以通过命令以下载 Docker Compose 的指定版本

       
          

      上述命令是在GitHub会比较慢,可以提前下载或者使用下面的命令,高速安装 Docker Compose。

       
          

      要安装其他版本的 Compose,替换 v2.8.0即可。 /usr/local/bin/docker-compose 是下载存放的目录

      值得注意的是在官网中,已经发布了3个大版本,推荐使用2.x 和 3.x 版本,并且每个版本对应的Docker的版本在逛网中也有指出,按照需要进行下载即可

  • 授权

    上传之后需要对可执行权限应用于二进制文件

     
  • 创建软链

    软链类似Windows中的快捷方式,这一步可以不执行

     
  • 验证是否安装成功

    通过以下命令之一查看docker-compose的版本即可

      
  • 卸载docker-compose

    docker-compose卸载只需要删除二进制文件就可以了。

     

3.1 yml 文件组成简介

  • Docker Compose 使用 YAML 文件来定义多服务的应用。YAML 是 JSON 的一个子集,因此也可以使用JSON。

  • Docker Compose 默认使用文件名 docker-compose.yml。如果名字不是这个可以使用 -f 参数指定具体文件。

    Docker三剑客之Docker-compose

     
  • Docker Compose 的 YAML 文件包含 4 个一级 keyversion、services、networks、volumes

    • version

      version定义了 Compose 文件格式(主要是API)的版本,必须指定,位于文件的第一行

      注意,version 并非定义 Docker Compose 或 Docker 引擎的版本号

    • services

      用于定义不同的应用服务。Docker Compose 会将每个服务部署在各自的容器中

      比如有两个服务:eurekah和mysql ,就会写在services节点下

    • networks

      用于指引 Docker 创建新的网络。默认情况下,Docker Compose 会创建 bridge 网络

      bridge 网络一种单主机网络,只能够实现同一主机上容器的连接。也可以使用 driver 属性来指定不同的网络类型。

    • volumes

      用于指引 Docker 来创建新的数据卷卷

3.2 idea安装docker插件

idea高版本中已经安装docker插件,如果是低版本的idea,可以去下载安装docker插件

 
 

idea安装docker插件后,可以提示补全Dockerfile、docker-compose.yml文件大部分内容信息

此案例以Nginx 反向代理两个Tomcat为例,访问Nginx,以轮训的方式分别请求Tomcat1,Tomcat2。因此我们需要部署一个Nginx,两个Tomcat,最终通过docker-compose来启动这三个容器

  • 基础镜像

      
  • 试运行镜像

    先检查以下是否镜像是否可以正常启动

      

    启动的时候如果报以上的警告,说明IPv4转发已禁用。网络是行不通的,虽然容器启动了,但是外网无法访问,只需要门开只需要开启就可以了。

    • 开启转发配置

        
  • 在宿主机创建目录

     
  • 复制镜像文件

    将两个运行的容器的目录复制到宿主机

     
      

    这里复制镜像文件,只是为了后面做数据卷挂载用的,其实没有必要一定要cp,可以直接在上一步骤直接创建相应的nginx、webapps目录进行挂载就行,之所以这么做,是因为演示过程中实现对webapps下的index.jsp做一些修改,不然后面访问不好区分

  • 进入容器/退出容器

     

#进入容器/退出容器
docker exec -it tomcat sh
#退出容器
exit

 

等会使用docker-compose.yml启动

  • 修改Tomcat的启动页面

    这样就知道Tomcat是访问的那个tomcat1

      
  • 修改nginx.conf

      
  • nginx配置

     
  • 编辑docker-compose.yml

    当我们安装了docker插件之后,在编写docker-compose.yml的时候是有补全的

     

    docker-compose.yml还有很多的节点,因为这里用不上,就没有一一写上去,完整的节点信息可以关注我的公众号【星河之码】,回复【Docker-compose】获取。

  • 上传docker-compose.yml

    编写完docker-compose.yml之后,将其上传到服务器中,然后就可以通过docker-compose.yml来启动Nginx和tomcat

  • 启动服务

     
      

    由于我们的yml文件名是默认的docker-compose.yml,所以直接在docker-compose.yml所在目录下执行以上命令即可,如果不是这个名字,则需要用-f来指定启动的文件名 docker-compose up -f aaaa.yml

  • 查看服务日志

     

    查看Nginx发现还真有一个报错

    这个是因为主机没有开启Ipv6,虽然不影响启动,但是如果想吧这个去掉也很简单,修改一下Nginx的配置就可以了

      
  • 浏览器访问

     

    访问Nginx会以轮询的方式请求两个tomcat,如下

  • 启动服务

     
  • 停止服务

     
  • 列出所有运行容器

     
  • 查看服务日志

     
  • 构建或者重新构建服务

     
  • 启动服务

     
  • 重启服务

     
  • 停止已运行的服务

     
    以上就是本篇文章【Docker三剑客之Docker-compose】的全部内容了,欢迎阅览 ! 文章地址:http://ww.kub2b.com/news/13383.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 http://ww.kub2b.com/mobile/ , 查看更多   
最新文章
以“心”聚力,共铸电影辉煌
1905电影网专稿 4月10日至13日,电影频道节目中心在全国宣传干部学院(八大处校区)成功主办全国电影宣传骨干人才培训班(第一期
人人都需要一场1v4的恋爱
作者|谢明宏编辑|李春晖让人看得津津有味又醒世育人的爱情剧以几个“对手”为宜?这大概也和现实生活差不多,一个人千挑万选,两
一辆自动驾驶车需要几根天线?手机供应商「一辆自动驾驶车需要几根天线?」
未来,一辆车子究竟需要使用多少天线,才能具备自动驾驶的能力? 这可不是在开玩笑的!根据爱尔兰天线技术供应商——锐锋(Taogla
Use of Cookies and Other Tracking Technologies黑莓手机官网「Use of Cookies and Other Tracking Technologies」
Last Updated: January 1, 2023This notice describes the types of Cookies and Other Tracking Technologies (“Cookies”) th
nfc安卓手机怎么设置手机nfc功能在哪里「nfc安卓手机怎么设置」
NFC在安卓手机上的设置指南随着科技的不断进步,NFC(近场通讯)技术已经越来越普及。许多安卓手机都配备了NFC功能,它不仅能够
关税加码,普通投资者如何应对?
4月7日,股市经历剧烈波动,上证指数单日下跌7.34%,交易资金触及止损后恐慌性出逃,但更值得关注的是股指期货端出现历史极端行
2025年北京市全民健身“社区杯”骑行系列活动第四站举办
4月15日,2025年北京市全民健身社区杯骑行系列活动暨京彩骑行第四站在北京经济技术开发区亦庄新城滨河森林公园举行。本次活动以
小米一键上锁神器轻松加密,安全守护您的隐私加密手机「小米一键上锁神器轻松加密,安全守护您的隐私」
在互联网时代,信息安全已经成为每个人都需要关注的问题。尤其是在智能手机普及的今天,我们的个人信息、聊天记录、支付密码等隐
午盘:美股涨幅扩大 道指涨逾300点美股手机新浪网「午盘:美股涨幅扩大 道指涨逾300点」
  北京时间6日凌晨,美股周二午盘涨幅扩大,道指上涨逾300点,纳指上涨1.3%。市场密切关注美国总统大选选情,以及本周的财报与
Isomorphic Labs获6亿美元,加速 AI 药物研发
金融时报消息,总部位于英国伦敦的 Isomorphic Labs 宣布完成6 亿美元融资。本次由 Thrive Capital 领投,现有投资者谷歌的