分布式架构 Docker

  • 环境准备
    • docker 安装
      • 基于apt包管理器安装
  • docker简介
    • 针对的问题
    • docker 与虚拟机的区别
  • 容器隔离
    • rootfs
    • namespace
    • Cgroup
      • 解决的问题
      • 子系统
  • 常用命令
    • 环境信息命令
    • 日志信息命令
    • 生命周期管理命令
    • 运维操作命令
    • 镜像管理命令
    • 镜像仓库文件
  • dockerfile
    • 针对的问题
    • dockerfile 实践
  • docker 镜像
  • 数据卷
    • 创建数据卷
    • 挂载数据卷
    • 共享数据卷
    • 删除数据卷
    • 备份和迁移数据卷
  • docker compose
  • docker swarm

环境准备

docker 安装

基于apt包管理器安装

安装

sudo apt-get updatesudo apt-get install docker.io

卸载

sudo apt-get purge docker.iosudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd

添加用户到docker组,解决sudo的问题

sudo addgroup -a <username> docker sudo service docker restartid <username>

docker简介

针对的问题

  1. 本地运行环境与生产环境不一致的问题
  2. 应用程序资源使用的问题
  3. 快速扩展弹性伸缩的问题

docker 与虚拟机的区别

  1. 虚拟机在虚拟化基础上运行虚拟OS,docker试使用docker engine 直接操作本地OS,因此docker的资源利用率更高
  2. 虚拟化解决的核心问题是资源调配,容器解决的核心问题是应用开发、测试和部署。
  3. 容器是共享内核的,没有客户机操作系统

容器隔离

rootfs

  • 联合挂载技术
  • 使用写时复制

namespace

容器使用哪些资源

Cgroup

解决的问题

  1. 资源控制
  2. 优先级分配
  3. 资源统计
  4. 进程控制

子系统

常用命令

环境信息命令

docker infodocker version

日志信息命令

docker eventsdocker logs

生命周期管理命令

docker createdocker rundocker start/stop/restartdocker killdocker rmdocker exec

运维操作命令

docker ps : 列出容器docker inspect : 获取容器的元数据docker top : 获取容器进程信息docker attach : 连接正在运行的容器docker update : 修改镜像

镜像管理命令

docker images : 查看镜像docker images --filter dangling=true : 查看所有悬空镜像docker images prune : 清除所有悬空镜像docker tag : 标记本地镜像 创建一个引用 指定镜像属于哪个注册中心docker save -o : 镜像保存docker load -i : 导入导出的镜像

镜像仓库文件

docker login/logoutdocker pulldocker pushdocker search

dockerfile

针对的问题

完整地重现镜像的创建过程

dockerfile 实践

docker 镜像

数据卷

容器中的特定文件或者文件夹

创建数据卷

docker volume create --name vol_simple

挂载数据卷

docker volume create --name vol_simpledocker run -d -v vol_simple:/data ubuntu /bin/bash

共享数据卷

docker run -d -it --volumes-from share_data --volumes-from share_data1 --name volume_from1 ubuntu /bin/bash

删除数据卷

docker volume rmdocker volume rm -vdocker run -rm : 删除容器的同时删除挂载的数据卷

备份和迁移数据卷

docker run --rm --volumes-from share_data -v $(pwd):/backup ubuntu tar cvf /backup/data.tar /datadocker run -d -it --name vol_bck -v /data ubuntu /bin/bash

docker compose

定义和运行多个docker容器的应用

docker swarm

跨节点容器编排工具