docker-compose -----单机多容器管理
Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。
Docker-Compose 安装:
- sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- sudo chmod +x /usr/local/bin/docker-compose
测试安装:
- $ docker-compose --version
docker-compose version 1.25.0, build 0a186604
跟着官网的demo进行一个docker-compose的入门:
确保已安装Docker Engine和Docker Compose。您无需安装Python或Redis,因为两者均由Docker映像提供。
1.为项目创建目录:
- mkdir /composetest
- cd composetest
2.新建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)

在此示例中,redis
是应用程序网络上的redis容器的主机名。我们为Redis使用默认端口6379
。
3.requirements.txt
在项目目录中创建另一个名为的文件,并将其粘贴到:、
- flask
- redis
4.在您的项目目录中,创建一个名为的文件Dockerfile
并粘贴以下内容:

- FROM python:3.7-alpine
- WORKDIR /code
- ENV FLASK_APP app.py
- ENV FLASK_RUN_HOST 0.0.0.0
- RUN apk add --no-cache gcc musl-dev linux-headers
- COPY requirements.txt requirements.txt
- RUN pip install -r requirements.txt
- COPY . .
- CMD ["flask", "run"]

5.新建 docker-compose.yml
在项目目录中创建一个名为的文件,然后粘贴以下内容:

- version: '3' #表示docker-compose的版本
- services: #相当于原先的container ,一个service表示一个container
- web: #container的名字
- build: .
- ports:
- - "5000:5000" #映射端口
- networks:
- - app-net #网段
- redis:
- image: "redis:alpine"
- networks:
- - app-net
- networks: #相当于docker network create app-net
- app-net:
- driver: bridge

该Compose文件定义了两个服务:web
和redis
。
6.执行 docker-compose up 运行来启动应用程序
7.在浏览器中输入ip:5000 /以查看应用程序正在运行。您应该在浏览器中看到一条消息,内容为:
- Hello World! I have been seen 1 times.
docker-compose常见操作:

- docker-compose version --查看版本
- docker-compose up --根据yml创建service
- 指定yaml:docker-compose up -f xxx.yaml
- 后台运行:docker-compose up -d
- docker-compose ps --查看启动成功的service ,也可以使用docker ps
- docker-compose images --查看images
- docker-compose stop/start --停止/启动service
- docker-compose down --删除service[同时会删除掉network和volume]
- docker-compose exec redis sh --进入到某个service

docker-compose -----单机多容器管理的更多相关文章
- Docker 安装docker-compose多容器管理服务
原文地址:https://github.com/eacdy/spring-cloud-book/blob/master/3%20%E4%BD%BF%E7%94%A8Docker%E6%9E%84%E5 ...
- Docker | Compose创建mysql容器
本文通过Docker Compose来创建mysql容器 在linux服务器上创建文件,用于管理容器 mkdir docker-mysql cd docker-mysql vim docker-com ...
- Docker Compose—简化复杂容器应用的利器
Compose是用于定义和运行复杂Docker应用的工具.你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,然后所有相关的操作都会被自动完成. 1. 安装Docker和Compo ...
- Docker&持续集成与容器管理--系列教程
一 Docker简介 Docker介绍 Docker架构 二 Docker安装 Ubuntu Docker 安装 CentOS Docker 安装 Windows Docker 安装 MacOS Do ...
- 不止Docker:8款容器管理开源方案
Docker诞生于2013年,并普及了容器的概念,以至于大多数人仍然将容器的概念等同于"Docker容器". 作为第一个吃螃蟹的人,Docker设置了新加入者必须遵守的标准.例如, ...
- Docker 系列三(容器管理).
一.运行容器 1.基于镜像新建一个容器并启动 : tomcat:8.0 -i:交互式操作 -t:终端 -rm:容器退出后随之将其删除,可以避免浪费空间 -p :端口映射 -d :容器在后台运行 指明了 ...
- docker(3)容器管理命令
接着上一篇,今天说一下Docker 有关容器的常用命令.算是比较详细了吧. docker run 命令: 注:此命令作用是使用一个镜像运行启动一个容器. 在启动运行的时候 会检查docker 中是否 ...
- 27. docker compose 单机 均衡负载
1.编写Dockerfile #Dockerfile FROM python:2.7 LABEL maintaner="eaon eaon123@docker.com" COPY ...
- 单机编排之Docker Compose
当在宿主机启动较多的容器时候,如果都是手动操作会觉得比较麻烦而且容器出错,这个时候推荐使用docker 单机编排工具docker compose,Docker Compose 是docker容器的一种 ...
随机推荐
- qt for webassembly环境搭建图文教程
一.前言 从Qt5.14开始,官方的在线安装提供了qt for webassembly构建套件,这对很多小白来说绝对是个好消息,也绝对是个好东西,好消息是不用再去交叉编译自己生成qt for weba ...
- windows上传ipa到苹果开发者中(app store)的方法
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开发者中心才能在构建版本里选择构建版本上架 ...
- 浅谈前端常用脚手架cli工具及案例
前端常用脚手架工具 前端有很多特定的脚手架工具大多都是为了特定的项目类型服务的,比如react项目中的reate-react-app,vue项目中的vue-cli,angular 项目中的angula ...
- 初识JavaScript和jQuery
JavaScript 1.特性 ①脚本语言.JavaScript是一种解释型的脚本语言,C.C++.Java等语言先编译后执行, 而JavaScript是在程序的运行过程中逐行进行解释. ②基于对象. ...
- 三次握手 四次握手 原因分析 TCP 半连接队列 全连接队列
小结 1. 三次握手的原因:保证双方收和发消息功能正常: [生活模型] "请问能听见吗""我能听见你的声音,你能听见我的声音吗" [原理]A先对B:你在么?我在 ...
- LOJ10131暗的连锁
题目描述 原题来自:POJ 3417 Dark 是一张无向图,图中有 N 个节点和两类边,一类边被称为主要边,而另一类被称为附加边.Dark 有 N–1 条主要边,并且 Dark 的任意两个节点之间都 ...
- Go - 实现项目内链路追踪
为什么项目内需要链路追踪?当一个请求中,请求了多个服务单元,如果请求出现了错误或异常,很难去定位是哪个服务出了问题,这时就需要链路追踪. 从图中可以清晰的看出他们之间的调用关系,通过一个例子说明下链路 ...
- 七:Spring Security 前后端分离登录,非法请求直接返回 JSON
Spring Security 前后端分离登录,非法请求直接返回 JSON 解决方案 在 Spring Security 中未获认证的请求默认会重定向到登录页,但是在前后端分离的登录中,这个默认行为则 ...
- 通过Portainer统一管理不同服务器的Docker
通过Portainer统一管理不同服务器的Docker 一.可视化管理工具Portainer的安装 二.跨服务器管理Docker 2.1开启2375监听端口 2.2Portainer配置远程管理 一. ...
- GeoMesa,整体架构,创建Schema并导入数据
GeoMesa,整体架构,创建Schema并导入数据 一.GeoMesa-整体架构 二.GeoMesa-创建Schema并导入数据 2.1 GeoTools Data 模块 2.2 索引管理 2.3 ...