关键词:
官方文档:https://docs.docker.com/compose
一、介绍
Compose
项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。是用来定义和运行多个Docker容器应用的工具,它允许用户通过一个单独的 docker-compose.yml
模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Compose
中有两个重要的概念:
-
服务 (
service
):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。 -
项目 (
project
):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml
文件中定义。
Compose
的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。Compose
项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose
来进行编排管理。
二、Linux 安装
curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod a+x /usr/local/bin/docker-compose
docker-compose -version docker-compose version 1.19.0, build 9e633ef
三、启动一个项目
3.1 编写一个yaml文件
pwd /home/bigberg/docker/compose-test # 编写yaml文件 vim docker-compose.yml version: \'3\' services: web: build: . ports: - "8888:80" # version : 需要和docker 版本相匹配 # services : 定义组中的容器和服务等 # web : 容器镜像服务的标识,通过这个标识来管理镜像 # build . : 构建镜像的目录 # ports : 映射的端口
version 对应的docker版本:
3.2 编写一个Dockerfile文件
FROM centos MAINTAINER bigberg RUN yum -y install httpd php php-gd php-mysql RUN echo "<?php phpinfo()?>" > /var/www/html/index.php CMD ["/usr/sbin/httpd","-D","FOREGROUND"] EXPOSE 80
3.3 构建镜像
docker-compos up
构建完成后查看:
docker-compose ps Name Command State Ports -------------------------------------------------------------------------------- composetest_web_1 /usr/sbin/httpd -D FOREGROUND Up 0.0.0.0:8888->80/tcp
访问地址:(项目确实起来了)
四、python-web事例
4.1 定义应用的一些依赖
创建文件夹
mkdir -p compose-test/python-test cd compose-test/python-test
创建一个app.py文件
import time import redis from flask import Flask app = Flask(__name__) cache = redis.Redis(host=\'redis\', port=6379) def get_hit_count(): retries = 5 while True: try: return cache.incr(\'hits\') except redis.exceptions.ConnectionError as exc: if retries == 0: raise exc retries -= 1 time.sleep(0.5) @app.route(\'/\') def hello(): count = get_hit_count() return \'Hello World! I have been seen times.\\n\'.format(count) if __name__ == "__main__": app.run(host="0.0.0.0", debug=True)
在app.py中,host=\'redis\' 中redis 是 redis 容器的主机名,在这个项目的网络中可以被解析
Name: redis Address 1: 172.20.0.3 625eb281eafd
创建一个requirements.txt文件
flask redis
4.2 创建一个Dockerfile
FROM python:3.4-alpine ADD . /code WORKDIR /code RUN pip install -r requirements.txt CMD ["python", "app.py"]
- 构建使用的python:3.4-alpine镜像
- 将当前目录添加到镜像中/code目录
- 设置工作目录为 /code
- 安装python依赖
- 设置容器启动运行命令为 python app.py
4.3 创建docker-compose.yml 文件
version: \'3\' services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine"
这个ymal文件有两个服务:web 和 redis
web服务:
- 构建使用Dockerfile中定义的镜像
- 映射端口5000到宿主机端口5000,也就是flask web的默认端口
redis服务:
- 构建使用的是Docker Hub中公共Redis镜像
4.4 构建项目
docker-compose up
4.5 访问项目
每次刷新,访问的次数会增长
4.6 修改ymal文件,将目录挂在到镜像中
version: \'3\' services: web: build: . ports: - "5000:5000" volumes: - .:/code redis: image: "redis:alpine"
通过volumes 将当前目录挂在到镜像中的 /code目录,这个就可以在宿主机目录中修改文件,容器中也会生效,不必每次修改都要重新构建
4.7 重新docker-compose up
docker-compose up
4.8 修改app.py文件
Hello world! 改为 Hello from Docker!
hellodocker——dockercompose(代码片段)
HelloDocker(九)——DockerCompose一、DockerCompose简介1、DockerCompose简介DockerCompose项目是Docker官方的开源项目,用于在单台服务器或主机上对多个Docker容器快速编排。DockerCompose将所管理的容器分为三层,分别是工程(project),服务(... 查看详情
docker------dockercompose编排(代码片段)
目录前言一.Docker-compose简介二.Compose部署1.DockerCompose环境安装2.YAML文件格式及编写注意事项3.DockerCompose配置常用字段4.DockerCompose常用命令5.DockerCompose文件结构三.使用Compose编排创建Nginx容器1.准备依赖文件2.编写配置文件docker-compose... 查看详情
docker------dockercompose编排(代码片段)
目录前言一.Docker-compose简介二.Compose部署1.DockerCompose环境安装2.YAML文件格式及编写注意事项3.DockerCompose配置常用字段4.DockerCompose常用命令5.DockerCompose文件结构三.使用Compose编排创建Nginx容器1.准备依赖文件2.编写配置文件docker-compose... 查看详情
dockercompose编排(写法格式及实验)(代码片段)
目录一、DockerCompose前言二、Dockercompose的文件结构1、dockercompose配置常用字段2、dockercompose常用命令三、使用compose编排1、使用compose编排安装运行tomcat容器2、使用compose编排创建容器(以tomcat为例)一、DockerCompose前言DockerCo... 查看详情
markdown安装dockercompose(代码片段)
dockercompose部署(代码片段)
dockercompose部署————资源控制[root@localhost~]#dockernetworklsNETWORKIDNAMEDRIVERSCOPE4946cb00240cbridgebridgelocal7ad0dfddaa0fhosthostlocal906f0be0af7cnonenulllocal#自定义网络固定IPdockernetworkcreate--subnet=172 查看详情
dockercompose,dockerswarm(代码片段)
文章目录DockerCompose安装体验yaml规则开源项目DockerSwarmDockerCompose介绍:使用DockerCompose来高效管理容器,定义启动多个容器批量容器编排Compose是Docker官方的开源项目。需要安装Dockerfile让程序在任何地方运行。Compose.ymlversion... 查看详情
dockercompose安装(代码片段)
...用,而这些docker容器可能运行在多个不同的宿主机上。2.DockerCompose是一个比较简单的docker容器的编配工具,以前的名称叫Fig,由Orchard团队开发的开源Docker编配工具,在2014年被Docker公司收购,DockerCompose是使用 查看详情
sh安装docker和dockercompose(代码片段)
详解dockercompose,consul!!(代码片段)
DockerCompose的前身是Fig,它是一个定义及运行多个Docker容器的工具。使用DockerCompose不再需要使用ShellI脚本来启动容器DockerCompose非常适合组合使用多个容器进行开发的场景。Consul是HashiCor公司推出的开源工具,用于实现分布式系... 查看详情
附003.dockercompose命令详解(代码片段)
一 DockerCompose命令格式1Usage:2docker-compose[-f<arg>...][options][COMMAND][ARGS...]3docker-compose-h|--help二 DockerCompose命令参数及解释1Usage:2docker-compose[-f<arg>...][options][COMMAND][ARGS...]3 查看详情
dockercompose实例(代码片段)
采用java-jar启动nohupjava-jarweb-0.0.1-SNAPSHOT.jar--spring.profiles.active=test--server.port=8091&采用DockerCompose启动myweb:##启动容器的名字image:web:v826##从哪个镜像启动ports:-"8088:8091"##web容器内的8091端口映射到主机的8088端口l 查看详情
010.dockercompose构建wordpress实战(代码片段)
...MySQL数据库5.7Docker已安装,参考《002.Docker版本及安装》。DockerCompose已安装,参考《009.DockerCompose基础使用》。二 正式构建2.1 创建目录1[email protected]:~#mkdirmy_wordpress2[email protect 查看详情
dockercompose安装使用教程(代码片段)
DockerCompose一、安装DockerCompose#Compose目前已经完全支持Linux、MacOS和Windows,在我们安装Compose之前,需要先安装Docker。下面我们以编译好的二进制包方式安装在Linux系统中。curl-Lhttps://github.com/docker/compose/releases/download/1.22.0/d 查看详情
dockercompose(代码片段)
文章目录什么是compose安装composelinux版docker-compose启动docker-compose文件(模板)docker-compose文件参考文档versionservicesbuild(从给定Dockerfile文件构建)container_nameimageports(映射端口)envi 查看详情
sh在coreos上安装dockercompose(代码片段)
sh在coreos上安装dockercompose(代码片段)
dockercompose(代码片段)
文章目录什么是compose安装composelinux版docker-compose启动docker-compose文件(模板)docker-compose文件参考文档versionservicesbuild(从给定Dockerfile文件构建)container_nameimageports(映射端口)envi 查看详情