Docker Compose、Docker Swarm (docker进阶 狂神)

Docker Compose

简介
Docker

Dockerfile build run 手动操作,单个容器!

微服务,100个微服务,依赖关系。

Docker Compose 来轻松高效的管理容器,定义运行多个容器。

官方介绍

  • 定义运行多个容器
  • YAML file配置文件
  • single command。命令有哪些?

Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration. To learn more about all the features of Compose, see the list of features.

三步骤:

Using Compose is basically a three-step process:

1 Define your app’s environment with a Dockerfile so it can be reproduced anywhere.

Dockerfile保证我们的项目再任何地方可以运行

2 Define the services that make up your app in docker-compose.yml so they can be run together in an isolated environment.

services 什么是服务。

3 Run docker-compose up and Compose starts and runs your entire app.

启动项目

Compose是Docker官方的开源项目,需要安装!

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

安装

1 下载

# 官网提供 (没有下载成功)
curl -L "https://github.com/docker/compose/releases/download/1.26.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

授权

chmod +x /usr/local/bin/docker-compose

在这里插入图片描述

yaml规则
docker-compose.yaml 核心! 下面是个例子

version: '2.0'
services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

https://docs.docker.com/compose/compose-file/#compose-file-structure-and-examples

开源项目:博客

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

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

compose应用 => 一键启动

1 下载项目(docker-compse.yaml)
2 如果需要文件。Dockerfile
3 文件准备齐全,一键启动项目即可
在这里插入图片描述

实战:自己编写微服务上线

1 编写项目微服务

2 Dockerfile构建镜像

FROM java:8
 
COPY *.jar /app.jar
 
CMD ["--server.port=8080"]
 
EXPOSE 8080
 
ENTRYPOINT ["java", "-jar", "/app.jar"]

3 docker-compose.yml编排项目

version: '3.8'
services:
  xiaofanapp:
    build: .
    image: xiaofanapp
    depends_on:
      - redis
    ports:
      - "8080:8080"
 
  redis:
    image: "library/redis:alpine"

4 丢到服务器运行 docker-compose up

docker-compose down # 关闭容器
docker-compose up --build # 重新构建

在这里插入图片描述
在这里插入图片描述
总结:

工程、服务、容器

项目 compose: 三层

1 工程 Project
2 服务
3 容器 运行实例! docker k8s 容器

Docker Swarm

集群
购买服务器

登录阿里云账号,进入控制台,创建实例
4台服务器2G
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到此,我们的服务器购买成功!

四台机器安装docker环境

和我们单机安装一样

xshell直接同步操作,省时间!

Swarm集群搭建

在这里插入图片描述

docker swarm init --help
 
ip addr # 获取自己的ip(用内网的不要流量)
 
[root@iZ2ze58v8acnlxsnjoulk5Z ~]# docker swarm init --advertise-addr 172.16.250.97
Swarm initialized: current node (otdyxbk2ffbogdqq1kigysj1d) is now a manager.
To add a worker to this swarm, run the following command:
    docker swarm join --token SWMTKN-1-3vovnwb5pkkno2i3u2a42yrxc1dk51zxvto5hrm4asgn37syfn-0xkrprkuyyhrx7cidg381pdir 172.16.250.97:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

初始化结点docker swarm init
docker swarm join 加入一个结点!

# 获取令牌
docker swarm join-token manager
docker swarm join-token worker

[root@iZ2ze58v8acnlxsnjoulk6Z ~]# docker swarm join --token SWMTKN-1-3vovnwb5pkkno2i3u2a42yrxc1dk51zxvto5hrm4asgn37syfn-0xkrprkuyyhrx7cidg381pdir 172.16.250.97:2377
This node joined a swarm as a worker.

各台机器执行上面的命令把后面的结点都搭建进去

在这里插入图片描述

Raft协议

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

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

实验:

1、将docker1机器停止。宕机!双主,另外一个结点也不能使用了!
在这里插入图片描述

  • worker就是工作的,管理结点操作! 3台结点设置为了管理结点。
  • Docker swarm集群增加节点

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

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

体会

弹性、扩缩容!集群!

以后告别 docker run!

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

集群: swarm docker-service

k8s service

容器 => 服务!

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

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

体验:创建服务、动态扩容服务、动态更新服务
在这里插入图片描述

灰度发布(金丝雀发布)

在这里插入图片描述

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

查看服务
在这里插入图片描述
动态扩缩容

[root@iZ2ze58v8acnlxsnjoulk5Z ~]# docker service update --replicas 3 my-nginx
1/3: running   [==================================================>] 
1/3: running   [==================================================>] 
2/3: running   [==================================================>] 
3/3: running   [==================================================>] 
verify: Service converged 
 
 
[root@iZ2ze58v8acnlxsnjoulk5Z ~]# docker service scale my-nginx=5
my-nginx scaled to 5
overall progress: 3 out of 5 tasks 
overall progress: 3 out of 5 tasks 
overall progress: 3 out of 5 tasks 
overall progress: 5 out of 5 tasks 
1/5: running   [==================================================>] 
2/5: running   [==================================================>] 
3/5: running   [==================================================>] 
4/5: running   [==================================================>] 
5/5: running   [==================================================>] 
verify: Service converged 
 
 
[root@iZ2ze58v8acnlxsnjoulk5Z ~]# docker service scale my-nginx=1
my-nginx scaled to 1
overall progress: 1 out of 1 tasks 
1/1: running   [==================================================>] 
verify: Service converged 

移出!docker service rm

概念的总结
swarm

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

Node

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

Service

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

Task

容器内的命令、细节任务!
在这里插入图片描述

service

在这里插入图片描述

服务副本和全局服务

在这里插入图片描述
调整service以什么方式运行

--mode string                        
Service mode (replicated or global) (default "replicated")
 
docker service create --mode replicated --name mytom tomcat:7 默认的
docker service create --mode global  --name haha alpine ping www.baidu.com

其他命令学习方式

Docker Stack


docker-compose 单机部署项目
docker stack 集群部署
 
# 单机
docker-compose up -d wordpress.yaml
# 集群
docker stack deploy wordpress.yaml

Docker Secret

安全!配置密码!证书!
 
[root@iZ2ze58v8acnlxsnjoulk5Z ~]# docker secret --help
 
Usage:  docker secret COMMAND
 
Manage Docker secrets
 
Commands:
  create      Create a secret from a file or STDIN as content
  inspect     Display detailed information on one or more secrets
  ls          List secrets
  rm          Remove one or more secrets

Docker Config

配置!
[root@iZ2ze58v8acnlxsnjoulk5Z ~]# docker config --help
 
Usage:  docker config COMMAND
 
Manage Docker configs
 
Commands:
  create      Create a config from a file or STDIN
  inspect     Display detailed information on one or more configs
  ls          List configs
  rm          Remove one or more configs

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杵意

谢谢金主打赏呀!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值