1 compose介绍

Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration. To learn more about all the features of Compose, see the list of features.

Compose works in all environments: production, staging, development, testing, as well as CI workflows. You can learn more about each case in Common Use Cases.

Using Compose is basically a three-step process:

  1. Define your app’s environment with a Dockerfile so it can be reproduced anywhere.

    • Dockerfile保证我们的项目在任何地方可以运行
  2. Define the services that make up your app in docker-compose.yml so they can be run together in an isolated environment.
    • service是啥?
    • docker-compose.yml怎么写?
  3. Run docker compose up and the Docker compose command starts and runs your entire app. You can alternatively run docker-compose up using the docker-compose binary.
    • 启动项目 docker-compose up

注:docker-compose是docker的一个开源项目,需要安装

A docker-compose.yml looks like this:

version: "3.9"  # optional since v1.27.0
services:web:build: .ports:- "8000:5000"volumes:- .:/code- logvolume01:/var/loglinks:- redisredis:image: redis
volumes:logvolume01: {}

Compose的重要概念:

  • 服务sevices:容器、应用(如:web、redis、mysql)
  • 项目project:一组关联的容器。比如博客:需要web、mysql等

下载

//官方
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose//国内镜像
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.29.2/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-官方

2 docker-compose初体验

2.1 设置

  1. 为项目创建一个目录:
mkdir composetestcd composetest
  1. 在项目目录中创建一个名为的文件app.py并将其粘贴到:
import timeimport redis
from flask import Flaskapp = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)  # 这里写的redis,正因为在一个网络下,才能redis才能作为域名访问。官方很细。def get_hit_count():retries = 5while True:try:return cache.incr('hits')except redis.exceptions.ConnectionError as exc:if retries == 0:raise excretries -= 1time.sleep(0.5)@app.route('/')
def hello():count = get_hit_count()return 'Hello World! I have been seen {} times.\n'.format(count)
  1. 在您的项目目录中创建另一个名为的文件requirements.txt并将其粘贴到:
flask
redis

2.2 创建 Dockerfile

# syntax=docker/dockerfile:1
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
EXPOSE 5000
COPY . .
CMD ["flask", "run"]

2.3 在 Compose 文件中定义服务

在您的项目目录中创建一个名为的文件docker-compose.yml并粘贴以下内容:

version: "3.9"
services:web:build: .ports:- "8000:5000"redis:image: "redis:alpine"

这个 Compose 文件定义了两个服务:web和redis.

2.4 使用 Compose 构建并运行您的应用程序

docker-compose up
  1. 创建网络
  2. 执行Docker-conpose yml
  3. 启动服务
root@xiaoni-01:/home/idea# docker service ls
Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.

默认的服务名 文件名_服务名 _ num
多个服务器。集群。A B _num 副本数量
服务redis服务 => 4个副本。在集群状态。服务都不可能只有一个运行实例。
正式项目都是弹性、10 HA 高并发。
kubectl service 负载均衡。


此时compose会自动维护一个网络,这里为composetest_default,这样话各个容器便能通过域名访问,不然只能通过IP。
用insect查看:

我们想要的效果:例如MySQL的端口是3306,后面有十个容器,会实现一个自动转接。

3 yaml编写

https://docs.docker.com/compose/compose-file/compose-file-v3/

#3层
version: ' '   #版本
services: 服务1:webimagesbuildnetworkdepends on: #依赖,确定先后顺序- redis服务2:redis。。。服务3:。。。。
# 其他配置 网络/卷 全局规则等等
volumes:
networks:
configs:

多写、多看,compose.yaml:

  1. https://docs.docker.com/compose/compose-
    file/compose-file-v3/

  2. 开源项目,compose.yaml

4 开源项目

官方例子:

https://docs.docker.com/samples/wordpress/

后台启动
docker-compose up -d

5 实战

  1. 编写项目微服务
  2. dockerfile 构建镜像
  3. docker-compose.yaml 编排项目
  4. 丢到服务器 docker-compose up

小结:
未来项目只要有 docker-compose 文件。 按照这个规则,启动编排容器。!
公司: docker-compose。 直接启动。
网上开源项目: docker-compose 一键搞定。
假设项目要重新部署打包

docker-compose up --build # 重新构建!

Docker Compose 知识点(学习笔记)相关推荐

  1. 微服务基础知识点学习笔记(持续更新)

    微服务基础知识点学习笔记(持续更新) Conrtoller层 整体包括:HTTP协议,JavaWeb三大组件(filter.servlet.listener).SpringMVC(SpringMVC的 ...

  2. Docker最全学习笔记

    目录 一.Docker概述 1.1.Docker为什么出现? 1.2.Dcoker的历史 1.3.Docker能做什么? 1.4.DevOps(开发.运维) 二.安装 2.1.Docker的基本组成 ...

  3. 信息安全数学基础知识点学习笔记(一)

    信息安全数学基础学习笔记(一) 第一章.整数的可除性 整除的概念.欧几里得除法 整除的概念 素数的概念 Eratoshenes筛法 欧几里得除法--最小非负余数 素数的平凡判别 欧几里得除法-- 一般 ...

  4. Docker零基础学习笔记

    零基础学习Docker Docker官方文档 基础语法 docker pull: 从DockerHub上拉取镜像 $ docker pull ngnix Using default tag: late ...

  5. Docker学习总结(42)——Docker Compose 入门学习

    一.Docker Compose介绍 Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用(称为一个 project,即项目).Compose 定位是 ...

  6. [Docker]Docker快速上手学习笔记

    0. 学习的一些疑问 如何热更新镜像(images)?(你可以快速启动或者销毁容器.这种时间几乎是实时的) 如何热更新游戏服? 好处在于各个应用之间环境相互独立,即使某一个容器崩溃也不会影响到其它容器 ...

  7. 英语地道知识点学习笔记(一)

    最近学习英语流利说,英语地道知识点整理 最容易被误解的英语句子 1. ==How are you?== 2. ==Where you from?== 3. ==restroom== 4. ==How ...

  8. Docker训练营Docker基础知识学习笔记2

    一.学习知识点概要 1.对数据集进行判断是否存在缺失值和异常值 2.辨别变量间的关系以及变量与预测值之间的关系 3.数据集的特征 4.如何运用python代码去实现以上内容 二.学习内容 1.读取数据 ...

  9. 【Docker技术入门与实践(第2版)】Docker入门_学习笔记

    第一章 1 Docker入门须知 1.1 Docker基本知识 Docker是基于Go语言实现的开源容器项目,诞生于2013年年初,最初发 起者是dotCloud公司.Docker自开源后受到广泛的关 ...

最新文章

  1. 综述:Image Caption 任务之语句多样性
  2. Python中的并行处理(Pool.map()、Pool.starmap()、Pool.apply()、)
  3. poj 3131 双向搜索+hash判重
  4. spring jmx_JMX和Spring –第1部分
  5. 重写equals()与hashCode()方法
  6. Linux笔记 rm -rf 嘻嘻
  7. KeepAlived+Nginx 模拟nginx单点故障转移,实现高可用
  8. mq消息落地及业务处理踩坑记录
  9. Swift高仿喜马拉雅APP之一Charles抓包、图片资源获取等
  10. Java实现简单聊天室【含源码】
  11. 第七章 算术操作指令的实现
  12. Python 利用win32com批量给excel加密
  13. pocket pc 2003 联网
  14. AI作画的人机战争走向何方?
  15. 赶紧收藏!网上疯传的150个ChatGPT「超级提问模型」,都在这里了
  16. 关于File.separator[转]
  17. 均值不等式链的几何证明
  18. 抖音服务器到底有多大,能够供那么多人同时刷?
  19. 【英语0基础·读音】【A鹿笔记】Day 1 ee,ea,ache组合
  20. Web网页制作——花店网站(彼岸の花 偏安一隅)

热门文章

  1. RCE漏洞以及命令执行漏洞
  2. 网页调用AutoVue浏览DWG文件
  3. DHCP中继实验配置
  4. CSS3的新单位vw、vh、vmin、vmax
  5. cs go社区服务器维护,《CS:GO》即日起全面禁止社区服务器武器皮肤MOD
  6. Ansys-瞬态动力学分析-曲柄滑块机构运动学分析学习收获
  7. 基本不等式 学习笔记
  8. 正则表达式--前缀r
  9. 齐边错边装置液压系统比例阀放大器
  10. vue.2.4.0.js_YouZan的Vue.js 2.0移动用户界面