zoukankan      html  css  js  c++  java
  • 009.Docker Compose部署及基础使用

    一 Docker Compose概述

    Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用YAML文件来配置应用程序的服务。然后,使用单个命令,您可以从配置中创建并启动所有服务。
    Compose适用于所有环境:生产,登台,开发,测试以及CI工作流程。
    使用Compose基本上是一个三步过程:
    1. 在Dockerfile中定义您的应用程序环境,以便可以在任何地方进行再生产。
    2. 定义构成应用程序的服务,docker-compose.yml 以便它们可以在隔离环境中一起运行。
    3. 运行docker-compose up和Compose start并运行整个应用程序。
    一个docker-compose.yml格式示例如下::
      1 version: '3'
      2 services:
      3   web:
      4     build: .
      5     ports:
      6     - "5000:5000"
      7     volumes:
      8     - .:/code
      9     - logvolume01:/var/log
     10     links:
     11     - redis
     12   redis:
     13     image: redis
     14 volumes:
     15   logvolume01: {}
    Compose具有管理应用程序整个生命周期的命令:
    • 启动,停止和重建服务
    • 查看正在运行的服务的状态
    • 流式传输运行服务的日志输出
    • 在服务上运行一次性命令

    二 Docker Compose安装

    2.1 二进制下载安装

      1 root@docker01:~# sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
      2 root@docker01:~# sudo chmod +x /usr/local/bin/docker-compose
     

    2.2 pip安装(推荐)

      1 root@docker01:~# apt-get -y install python
      2 root@docker01:~# curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
      3 root@docker01:~# python get-pip.py			#安装PIP
      4 root@docker01:~# pip install docker-compose		#安装docker compose
      5 root@docker01:~# docker-compose version		#验证安装
     

    三 Docker Compose示例

    3.1 构建应用程序

      1 root@docker01:~# mkdir composetest			#创建Docker Compose目录
      2 root@docker01:~# cd composetest/
      3 root@docker01:~/composetest# vi app.py
     
    提示:使用Python构建一个简单应用,具体应用内容参考官方示例即可。
    https://docs.docker.com/compose/gettingstarted/#step-1-setup

    3.2 创建Dockerfile

      1 root@docker01:~/composetest# vi Dockerfile		#使用Dockerfile构建镜像
      2 FROM python:3.4-alpine
      3 RUN mkdir /root/.pip				#创建pip源配置目录
      4 ADD pip.conf /root/.pip/pip.conf			#将国内pip源添加至需要构建的镜像中
      5 ADD . /code
      6 WORKDIR /code
      7 RUN pip install -r requirements.txt			#根据文件列表使用pip安装
      8 CMD ["python", "app.py"]
     
    提示:以上Dockerfile相关命令参考《004.docker镜像管理》。
      1 root@docker01:~/composetest# vi requirements.txt	#创建安装软件列表文件
      2 flask
      3 redis
      4 root@docker01:~/composetest# vi pip.conf		#创建基于国内pip源的文件
      5 [global]
      6 index-url = https://mirrors.aliyun.com/pypi/simple/
      7 [install]
      8 trusted-host=mirrors.aliyun.com
     
    Dockerfile解释:
    • 从Python 3.4映像开始构建映像。
    • 创建pip配置目录。
    • 将国内pip源配置文件添加到/root/.pip/映像中的路径中。
    • 将当前目录添加.到/code映像中的路径中。
    • 将工作目录设置为/code。
    • 安装Python相关包。
    • 将容器的默认命令设置为python app.py。

    3.3 使用Docker Compose构建服务

      1 root@docker01:~/composetest# vi docker-compose.yml
      2 version: '3'
      3 services:
      4   web:
      5     build: .
      6     ports:
      7      - "5000:5000"
      8   redis:
      9     image: "redis:alpine"
     
    Docker Compose解释:
    此Compose文件定义了两个服务,web和redis。
    web服务:
    • 使用从Dockerfile当前目录中构建的图像。
    • 将容器上的公开端口5000转发到主机上的端口5000。即使用Flask Web服务器的默认端口5000。
    redis服务:
    使用从Docker Hub拉取的公共Redis映像。
      1 root@docker01:~/composetest# docker-compose up -d		#开始构建

    四 验证确认

    浏览器访问:http://172.24.8.111:5000/
    81_thumb1
      1 root@docker01:~/composetest# docker-compose ps
      2 root@docker01:~/composetest# docker ps
     
    82_thumb1
      1 root@docker01:~/composetest# docker image ls
    83_thumb1
    提示:
    使用Docker Compose构建的容器名称规则为:【构建时所在目录】_【yml构建文件定义服务名】_【容器启动序号】。
    使用Docker Compose构建的镜像名称规则为:【构建时所在目录】_【yml构建文件定义服务名】,其tag为latest。

    五 挂载卷构建

      1 root@docker01:~/composetest# vi docker-compose.yml
      2 version: '3'
      3 services:
      4   web:
      5     build: .
      6     ports:
      7      - "5000:5000"
      8     volumes:
      9      - .:/code
     10   redis:
     11     image: "redis:alpine"
     12 root@docker01:~/composetest# docker-compose up -d		#再次构建
     13 root@docker01:~/composetest# vi app.py
     14 ……
     15 return 'Hello Docker! I have been seen {} times.
    '.format(count)
     16 ……
     
    浏览器访问:http://172.24.8.111:5000/
    84_thumb1
    提示:挂载本地卷至容器后,可快速修改本地文件,从而达到动态修改容器而无需重建image作用。

    六 Docker Compose其他常用命令

      1 docker-compose up -d:在后台运行服务;
      2 docker-compose ps:查看当前正在运行的容器;
      3 docker-compose run:运行一次性命令,如docker-compose run web env。
     
    85_thumb1
      1 docker-compose stop:停止服务,如docker-compose stop web
    提示:docker-compose以yaml中服务名作为参数,而非容器名称或ID。
      1 docker-compose down --volumes:完全删除容器同时删除容器使用的数据卷。
    提示:更多Docker Compose命令参考《附004.Docker Compose命令详解》。
  • 相关阅读:
    idea 找不到包或找不到符号
    JOISC部分题解
    欧拉数学习笔记
    [清华集训2017]生成树计数
    [ZJOI2019]开关
    【题解】CF817E Choosing The Commander
    CSP-S 2020游记
    【学习笔记】线段树合并
    【题解】[IOI2005]Riv 河流
    【题解】哈希冲突
  • 原文地址:https://www.cnblogs.com/itzgr/p/10171046.html
Copyright © 2011-2022 走看看