前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker 实用学习笔记(进阶篇)

Docker 实用学习笔记(进阶篇)

作者头像
Gorit
发布2021-12-08 21:09:53
4610
发布2021-12-08 21:09:53
举报
文章被收录于专栏:Gorit 带你学全栈系列

Docker 进阶

Author:Gorit

Refer:B站狂神说

2021年发表博文: 3/50

一、Docker Compose

没有学过 Dokcer 的同学,可以先看这篇 Docker 基础

1.1 简介

传统方式打包项目:

  1. Docker
  2. DockerFile build run 手动操作,单个容器
  3. 微服务,100个微服务,依赖关系

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

1.2 Docker Compose 官方介绍

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.

  • 使用 YAML 文件 来配置你的 app 服务
  • 使用一个 single command

Compose works in all environments: production, staging, development, testing, as well as CI workflows. You can learn more about each case in Common Use Cases.

Using Compose is basically a three-step process:

使用步骤

  1. Define your app’s environment with a Dockerfile so it can be reproduced anywhere.
    1. 创建 DockerFile 可以使你的 app 在任何地方运行
  2. Define the services that make up your app in docker-compose.yml so they can be run together in an isolated environment.
    1. 定义一个 docker-compose.yml 文件
  3. Run docker-compose up and Compose starts and runs your entire app.
    1. 运行 docker-compose 命令
    2. 启动项目

作用:项目编排

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

1.3 Docker-Compose 示例:

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

Compose: 重要概念

  • 服务 service,容器,应用。(web,redis,mysql…)
  • 项目 project,一组关联的容器,博客,web,mysql

1.4 安装 Docker Compose

  1. Linux 下载
代码语言:javascript
复制
# 下载
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 设置权限
sudo chmod +x /usr/local/bin/docker-compose
  1. windows 下载, 下载 Docker Desktop 貌似就能自带了

官方安装步骤

安装好之后,在shell 窗口输入

docker-compose --version,可以看到安装信息就可以了

1.5 开始体验

官网做了一个统计页面访问次数的 python 应用,用到了

  • python
  • redis
  • 启动 app.py
  • Dockerfile 应用打包为镜像
  • Docker-compose yaml 文件(定义整个服务,需要的环境 redis,web 等等)
  • 启动 docker-compose up
代码语言:javascript
复制
docker-compose up # 启动

docker-compose down # 停止

docker-compose stop # 暴力停止

流程:

  1. 创建网络
  2. 执行 Docker-compose.yml
  3. 启动服务
  4. composetest_web_1 is up-to-date composetest_redis_1 is up-to-date

、docker images

代码语言:javascript
复制
REPOSITORY                                         TAG                 IMAGE ID            CREATED             SIZE
composetest_web                                    latest              e7de448646d1        17 minutes ago      196MB
python                                             3.7-alpine          72e4ef8abf8e        29 hours ago        41.1MB
redis                                              alpine              c678242f9116        46 hours ago        31.6MB

docker-compose

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

docker-compose,通过 docker-compose 编写 YAML 配置文件,可以通过 compose 一键启动所有服务,停止

Docker 小结

  1. Docker 镜像,run => 容器
  2. DockerFile 构建镜像(服务打包)
  3. docker-compose、 启动项目(编排,多个微服务环境)
  4. Docker 网络

1.6 yaml 规则

docker-compose

代码语言:javascript
复制
# 3 层

version: "" # 版本
services: # 服务
	服务1:web
		# 服务配置
			images
			build
			network
			...
	服务2: redis
		...
	服务3: redis

# 从下网上才为顺序
version: "3.9"
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
    environment:
      FLASK_ENV: development
  redis:
    image: "redis:alpine"

1.7 docker-compose 搭建开源博客

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

博客

  1. 下载程序,安装数据库,配置…
  2. compose 应用,=> 一键启动
  3. 下载项目(docker-compose.yaml)
  4. 如果需要文件, Dockerfile
  5. 文件准备齐全(直接一键启动)

前台启动

docker -d

docker-compose -d

一切都很简单

1.8 微服务实战

  1. 编写自己的微服务
  2. dockerfile 构建镜像
  3. docker-compose.yml 编排项目
  4. 丢到服务器
  5. 启动

小结:

未来项目中只要有 docker-compose 文件,按照这个规则,启动编排容器

公司:docker-compose 直接启动

网上开源项目:docker-compose

假如项目要重新部署打包: docker-compose up --build # 重新构建

1.9 总结

工具、服务、容器

项目 compose:三层

  • 工程:project
  • 服务 服务
  • 容器 运行实例! docker k8s, 容器

二、Docker Swarm

2.1 初始化 swarm

搭建集群服务 (k8s)

购买服务器 4台服务器

安装 Docker

xshell 同步操作

  1. docker swarm init (生成节点)
  2. 假如 (管理者,worker)

目标,双主,双重

2.2 Raft 协议

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

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

Raft协议保证大多数节点都可用,高可用

2.3 体会

弹性,扩缩容,集群

以后告别了 docker run

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

集群:swarm:docker service

容器 => 服务

redis! = 3 份,容器!

集群:高可用,web -> redis (3台,在不同机器)

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

弹性:扩缩容

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

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

docker swarm 其实不难

会搭建集群,会启动服务,动态管理容器就可以了

2.4 概念总结

swarm

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

Node

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

Service

任务,可以在管理节点或者工作节点进行,核心:用户访问

Task

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

2.5 扩展命令

docker network ls

三、Docker Stack

docker-compose 单机部署项目

docker stack 部署,集群部署

代码语言:javascript
复制
# 单机
docker-compose up -d wordpress.yaml

# 集群
docker stack deploy wordpress.yaml

# docker-cmopose

四、Docker Secret

安全!配置密码,证书!

  • create
  • inspect
  • ls
  • rm

五、Docker Config

六、扩展到 K8S

云原生

Go 语言

Docker 是 Go 开发的

并发语言

go 语言学习!!!

云应用

k8s!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Docker 进阶
  • 一、Docker Compose
    • 1.1 简介
      • 1.2 Docker Compose 官方介绍
        • 1.3 Docker-Compose 示例:
          • 1.4 安装 Docker Compose
            • 1.5 开始体验
              • 1.6 yaml 规则
                • 1.7 docker-compose 搭建开源博客
                  • 1.8 微服务实战
                    • 1.9 总结
                    • 二、Docker Swarm
                      • 2.1 初始化 swarm
                        • 2.2 Raft 协议
                          • 2.3 体会
                            • 2.4 概念总结
                              • 2.5 扩展命令
                              • 三、Docker Stack
                              • 四、Docker Secret
                              • 五、Docker Config
                              • 六、扩展到 K8S
                                • 云原生
                                相关产品与服务
                                容器服务
                                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档