使用Docker Compose部署命令

以下内容来自于《深入浅出Docker》第九章内容,但是发布的时候选择翻译或者转载需要上链接,很麻烦,就直接选择原创了。

DC是一个基于Docker引擎进行安装的Python工具,可以使用户在一个声明式的配置文件中定义一个多容器的应用,即一个应用可以拆分成不同的功能部分,部署在多个容器中,但这些容器位于同一个主机上。

先说一下DC的安装吧,很简单,在官网扒拉的,就三条命令,正确返回版本值表示安装成功:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

但是有的时候linux连接github太慢了导致安装失败,所以备用办法是,直接用

pip install docker-compose

这个命令最好在root权限下执行,不然会报错,我的是这样。

安装好了工具之后,就来看看怎么用。

首先看一下DC的文件,Docker Compose通过一个声明式的配置文件描述整个应用,使用YAML文件定义多服务的应用,YAML是JSON的一个子集,因此也可以使用JSON;默认使用docker-compose.yml,可以使用-f参数指定具体文件。文件的格式是典型的key-value格式,示例文件如下:

version: "3.5"
services:
    web-fe:
      build: .
      command: python app.py
      ports:
        - target: 5000
          published: 5000
      networks:
        - counter-net
      volumes:
        - type: volume
          source: counter-vol
          target: /code
    redis:
      image: "redis:alpine"
      networks:
        counter-net:
networks:
    counter-net:
volumes:
    counter-vol:
          

文件第一行是version,是必须指定的,定义了Compose文件格式(主要是API)的版本,建议使用最新版本

services用于定义不同的应用服务,DC会将每个服务部署在各自的容器中,本实例中定义了两个服务,web-fe和redis,因此会部署两个容器,web-fe的服务定义中, 

    build: .指定docker基于当前目录下Dockerfile中定义的指令来构建一个新镜像,该镜像用于启动该服务的容器

    command:python app.py 指定Docker在容器中执行名为app.py的Python脚本作为主程序。

    ports: 指定Docker将容器内(-target)的5000端口映射到主机(published)的5000端口,这意味着发到Docker主机5000端口的流量会被转发到容器的5000端口,容

    器中的应用监听5000端口。

    networks: 使得Docker可以将服务连接到指定的网络上,这个网络应该是已经存在的,或者是在networks中定义的网络。对于overlay网络来说,还需要定义一个

    attachable标志,这样独立的容器才可以连接上它。

    volumes:指定Docker将counter-vol卷(source:)挂载到容器内的/code(target:)。counter-vol卷应该是已经存在的,或者在文件下方的volumes中定义的。

redis服务的定义相对比较简单:

    image: "redis:alpine"使得docker基于redis:alpine镜像启动一个独立的名为redis的容器,这个镜像从dockerhub上面被拉取下来。

    networks: 配置redis容器连接到 counter-net网络

由于两个服务都连接到 counter-net网络,因此它们可以通过名称解析到对方的地址了。

networks用于指引Docker创建新的网络,默认情况下,DC会创建bridge网络,这是单主机网络,只能实现同一主机容器的连接,可以使用driver属性指定不同网络类型。

volumes用于指引Docker来创建新的卷。    

接下来进行实际演示:            

在github上面拉取或者直接下载zip压缩包,将其解压后得到包含源码的文件夹,进入该文件夹,运行

docker-compose up &

&意味着在前端运行,运行后会把命令窗口返回给主机,而且也可以在命令行窗口看到程序运行时的日志,也可以添加-f参数指定yml的文件名,-d代表后台运行。运行后

可以在浏览器输入docker主机地址:5000,就可以看到网页了。

docker-compose down

关闭正在运行的容器,但是镜像和卷并不会被删除。

就记录这么多吧,接下来是docker swarm了。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值