Docker -Compose的基本介绍
Docker-Compose是Docker官方开源的项目,负责实现对Docker容器的快速编排,它是由python编写的
#说下Docker-Compose里的两个基本概念
#服务(service):一个应用容器,也就是docker容器,
#项目(project):由一组关联的容器组成的一个完整业务单元
作用: 方便对多个服务进行统一的管理,如果有好多个服务,一个个run运行,那是不是 有点对不起自己?
#Docker-Compose使用Yaml文件来进行管理
#yaml文件的注意点
#大小写敏感,缩进表示层级关系
#缩进空格数不要求
#由冒号分隔键值对
Docker-Compose的安装和使用
下载并设置执行权限
#下载
#这个比较慢,换成国内的下载地址
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.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
#另外的安装方法,由于它是由python编写的,可以使用pip install docker-compose安装
#设置权限
sudo chmod +x /usr/local/bin/docker-compose
常用命令
docker-compose命令格式
#常用的参数说明
-f file #指定compose模板文件,默认是docker-compose.yml
-p name #指定项目名称
-v # 打印版本
--log-level level #指定日志级别(debug,info,warning,error,critical)
-h #帮助信息
docker-compose up命令
#构建,启动,管理容器服务
#常用参数如下:
-d #后台运行
--force-recreate # 强制重新创建容器
--build #在启动容器前构建服务镜像
-remove-orphans #删除服务中没有在compose文件中定义的容器
docker-compse ps 命令
#列出项目中所有的容器
#常用参数
-q #只显示ids
--services #显示服务
docker-compose stop 命令
#停止正在运行的容器
#参数如下:
-t timeout #停止容器超时的时间
docker-compose -h命令
docker-compose down 命令
#停止容器服务和删除容器,网络,卷,镜像
--rmi type #删除容器
'all': #删除所有
'local': #删除 镜像名为空的镜像
-v, --volumes #删除在compose文件中定义的数据卷包含匿名卷
--remove-orphans #删除服务中没有在compose定义的容器
-t, --timeout TIMEOUT #超时时间
docker-compose logs 命令
#显示服务容器的日志
--no-color Produce monochrome output.
-f, --follow #实时显示日志
-t, --timestamps #显示时间
--tail="all"
docker-compose build 命令
#构建项目中的服务容器
--compress #压缩
--force-rm #强制删除
--no-cache #不使用缓存
--pull #构建时使用最新的镜像
-m, --memory MEM #构建时设置内存大小
--build-arg key=val #为服务设置build-time变量
docker-compose pull 命令
#拉取服务依赖的镜像
--ignore-pull-failures #忽略拉取时的失败信息
--parallel #多个镜像同时拉取
-q, --quiet #拉取时不打印信息
--include-deps #包含的依赖
docker-compose restart 命令
#重启项目中的服务
#常用参数:
-t timeout #指定重启超时时间
docker-compose rm 命令
#删除已停止的容器服务
#常用参数
-f #强制删除
-s #停止容器
-v #删除容器挂载的数据卷
docker-compose start命令
docker-compose run命令
#启动一个服务
#常用参数
-d #后台运行
--name name #指定名称
-l key=val #设置label标签
-e key=val #设置环境变量
--entrypoint cmd #覆盖容器里的命令
--rm #启动后删除
-v --volume=[] #挂载数据卷
-w --workdir="" #工作目录
docker-compose pause 命令
#暂停一个服务容器
docker-compose kill 命令
#强制删除服务容器
#参数
-s signal #发送信号到服务容器
docker-compose config 命令
#验证并查看compose文件配置
–resolve-image-digests #将镜像标签标记为摘要
-q, –quiet #只验证配置,不输出。 当配置正确时,不输出任何内容,当文件配置错误,输出错误信息
–services #打印服务名,一行一个
–volumes #打印数据卷名,一行一个
docker-compose create 命令
#为服务创建容器
--force-recreate #强制重新创建
--no-recreate #如果容器存在,则不需要各不相关创建
--no-build #即使镜像不存在也不创建
--build #创建容器前,生成镜像
docker-compose scale命令
#指定服务运行的容器个数,通过service=num的参数来设置数量
docker-compose exec 命令
#在一个运行中的容器里执行命令
#常用参数
-d #后台运行
--privileged #以最高权限运行
-u user #指定用户运行指定命令
-index=index #当一个服务拥有多个容器时,可通过该参数登录到该服务下的任何服务
-e key=val #设置环境变量
-w --workdir="" #设置工作目录
docker-compose port 命令
#显示某个容器端口所映射的公共端口
#参数
–protocol=proto,指定端口协议,TCP(默认值)或者UDP
–index=index,如果同意服务存在多个容器,指定命令对象容器的序号(默认为1)
docker-compose push 命令
#推送服务依赖的镜像
#参数
--ignore-push-failures #忽略推送错误
docker-compose unpause 命令
#恢复处于暂停状态中的服务
Docker-Compose模板文件的说明
官方地址:
https://docs.docker.com/compose/compose-file/compose-file-v3/
docker-compose.yaml
#简单说:docker-compose.yaml文件只包含三层数据
#版本
#服务
#公共配置
官方案例
version: "3.9" #版本
services: #服务层
服务名:
服务配置
服务名2:
服务配置2
networks:
网络配置
volumes:
挂载数据配置
体验:官网小案例:python计数器
创建目录
mkdir composetest
cd composetest
创建一个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)
创建 requirements.txt
flask
redis
创建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"]
创建docker-compose.yml
version: "3.3" #我这里使用了3.3版本,由于我docker版本不是最新的,版本需要对应上才可以
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
当前目录下的文件如下
运行 docker-compose up
我这里在安装gcc时,时间有点久,我放弃了......
本文暂时没有评论,来添加一个吧(●'◡'●)