一 Docker Compose概述

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

二 Docker Compose安装

2.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
root@docker01:~# sudo chmod +x /usr/local/bin/docker-compose
 

2.2 pip安装(推荐)

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

三 Docker Compose示例

3.1 构建应用程序

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

3.2 创建Dockerfile

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

3.3 使用Docker Compose构建服务

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

四 验证确认

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

五 挂载卷构建

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

六 Docker Compose其他常用命令

 docker-compose up -d:在后台运行服务;
docker-compose ps:查看当前正在运行的容器;
docker-compose run:运行一次性命令,如docker-compose run web env。
 
 docker-compose stop:停止服务,如docker-compose stop web
提示:docker-compose以yaml中服务名作为参数,而非容器名称或ID。
 docker-compose down --volumes:完全删除容器同时删除容器使用的数据卷。
提示:更多Docker Compose命令参考《附004.Docker Compose命令详解》。

009.Docker Compose部署及基础使用的更多相关文章

  1. 029.Docker Compose部署Zabbix实战

    一 前期规划 1.1 Zabbix架构图 1.2 其他规划 组件 类型 版本 备注 Zabbix Web zabbix-web-apache-mysql镜像 wordpress:latest 也可采用 ...

  2. Docker Compose 部署前后端分离应用

    部署前后端分离应用 容器化 Abp 应用 关于 Abp 应用的容器化,其实和普通的 ASP.NET Core 应用差不多,大家可以参考我此前的文章. 唯一需要注意的是:因为 Abp 解决方案中有多个项 ...

  3. 在Windows Server 2019通过Docker Compose部署Asp.Net Core

    一.安装Docker Enterprise 安装文档是: https://docs.docker.com/install/windows/docker-ee/ 安装完成后,如下图 二.首先,拉取一个W ...

  4. Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

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

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

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

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  7. Docker Compose 部署 Redis 及原理讲解 | 懒人屋

    原文:Docker Compose 部署 Redis 及原理讲解 | 懒人屋 Docker Compose 部署 Redis 及原理讲解  4.4k  字    16  分钟    2019-10-1 ...

  8. Docker Compose部署 EFK(Elasticsearch + Fluentd + Kibana)收集日志

    简述 本文用于记录如何使用Docker Compose部署 EFK(Elasticsearch + Fluentd + Kibana) 收集Docker容器日志,使用EFK,可以无侵入代码,获得灵活, ...

  9. 使用Docker Compose部署基于Sentinel的高可用Redis集群

    使用Docker Compose部署基于Sentinel的高可用Redis集群 https://yq.aliyun.com/articles/57953 Docker系列之(五):使用Docker C ...

随机推荐

  1. 关于C++中的指针、数组

    C++中指针和数组基本等价的原因在于指针算术和C++内部处理数组的方式:将整数变量加一后,其值将增加1:将指针变量加一后,增加的量等于其指向的数据类型的字节数: 指针中存储的是地址,地址在形式上和整数 ...

  2. 算法导论 之 红黑树 - 删除[C语言]【转】

    转自:https://blog.csdn.net/qifengzou/article/details/17608863 作者:邹祁峰 邮箱:Qifeng.zou.job@hotmail.com 博客: ...

  3. dup,dup2函数【转】

    转自:http://eriol.iteye.com/blog/1180624 转自:http://www.cnblogs.com/jht/archive/2006/04/04/366086.html ...

  4. php数据库的增删改查

    1.查询: 数据的显示,这里就可以嵌入php来进行数据的输出 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ...

  5. ES系列十二、ES的scroll Api及分页实例

    1.官方api 1.Scroll概念 Version:6.1 英文原文地址:Scroll 当一个搜索请求返回单页结果时,可以使用 scroll API 检索体积大量(甚至全部)结果,这和在传统数据库中 ...

  6. 网络抓包 Fiddler

    1. Fiddler 抓包简介 Fiddler是通过改写HTTP代理,让数据从它那通过,来监控并且截取到数据.当然Fiddler很屌,在打开它的那一瞬间,它就已经设置好了浏览器的代理了.当你关闭的时候 ...

  7. Linux关闭防火墙,开放端口

    Centos/redhat系统: 开启防火墙 #systemctl start firewalld.service 停止firewall #systemctl stop firewalld.servi ...

  8. centos7下配置saltstack

    1.下载 使用yum方式即可,可以更换下yum源,这里使用的阿里云的 [root@salt-master ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo h ...

  9. nagios系列(四)之nagios主动方式监控tcp常用的80/3306等端口监控web/syncd/mysql及url服务

    nagios主动方式监控tcp服务web/syncd/mysql及url cd /usr/local/nagios/libexec/ [root@node4 libexec]# ./check_tcp ...

  10. centos6.7安装系统后看不到网卡无法配置IP的解决办法

    新安装centos6.7后发现/etc/sysconfig/network-scripts目录下没有eth0的网卡配置,通过ifconfig可以看到eth0的硬件地址 于是新建网卡输入一下内容 # c ...