docker进阶 compose等

Docker Compose

简介:

比如有100个微服务,不需要手动启动每一个,可以使用docker compose定义运行多个容器,高效管理化。

定义、运行多个容器

YAML file配置文件

single command 命令

复制代码
写docker-compose.yaml
docker-compose up 启动项目

Compose

复制代码
version: "3"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

配置web连接到redis,会先启动redis,再启动web应用

复制代码
官方下载compose
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

#授权
chmod +x /usr/local/bin/docker-compose

构建个应用在/root/doc/compose_test

1、应用app.py

2、Dockerfile构建镜像

3、docker-compose.yaml

4、docker-compose up 启动

#可以先docker-compose build后再 up启动

启动后流程

ctrl+c停止退出后,可以重新docker-compose up启动

默认的服务名,文件名_服务名_num

网络规则,compose自动生成了一个网络,项目中的内容都在同一个网络中,通过域名访问

如果在同一个域名下,可以直接通过域名进行访问,比如redis服务直接通过redis域名访问,而不需要通过ip,如下

yaml规则

docker-compose.yaml核心

复制代码
version: '' #版本
services:  #服务
	服务1: web
        #服务配置
        imgaes
        build
        network
        ....
	服务2: redis
		.....
	.....

compose 官方文档

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

搭建博客

官方文档地址:

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

复制代码
version: "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: wordpress
volumes:
  db_data: {}
  wordpress_data: {}

进入yaml的文件夹docker-compose up 启动项目

后台启动

docker-compose up -d

Docker Swarm

集群搭建

初始化节点

docker swarm init --advertise-addr 192.168.148.136

#加入节点

docker swarm join

#在主节点主机执行下面的命令可以获得加入成为主节点的命令,然后将此命令在对应的机器上执行加入。

docker swarm join-token manager #获取主节点加入的命令

下面的命令就是生成的

步骤

1、生成主节点

2、加入(管理者、worker)

目标:双主双从(一般至少三个主节点)

Raft协议

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

Raft协议:保证大多数节点存活才可以用。

如果将主节点挂掉一个,会导致主节点的数量过少而不能使用集群

docker1主节点关闭重启后由原来的leader变成了reachable,

#在对应节点上执行,会离开集群

docker swarm leave

需要保证有两个主节点存在才能使用

集群可以用,3个主节点 ,大于1台管理节点存活

使用docker service 进行集群的操作

复制代码
#类似docker run
docker service create -p 8888:80 --name mynginx nginx

docler run 容器启动,不具有扩缩容器功能
docker service   集群启动,可以扩缩容

docker service 启动的时候,虽然是在docker1服务器上启动,但是容器可能启动在集群的docker3中

复制代码
docker service update --replicas 10 mynginx
#创建10个mynginx的副本。
docker service update --replicas 10 mynginx
#回滚到剩下1个节点

#动态扩缩容
docker service scale mynginx=5

#集群移除服务
docker service rm mynginx  

swarm是小型的k8s。

只要在集群的某一台服务器上启动一个服务,所有集群里面机子都可以访问得到。

概念总结

swarm

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

Node

就是一个docker节点,多个节点就组成了一个网络集群(管理、工作者)

Service

任务,可以在管理节点或工作节点来运行(核心!),用户需要进行访问的服务。

使用docker service 进行操作

Task

容器内的命令,细节任务!

replicas :4 表示四个副本,可以进行均衡调度

docker stack

docker-compose 单机部署

docker stack 集群部署

复制代码
#单机
docker-compose up -d wordpress.yaml

#集群
docker stack deploy workpress.yaml

docker secret

安全证书、密码等

docker config

配置

相关推荐
广州灵眸科技有限公司7 小时前
4G 模组开机自连 systemd 服务方案:基于灵眸科技EAI1106--Core-T
运维·服务器·科技
天远数科8 小时前
零信任架构实战:基于天远企业股权变更构建自动化商业银行对公授信存续期股权异动与资产抽逃预警网关
运维·人工智能·架构·自动化
qq_401700418 小时前
Linux设备树详解
linux·运维·服务器
岁月宁静9 小时前
一个 AI 项目从本地到上线,要经过哪些步骤?全流程讲清楚
python·docker·agent
奇树谦9 小时前
Windows CMD 下 mc 运维指南:SeaweedFS 安装验收与 MinIO 数据迁移
运维·windows
刚入门的大一新生9 小时前
Linux-信号
linux·运维·服务器
车软学堂9 小时前
CANoe自动化:跑起第一个测试用例
运维·车载系统·自动化·汽车·测试用例
L02082411 小时前
Kubernetes Ingress|CNI 网络模型|Calico 网络策略|Pod 调度器完整实战教程
运维·网络·云原生·容器·kubernetes