分布式架构 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简介
针对的问题
- 本地运行环境与生产环境不一致的问题
- 应用程序资源使用的问题
- 快速扩展弹性伸缩的问题
docker 与虚拟机的区别
- 虚拟机在虚拟化基础上运行虚拟OS,docker试使用docker engine 直接操作本地OS,因此docker的资源利用率更高
- 虚拟化解决的核心问题是资源调配,容器解决的核心问题是应用开发、测试和部署。
- 容器是共享内核的,没有客户机操作系统
容器隔离
rootfs
- 联合挂载技术
- 使用写时复制
namespace
容器使用哪些资源
Cgroup
解决的问题
- 资源控制
- 优先级分配
- 资源统计
- 进程控制
子系统
常用命令
环境信息命令
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
跨节点容器编排工具