首页 > 其他分享 >docker compose-批量容器编排

docker compose-批量容器编排

时间:2024-09-25 15:26:14浏览次数:13  
标签:compose 服务 批量 wordpress docker root 节点


第八章docker compose

三步骤:

1.Dockerfile保证我们的项目在任何地方可以运行。

2.services 什么是服务。docker-compose.yml这个文件怎么写。

3.启动项目

作用:批量容器编排。

compose是docker开源项目,需要安装!

Dockerfile 让程序在任何地方运行。web服务。redis、MySQL、nginx...多个容器。

docker-compose.yml看起来像这样:

version: "3.9"  # optional since v1.27.0services:

  web:

    build: .

    ports:

      - "8000:5000"

    volumes:

      - .:/code

      - logvolume01:/var/log

    links:

      - redis

  redis:

    image: redisvolumes:

  logvolume01: {}

docker-compose up 100个服务。

Compose重要的概念

服务services,容器。应用(web、redis、mysql.....)

项目project。一组关联的容器。博客。web、MySQL。

1.安装

#这个地址比较慢

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

#这个可能快点:

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-'uname -s'-'uname -m' > /usr/local/bin/docker-compose

docker compose-批量容器编排_docker compose

2.授权

#官方的有问题会出错,

[root@localhost bin]# docker-compose version

/usr/local/bin/docker-compose:行1: 未预期的符号 `<' 附近有语法错误

/usr/local/bin/docker-compose:行1: `<html><body><h1>400 Bad request</h1>'

#自己下载了一个然后重命名

[root@localhost bin]# ls

docker-compose-Linux-x86_64

[root@localhost bin]# mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

[root@localhost bin]# ls

docker-compose

[root@localhost bin]# chmod +x /usr/local/bin/docker-compose

[root@localhost bin]# docker-compose -v

docker-compose version 1.14.0-rc2, build 24dae73

[root@localhost bin]# docker-compose -version

docker-compose version 1.14.0-rc2, build 24dae73

[root@localhost bin]#

#成功!

体验

Try Docker Compose | Docker Documentation

python应用。计数器。redis!

1.应用app.py

2.Dockerfile应用打包为镜像

3.Docker-compose.yaml文件(定义整个服务,需要的环境。web、redis)完整的上线服务!

4.启动compose项目(docker-compose up)

流程:

1.创建网络

2.执行Docker-compose.yml

3.启动服务

Docker-compose.yaml

Creating composetest_web_1 ...

Creating composetest_redis_1 ...

docker compose-批量容器编排_博客_02

1.文件名composetest

2.服务

version: "3.9"services:

  web:

    build: .

    ports:

      - "8000:5000"

  redis:

    image: "redis:alpine"

自动的默认规则?

docker compose-批量容器编排_网站_03

docker images

docker compose-批量容器编排_容器编排_04

[root@localhost ~]# 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负载均衡。

3.网络规则

docker compose-批量容器编排_docker_05

10个服务=》项目(项目中的内容都在同个网络下。域名访问)

docker compose-批量容器编排_博客_06

如果在同一个网络下,我们可以通过域名访问。

HA!

停止:

docker-compose down     

ctrl+c

docker compose-批量容器编排_博客_07

docker-compose

以前都是单个docker run启动容器。

docker-compose。通过docker-compose编写yaml配置文件、可以通过compose一件启动所有服务,停止!

docker小结:掌握这4点,docker已经满足日常了

1.docker镜像。run=》容器

2.DockerFile构建镜像(服务打包)

3.docker-compose启动项目(编写、多个微服务/环境)

4.Docker网络

yaml规则

docker-compose.yaml    核心。

Compose file version 3 reference | Docker Documentation

# 3层!

version:    ''    #版本

services    #服务

    服务1:web

    #服务配置

    images

    build

    network

    ...

    服务2: redis

#其他配置  网络/卷、全局规则

volumes:

networks:

configs:

docker compose-批量容器编排_容器编排_08

学习,要掌握规律!

只要多写,多看。compose.yaml配置。!

1.官方·1文档

Compose file version 3 reference | Docker Documentation

2.开源项目compose.yaml

redis、mysql、mq!

开源项目

博客

步骤

下载程序、安装数据库、配置....

compose应用。=》一键启动!

1.下载项目(docker-compose.yaml)

2.如果需要文件。Dockerfile

3.文件准备齐全(直接一键启动项目!)

案例文档:

WordPress samples | Docker Documentation

[root@localhost home]# mkdir my_wordpress

[root@localhost home]# cd my_wordpress/

[root@localhost my_wordpress]# vim docker-compose.yml

version: "3.3"

    

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

      WORDPRESS_DB_USER: wordpress

      WORDPRESS_DB_PASSWORD: wordpress

      WORDPRESS_DB_NAME: wordpressvolumes:

  db_data: {}

  wordpress_data: {}

然后执行

[root@localhost my_wordpress]# docker-compose up

Creating network "mywordpress_default" with the default driver

Creating volume "mywordpress_db_data" with default driver

Creating volume "mywordpress_wordpress_data" with default driver

Pulling db (mysql:5.7)...

5.7: Pulling from library/mysql

15115158dd02: Downloading [====>                                              ]  2.513MB/27.15MB

d733f6778b18: Download complete

1cc7a6c74a04: Downloading [=======================>                           ]  1.981MB/4.179MB

c4364028a805: Download complete

82887163f0f6: Download complete

28abcb7f57e0: Downloading [========>

                     

使用浏览器访问:宿主机IP+8000端口访问,即可进入安装wordpress界面

以下是安装好的界面。

docker compose-批量容器编排_博客_09

docker -d

docker-compose up -d

集群工作模式

docker compose-批量容器编排_docker compose_10

搭建SWARM集群

先把docker卸载然后安装,前面有安装方式,这里就不再缀诉。

docker compose-批量容器编排_博客_11

docker compose-批量容器编排_网站_12

docker compose-批量容器编排_docker compose_13

初始化节点

docker swarm init

docker compose-批量容器编排_docker compose_14

docker swarm join 加入一个节点!

#生成管理节点或工作节点,指定某一台成为管理或者工作节点就将生成的令牌粘贴到指定主机运行。

docker swarm join-token manager

docker swarm join-token worker


docker compose-批量容器编排_博客_15

把后面的节点都搭建进去 

docker compose-批量容器编排_docker_16

1.生成主节点init

2.加入(管理者、worker)

目标:双主双从!

Raft协议(高可用)

双主双从:假设一个节点挂了!其他节点是否可用?

Raft协议:保证大多数节点存活才可以用。只要>1,集群至少大于3台!

实验

1.将docker机器停止。宕机!双主,另外一个主节点也不能使用了!

docker compose-批量容器编排_容器编排_17

2.可以将其他节点离开集群

docker compose-批量容器编排_网站_18

3.work就是工作的、管理节点操作!3台机器设置为了管理节点。

十分简单:集群,可用!3个主节点。>1台管理节点存活!

Raft协议:保证大多数节点存活,才可以使用,高可用!

结论

弹性、扩缩容!集群!

以后告别docker run!

docker-compose up!   启动一个项目。

集群:swarm     docker service

容器=》服务!

容器=>服务 !=>副本!

redis服务=>10个副本!(同时开启10个rendis容器)

体验:创建服务、动态扩展服务、动态更新服务。

docker compose-批量容器编排_docker compose_19

灰度发布:金丝雀发布!(不停机升级)

docker compose-批量容器编排_网站_20

docker run 容器启动! 不具有扩缩容器

docker service 服务!具有扩缩容器,滚动更新!

查看服务REPLICAS

docker compose-批量容器编排_docker compose_21

动态扩容

docker compose-批量容器编排_网站_22

服务,集群中任意的节点都可以访问。服务可以有多个副本动态扩容实现高可用!

弹性、扩缩容!

10台!10000台!卖给别人!虚拟化!

服务的高可用,任何企业,云!

docker compose-批量容器编排_docker_23

移除!

docker swarm其实并不难

只要会搭建集群、会启动服务、动态管理容器就可以了!

概念总结

swarm

集群的管理和编号。    docker可以初始化一个swarm集群,其他节点可以加入。(管理、工作者)

Node

就是一个docker节点。多个结点就组成了一个网络集群。

Service

任务,可以在管理节点或者工作节点来运行。核心。!用户访问!

Task

容器内命令,细节任务!

docker compose-批量容器编排_博客_24

创建逻辑不变

命令->管理->api->调度->工作节点(创建Task容器维护创建!)

调整service以什么方式运行

docker compose-批量容器编排_容器编排_25

拓展

网络模式:“PublishMode”:"ingress"

Swarm:

Overlay:

ingress:特殊的Overlay网络!负载均衡的功能!IPVS VIP!

虽然docker在4台机器上,实际网络是同一个! ingress网络,是一个特殊的Overlay网络    整体!

docker compose-批量容器编排_容器编排_26

Docker Stack

docker compose-批量容器编排_容器编排_27

docker-compose 单机部署项目!

Docker Stack部署,集群部署!

#单机

docker-compose up -d wordpress.yaml

#集群

docker stack deploy wordPress.yaml

....

Docker Secret

安全!配置密码,证书!

docker compose-批量容器编排_docker compose_28

Docker Config

配置

docker compose-批量容器编排_网站_29

标签:compose,服务,批量,wordpress,docker,root,节点
From: https://blog.51cto.com/HMJP/12109679

相关文章

  • docker笔记_数据卷、挂载
    docker数据存储概述数据卷(Volumes)特点操作绑定挂载(BindMounts)内存挂载(tmpfs)总结概述镜像构建过程中,所产生的layer都是只读层,只有在创建容器时才会生成一个可写的容器层(contatnerlayer)。如下图:在默认情况下,容器内部创建的所有文件都存储在可写层中。这导致:获取......
  • 用C#写个PDF批量合并工具简化日常工作
    用C#写个PDF批量合并工具简化日常工作一.前言由于项目需要编写大量的材料,以及各种签字表格、文书等,最后以PDF作为材料交付的文档格式,过程文档时有变化或补充,故此处理PDF文档已经成为日常工作的一部分。网上有各种PDF处理工具,总是感觉用得不跟手。最后回顾自己的需求总结为以下......
  • 这才是批量update的正确姿势!
    这才是批量update的正确姿势! 前言最近我有位小伙伴问我,在实际工作中,批量更新的代码要怎么写。这个问题挺有代表性的,今天拿出来给大家一起分享一下,希望对你会有所帮助。1案发现场有一天上午,在我的知识星球群里,有位小伙伴问了我一个问题:批量更新你们一般是使用whencase吗......
  • ADD failed: file not found in build context or excluded by .dockerignore: stat i
    这个错误信息表明在构建Docker镜像时,Docker守护进程(daemon)在尝试将名为 irap_rule_center 的文件或目录添加到镜像中,但是没有在构建上下文(buildcontext)中找到这个文件或目录,或者这个文件或目录被 .dockerignore 文件忽略了。要解决这个问题,你可以按照以下步骤操作:检查文件......
  • 这才是批量update的正确姿势!
    前言最近我有位小伙伴问我,在实际工作中,批量更新的代码要怎么写。这个问题挺有代表性的,今天拿出来给大家一起分享一下,希望对你会有所帮助。1案发现场有一天上午,在我的知识星球群里,有位小伙伴问了我一个问题:批量更新你们一般是使用whencase吗?还是有其他的批量更新方法?我的回......
  • Cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-
    安装docker-compose时候。出现错误1、在线拉取太费劲。最后使用的离线安装、、参考内容。.github手动下载文件:https://github.com/docker/compose/releases/tag/1.25.0-rc4选择-86版本的内容将文件上传到/usr/local/bin/目录下,重命名为docker-compose,修改文件权限:chmod+x......
  • 【随手记录】docker部署jenkins,集成maven、spring项目
    1、下载镜像文件到服务器dockerpulljenkins/jenkins:lts-jdk17或离线导入镜像:dockerload-ijenkins-lts-jdk17检查镜像是否导入:dockerimages|grepjenkinsjenkins/jenkinslts-jdk177a7add0bf3da2weeksago470MB2024年6月以后国内很多大型的Dock......
  • 828华为云征文 | 华为云X实例部署Docker应用的性能评测优化与实践指南
    目录1.前言2.测试环境设置2.1硬件与软件配置2.2网络环境与带宽2.3测试应用介绍3.Docker及应用的安装部署步骤3.1安装Docker3.2使用Docker部署Elasticsearch3.3使用Docker部署MySQL3.4使用Docker部署Nginx4.性能测试与评测标准4.1资源占用分析4.2网......
  • Docker Desktop (WSL)部署MySQL使用Navicat 16 for MySQL远程连接
    DockerDesktop(WSL)部署MySQL使用Navicat16forMySQL远程连接1.docker拉取镜像dockerpullmysql2.查看镜像dockerimages3.启动MySQL实例dockerrun-d-p3307:3306--name=mysql-eMYSQL_ROOT_PASSWORD=123456mysql命令详解参数详解-d在后台运行容......
  • 在windows上使用docker创建mysql数据库
    可以以下步骤在Windows上使用Docker创建MySQL数据库:安装Docker:确保Windows上已安装DockerDesktop。拉取MySQL镜像:打开终端,运行以下命令:dockerpullmysql启动MySQL容器:使用以下命令启动一个MySQL容器(替换your_password为你的密码):dockerrun--namemysql-container......