程序笔记   发布时间:2022-07-05  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Docker Compose容器编排大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

官方文档:https://docs.docker.com/compose/

简介

Docker Compose是一种工具,旨在帮助定义和共享多容器应用程序。使用 Compose,我们可以创建一个 YAML 文件来定义服务,并且可以使用单个命令来启动或拆除所有内容。 微服务多并且存在依赖关系,通过Docker Compose来简单高效管理、运行多个容器。

安装 Docker Compose

docker-compose version

体验

第 1 步:设置

  1. 为项目创建一个目录
cd /Users/docker-study
mkdir composetest
cd composetest
  1. 新建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)
  1. 新建requirements.txt文件
flask
redis

第 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"]

第 3 步:在 Compose 文件中定义服务

创建docker-compose.yml 文件

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

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

第 4 步:使用 Compose 构建并运行您的应用程序

docker-compose up

第 5步: 测试

访问:http://0.0.0.0:5000/ 或者终端执行 :curl localhost:5000

小结

docker service 命令查看

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 (比如:composetest_redis_1、composetest_web_1) 集群状态下 服务不可能只有一个实例。都是弹性扩缩容。后面通过Docker Swarm来弹性扩缩容

docker network ls 

7502b862c0af   composetest_default   bridge    local

如果在同一个网络下 可以直接使用域名访问

停止

docker-compose stop

以前都是docker run 运行单个服务 ,通过docker-compose编写yaml配置文件,可以一键启动、停止所有服务

Compose配置编写规则

docker-compose.yaml 核心 官方文档:https://docs.docker.com/compose/compose-file/ 查看Compose版本和 Docker版本对应关系,Compose命令等

Docker Compose容器编排

# 3层
version: 3.8 # 版本
service: # 服务
	服务1: web
		# 服务配置
		images
		build
		network
	服务2: redis

# 其他配置 网络/卷、全局规则
volumes:
networks:
configs:
命令 说明
depends_on 控制容器启动顺序

使用COR_602_11845@pose一键部署WP博客

官方地址: https://docs.docker.com/samples/wordpress/

  1. 创建项目目录
cd my_wordpress/
  1. 编写docker-compose.yml
version: "3.9"
    
services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_password: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_password: wordpress
    
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - wordpress_data:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_password: wordpress
      WORDPRESS_db_name: wordpress
volumes:
  db_data: {}
  wordpress_data: {}
  1. 启动
docker-compose up -d

ERROR: no matching manifest for linux/arm64/v8 in the manifest list entries

去dockerHub搜索镜像会发现,mysql5.7是amd64的架构,也就是Intel CPU的架构,也叫做x86_64。存在适配型问题,m1的芯片没有适合的镜像。 docker官方提供的MySQL没有arm64架构的,但MySQL官方提供的mysql/mysql-server有

# 修改yml文件:image: mysql:5.7 ==》 image: mysql/mysql-server
docker pull mysql/mysql-server
  1. 访问 localhost:8000

    Docker Compose容器编排

    Docker Compose容器编排

实战

  1. 项目application.properties
server.port=8080
spring.redis.host=redis
  1. Dockfile文件
FROM java:8

COPY target/*.jar /app.jar

CMD ["--server.port=8080"]

EXPOSE 8080

ENTRYPOINT ["java","-jar","app.jar"]
  1. 编写docker-compose.yml文件
version: 3.9
services:
  mpy-app:
    build: .
    image: mpy-app
    depends_on:
      - redis
    ports:
      - "8080:8080"
  redis:
    image: "library/redis:alpine"
  1. 运行
# 端口8080被占用
docker-compose up 
lsof -i:8080 
# 停止占用端口的容器
docker stop 容器id
docker-compose up --build
@H_607_207@
  • 访问测试 http://localhost:8080/Hello 返回:Hello docker, views = 1
  • 总结

    compose 3层:

    • 工程:Project
    • 服务:docker镜像
    • 容器:运行实例 docker 、k8s

    大佬总结

    以上是大佬教程为你收集整理的Docker Compose容器编排全部内容,希望文章能够帮你解决Docker Compose容器编排所遇到的程序开发问题。

    如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
    如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。