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 [email protected]:~# 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 [email protected]:~# sudo chmod +x /usr/local/bin/docker-compose

2.2 pip安装(推荐)

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

三 Docker Compose示例

3.1 构建应用程序

  1 [email protected]:~# mkdir composetest			#创建Docker Compose目录
  2 [email protected]:~# cd composetest/
  3 [email protected]:~/composetest# vi app.py

提示:使用Python构建一个简单应用,具体应用内容参考官方示例即可。




https://docs.docker.com/compose/gettingstarted/#step-1-setup

3.2 创建Dockerfile

  1 [email protected]:~/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 [email protected]:~/composetest# vi requirements.txt	#创建安装软件列表文件
  2 flask
  3 redis
  4 [email protected]:~/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 [email protected]:~/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 [email protected]:~/composetest# docker-compose up -d		#开始构建

四 验证确认

浏览器访问:http://172.24.8.111:5000/

  1 [email protected]:~/composetest# docker-compose ps
  2 [email protected]:~/composetest# docker ps

  1 [email protected]:~/composetest# docker image ls

提示:




使用Docker Compose构建的容器名称规则为:【构建时所在目录】_【yml构建文件定义服务名】_【容器启动序号】。




使用Docker Compose构建的镜像名称规则为:【构建时所在目录】_【yml构建文件定义服务名】,其tag为latest。

五 挂载卷构建

  1 [email protected]:~/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 [email protected]:~/composetest# docker-compose up -d		#再次构建
 13 [email protected]:~/composetest# vi app.py
 14 ……
 15 return ‘Hello Docker! I have been seen {} times.\n‘.format(count)
 16 ……

浏览器访问:http://172.24.8.111:5000/

提示:挂载本地卷至容器后,可快速修改本地文件,从而达到动态修改容器而无需重建image作用。

六 Docker Compose其他常用命令

  1 docker-compose up -d:在后台运行服务;
  2 docker-compose ps:查看当前正在运行的容器;
  3 docker-compose run:运行一次性命令,如docker-compose run web env。

  1 docker-compose stop:停止服务,如docker-compose stop web

提示:docker-compose以yaml中服务名作为参数,而非容器名称或ID。

  1 docker-compose down --volumes:完全删除容器同时删除容器使用的数据卷。

提示:更多Docker Compose命令参考《附004.Docker Compose命令详解》。

原文地址:https://www.cnblogs.com/itzgr/p/10043186.html

时间: 2024-10-10 13:18:16

009.Docker Compose基础使用的相关文章

010.Docker Compose构建WordPress实战

一 前期规划 类型 版本 备注 WordPress镜像 wordpress:latest MySQL数据库 5.7 Docker已安装,参考<002.Docker版本及安装>. Docker Compose已安装,参考<009.Docker Compose基础使用>. 二 正式构建 2.1 创建目录 1 [email protected]:~# mkdir my_wordpress 2 [email protected]:~# mkdir /db_data #创建用于存储MySQL

有容云:实战总结之 利用Docker、Docker Compose &amp;Rancher构建持续部署

前言: 本文由John Patterson . Chris Lunsford写于2016年4月4日,译者有容云张向波,转载请注明出处.(原文链接见文末) 作者John Patterson和Chris Lunsford 运营了一家提供运营和基础架构服务的公司,本文是他们给大家分享的内容:关于如何通过使用Docker.Docker-Compose和Rancher来实现容器部署落地. 我们想跟你一起从头开始体验整个过程,特别是之间遇到的一些痛点和所做的决策.目前,已经有许多的资源和工具可以与Docke

Docker(8)-Docker Compose

对于大多数的工作,我们都需要多个容器之间的相互配合.幸运的是,Docker提供给了我们一个巧妙的工具--Docker Compose,让我们能够无缝地建立和管理多个容器. 要安装Docker Compose,我们需要先确保已经安装了pip(一个Python包管理器).命令如下: sudo apt-get update sudo apt-get install -y python-pip sudo pip-install docker-compose Docker Compose使用一个名为doc

Docker之基础篇

系列文章: 小白学Docker之基础篇 小白学Docker之Compose 小白学Docker之Swarm PS: 以下是个人作为新手小白学习docker的笔记总结 1. docker是什么 百科上的解释是这样的: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 知乎上的很多理解是将其理解成集装箱,彼此之间互相不影响,各自运行在各自的环境

Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践

我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your felling . 前期了解概念什么的确实比较无聊,请不要着急精彩马上开始,当大家对 docker 相关概念有所了解之后,后面我会结合 Spring Boot 给大家来一系列的小例子,会让大家感受到使用 Docker 就是这么爽! 今天给大家演出的导演是 Docker 家族的 docker-compare ,主演是 Spring Boot.

docker——三剑客之Docker Compose

编排(Orchestration)功能是复杂系统实现灵活可操作性的关键.特别是在Docker应用场景中,编排意味着用户可以灵活的对各种容器资源实现定义和管理. 作为Docker官方编排工具,Compose的重要性不言而喻,它可以让用户通过编写一个简单模板文件,快速地创建和管理基于Docker容器地应用集群. Compose项目是Docker官方的开源项目,负责实现对Docker容器的快速编排.从功能上看,跟OpenStack中的Heat十分相似.Compose定位是"定义和运行多个Docker容

Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)

场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100902301 Docker Compose基本使用-使用Compose启动Tomcat为例: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100904080 Docker Compose部署项目到容器-基于Tomc

Docker Compose部署Nexus3时的docker-compose,yml代码

场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100902301 Docker Compose基本使用-使用Compose启动Tomcat为例: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100904080 Docker Compose部署项目到容器-基于Tomc

Docker,Docker Compose,Docker Swarm,Kubernetes之间的区别

最近在学习Docker容器,了解到一些相关的技术,像是Kubernetes,Docker-compose,Docker Swarm,分不清这些东西之间的区别,特意去研究了一下,分享一下,适合刚入门学习容器的同学了解. DcokerDocker 这个东西所扮演的角色,容易理解,它是一个容器引擎,也就是说实际上我们的容器最终是由Docker创建,运行在Docker中,其他相关的容器技术都是以Docker为基础,它是我们使用其他容器技术的核心. Docker-ComposeDocker-Compose