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

配置

相关推荐
AI慧聚堂1 分钟前
自动化 + 人工智能:投标行业的未来是什么样的?
运维·人工智能·自动化
不爱学英文的码字机器3 分钟前
[Linux] Shell 命令及运行原理
linux·运维·服务器
cdut_suye14 分钟前
Linux工具使用指南:从apt管理、gcc编译到makefile构建与gdb调试
java·linux·运维·服务器·c++·人工智能·python
qq_4336184419 分钟前
shell 编程(三)
linux·运维·服务器
苹果醋326 分钟前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
两张不够花28 分钟前
Jenkins 持续集成部署
运维·jenkins
码农土豆1 小时前
PaddlePaddle飞桨Linux系统Docker版安装
linux·docker·paddlepaddle
Hacker_xingchen1 小时前
天融信Linux系统安全问题
linux·运维·系统安全
丘狸尾1 小时前
[cisco 模拟器] ftp服务器配置
android·运维·服务器
黑客老陈1 小时前
新手小白如何挖掘cnvd通用漏洞之存储xss漏洞(利用xss钓鱼)
运维·服务器·前端·网络·安全·web3·xss