Home | 简体中文 | 繁体中文 | 杂文 | 知乎专栏 | 51CTO学院 | CSDN程序员研修院 | Github | OSChina 博客 | 腾讯云社区 | 阿里云栖社区 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏多维度架构

Netkiller Virtualization 手札

Docker, Kubernetes, KVM, Vagrant, OpenVZ, VirtualBox ...

Mr. Neo Chan, 陈景峯(BG7NYT)



中国广东省深圳市望海路半岛城邦三期
518067
+86 13113668890


2015-07-14

电子书最近一次更新于 2021-12-26 11:01:26

版权声明

转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。

http://www.netkiller.cn
http://netkiller.github.io
http://netkiller.sourceforge.net
微信公众号: netkiller
微信:13113668890 请注明“读者”
QQ:13721218 请注明“读者”
QQ群:128659835 请注明“读者”
知乎专栏 | 多维度架构

$Date$


致读者

Netkiller 系列手札 已经被 Github 收录,并备份保存在北极地下250米深的代码库中,备份会保留1000年。

Preserving open source software for future generations

The world is powered by open source software. It is a hidden cornerstone of modern civilization, and the shared heritage of all humanity.

The GitHub Arctic Code Vault is a data repository preserved in the Arctic World Archive (AWA), a very-long-term archival facility 250 meters deep in the permafrost of an Arctic mountain.

We are collaborating with the Bodleian Library in Oxford, the Bibliotheca Alexandrina in Egypt, and Stanford Libraries in California to store copies of 17,000 of GitHub’s most popular and most-depended-upon projects—open source’s “greatest hits”—in their archives, in museum-quality cases, to preserve them for future generations.

https://archiveprogram.github.com/arctic-vault/

目录

1. 自述
1.1. 写给读者
1.2. 作者简介
1.3. 如何获得文档
1.4. 打赏(Donations)
1.5. 联系方式
1. Docker
1.1. Installation
1.1.1. CentOS 8 Stream
1.1.1.1. docker-compose
1.1.1.2. 切换镜像
1.1.2. Ubuntu docker-ce
1.1.3. 测试 Docker
1.1.4. 重置 Docker
1.1.5. 早起版本
1.1.5.1. CentOS 7 docker-ce
1.1.5.2. CentOS 6
1.1.5.3. Ubuntu
1.2. 配置 Docker
1.2.1. 开启远程访问
1.2.1.1.
1.2.1.2. /etc/docker/daemon.json
1.2.1.3.
1.2.1.4. 配置SSL证书
1.2.1.5. 通过 SSH 连接远程 Docker
1.2.2. 镜像配置
1.2.2.1. 临时选择镜像
1.2.2.2. 切换国内镜像
1.2.3. DNS
1.2.4. ulimit 资源
1.3. 镜像
1.3.1. 搜索镜像
1.3.2. 获取镜像
1.3.3. 列出本地镜像
1.3.4. tag
1.3.5. 保存和载入镜像
1.3.6. 删除本地镜像
1.3.7. history 镜像历史纪录
1.4. 容器
1.4.1. 查看容器
1.4.2. 启动与终止容器
1.4.3. 进入容器
1.4.4. 运行容器内的命令
1.4.5. 导出和导入容器
1.4.5.1. Ubuntu
1.4.5.2. Mac 导出与导入
1.4.6. 停止所有容器
1.4.6.1. 信号处理
1.4.7. 删除容器
1.4.8. log-driver
1.4.9. 操作系统
1.4.9.1. 设置环境变量
1.4.9.2. /etc/hosts 配置
1.4.9.3. sysctl
1.4.9.4. ulimits
1.4.10. 查看容器内运行的进程
1.4.11. 更新容器资源配置
1.4.12. 查看容器的退出状态
1.4.13. 暂停与恢复容器
1.4.14. 对比容器的变化
1.4.15. 查看容器状态
1.4.16. 重启容器
1.4.17. DNS
1.5. 卷管理
1.5.1. 列出卷
1.5.2. 创建卷
1.5.3. 挂在镜像
1.5.4. 检查卷
1.5.5. 删除卷
1.5.6. 销毁所有未使用的卷
1.5.7. 在多个容器间共享卷
1.5.8. 容器绑定本地文件系统
1.5.9. 只读权限
1.6. Docker 网络
1.6.1. docker0 IP地址
1.6.2. 容器指定固定IP地址
1.6.3. 创建子网
1.6.4. 创建 overlay 网络
1.6.5. 网络命令空间
1.7. 日志
1.7.1. 查看默认驱动
1.7.2. Fluentd 配置
1.7.3. Docker 配置
1.7.4. docker-compose 编排
1.8. 仓库
1.8.1. Docker 官方仓库
1.8.1.1. 登陆仓库
1.8.1.2. 获取镜像
1.8.1.3. 上传镜像
1.8.2. 私有仓库
1.8.2.1. 搭建私有仓库
1.8.2.2. 推送镜像到私有仓库
1.8.2.3. 查询镜像
1.8.2.4. registry 镜像高级配置
1.8.2.4.1. 私有仓库认证
1.8.2.5. registry 接口
1.8.3. Harbor
1.9. Swarms
1.9.1. 管理 Swarms
1.9.1.1. 查看 Swarms 版本
1.9.1.2. 初始化 Swarms
1.9.1.3. 显示 join-token
1.9.1.4. 创建虚拟机
1.9.1.5. 显示虚拟机列表
1.9.1.6. 设置管理节点
1.9.1.7. 环境变量
1.9.1.8. 切换节点
1.9.1.9. 启动/停止节点
1.9.1.10. 离线
1.9.2. Stack
1.9.3. 服务
1.9.3.1. 创建 Service
1.9.3.2. 删除 Service
1.9.3.3. inspect
1.9.4. swarm 卷管理
1.9.4.1. Host Volumes
1.9.4.2. Named Volumes
1.9.4.3. 共享卷
1.10. docker 命令
1.10.1. docker - A self-sufficient runtime for containers
1.10.1.1. 连接远程主机
1.10.1.2. 查看 docker 信息
1.10.1.3. run
1.10.1.3.1. --privileged 让 root 具备真正的 root 权限
1.10.1.4. start / stop / restart
1.10.1.5. ps
1.10.1.5.1. 不截断输出,显示完整信息
1.10.1.6. kill 信号
1.10.1.7. top
1.10.1.8. inspect
1.10.1.8.1. 获取容器名称
1.10.1.8.2. 容器镜像名称
1.10.1.8.3. 获取容器主机名 Hostname
1.10.1.8.4. 查询 IP 地址
1.10.1.8.5. 查询子网
1.10.1.8.6. 容器日志
1.10.1.8.7. 获取 json 配置
1.10.1.8.8. 函数
1.10.1.8.9. 综合查询
1.10.1.9. images
1.10.1.9.1. Getting a new image
1.10.1.10. logs
1.10.1.10.1. 跟踪实时日志
1.10.1.10.2. 显示时间戳
1.10.1.10.3. 显示一段范围内的日志
1.10.1.11. 重置 Docker
1.10.1.12. 仓库操作
1.10.1.12.1. 登陆
1.10.1.12.2. 注销
1.10.1.13. build
1.10.1.14. 网络管理
1.10.1.15. 事件信息
1.10.1.16. 从 docker 中复制文件
1.10.1.17. 查看历史记录
1.10.1.18. 安全漏洞扫描
1.10.1.19. Contexts
1.10.1.19.1. 查看
1.10.1.19.2. 创建
1.10.1.19.3. inspect
1.10.1.19.4. 使用 context
1.10.1.19.5. 删除
1.10.1.19.6. --context 参数
1.10.2. docker-compose - Define and run multi-container applications with Docker.
1.10.2.1. 安装 docker-compose
1.10.2.1.1. 使用 pip 安装
1.10.2.1.2. OSCM 安装
1.10.2.2. 查看版本号
1.10.2.3. 快速入门
1.10.2.4. 启动
1.10.2.5. 停止
1.10.2.5.1. 停止
1.10.2.5.2. 启动
1.10.2.6. 查看进程
1.10.2.7. 查看日志
1.10.2.8. 执行命令
1.10.2.9. 运行
1.11. Dockerfile
1.11.1. 基于 Dockerfile 创建镜像
1.11.1.1. 创建 Dockerfile 文件
1.11.1.2. 创建镜像
1.11.1.3. 运行镜像
1.11.1.4. 测试 Nginx
1.11.1.5. 提交镜像
1.11.2. Dockerfile 缺失的工具
1.11.2.1. debian 镜像
1.11.2.2. centos
1.11.3. Dockerfile 语法
1.11.3.1. COPY
1.11.3.2. EXPOSE
1.11.3.3. ENTRYPOINT
1.11.3.3.1. docker-entrypoint.sh 文件
1.12. docker-compose.yml 容器编排
1.12.1. 版本号
1.12.2. 镜像
1.12.3. 容器名称
1.12.4. 启动策略
1.12.5. 容器用户
1.12.6. 挂在卷
1.12.7. 映射端口的标签
1.12.8. 添加 hosts 文件
1.12.9. 网络配置
1.12.9.1. 自定义 IPv4 子网地址
1.12.9.2. external 外部网络
1.12.9.3. 配置 IPv6
1.12.10. links 主机别名
1.12.11. 链接外部容器
1.12.12. 服务依赖
1.12.13. working_dir
1.12.14. 设置环境变量
1.12.15. 临时文件系统
1.12.16. 编译 Dockerfile
1.12.17. resources 硬件资源分配
1.13. Docker Example
1.13.1. registry
1.13.1.1. Auth + SSL
1.13.2. Example Java - Spring boot with Docker
1.13.2.1. 获取 CentOS 7 镜像
1.13.2.2. 安装 openjdk
1.13.2.3. Spring boot 包
1.13.2.4. 启动 Spring boot 项目
1.13.2.5. 基于 CentOS 7 制作 spring 镜像
1.13.3. Redis
1.13.3.1. Docker 命令
1.13.3.1.1. 获取 Redis 镜像
1.13.3.1.2. 启动一个 Redis 实例
1.13.3.1.3. 进入 Redis
1.13.3.1.4. 启动一个 Redis 实例并映射 6379 端口
1.13.3.1.5. 维护容器
1.13.3.2. Docker compose
1.13.3.3. Docker Stack
1.13.3.4. somaxconn/overcommit_memory
1.13.4. Nginx
1.13.4.1. nginx:latest
1.13.4.2. 安装 Docker Nginx alpine
1.13.4.3. 安装依赖工具
1.13.4.4. 容器内优雅重启
1.13.5. MySQL
1.13.6. MongoDB
1.13.6.1. 使用 mongodb 用户运行
1.13.6.2.
1.13.7. Node
1.14. Docker FAQ
1.14.1. 常用工具
1.14.1.1. Debian/Ubuntu
1.14.1.2. CentOS
1.14.2. 检查 Docker 是否可用
1.14.3. Bitnami
1.14.4. 删除 <none> 镜像
2. Kubernetes
2.1. Minikube
2.1.1. CentOS 8 安装 minikube
2.1.1.1. CentOS
2.1.1.1.1. 无虚拟机
2.1.1.2. Mac OS
2.1.2. Quickstart
2.1.3. minikube 命令
2.1.3.1. minikube ip 地址
2.1.3.2. 启动 minikube
2.1.3.2.1. 虚拟机驱动
2.1.3.2.2. 开启GPU
2.1.3.2.3. 日志输出级别
2.1.3.2.4. CPU 和 内存分配
2.1.3.2.5. 指定 kubernetes 版本
2.1.3.2.6. 配置启动项
2.1.3.2.7. 指定 registry-mirror 镜像
2.1.3.2.8. 指定下载镜像
2.1.3.2.9. Enabling Unsafe Sysctls
2.1.3.2.10. 使用 CRI-O 容易
2.1.3.3. 停止 minikube
2.1.3.4. Docker 环境变量
2.1.3.5. SSH
2.1.3.6. 缓存镜像
2.1.3.7. 清理 minikube
2.1.3.8. Kubernetes 控制面板
2.1.3.9. service
2.1.3.10. 查看日志
2.1.3.11. 查看 Docker 环境变量
2.1.3.12. profile
2.1.3.13. addons
2.1.3.13.1. 查看所有插件
2.1.3.13.2. 启用 addons
2.1.3.13.3. 查看 addons 列表
2.1.3.13.4. dashboard
2.1.3.13.5. 开启 registry 私有库
2.1.3.13.6. 启用 ingress
2.1.3.14. SSH
2.1.3.15. 查看IP地址
2.1.3.16. 镜像管理
2.1.3.17. kubectl
2.1.4. Minikube 案例演示
2.1.5. FAQ
2.1.5.1. This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory
2.1.5.2. ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables
2.1.5.3. ERROR ImagePull
2.1.5.4. 证书已存在错误
2.1.5.5. http: server gave HTTP response to HTTPS client
2.1.5.6. provided port is not in the valid range. The range of valid ports is 30000-32767
2.1.5.7. Exiting due to MK_ENABLE: run callbacks: running callbacks: [verifying registry addon pods : timed out waiting for the condition: timed out waiting for the condition]
2.1.5.8. Exiting due to SVC_URL_TIMEOUT: http://127.0.0.1:11068/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ is not accessible: Temporary Error: unexpected response code: 503
2.1.5.9. Mac minikube ip 不通,ingress 不工作
2.2. microk8s
2.2.1. 安装 microk8s
2.2.1.1. 安装指定版本
2.2.2. 组件管理
2.2.2.1. dns
2.2.2.2. dashboard
2.2.3. kubectl
2.2.4. Kubernetes Addons
2.2.4.1.
2.3. kubectl - controls the Kubernetes cluster manager.
2.3.1. 如何从 docker 过渡到 kubectl 命令
2.3.2. 查看信息
2.3.2.1. api-versions
2.3.2.2. 节点
2.3.2.2.1. nodes
2.3.2.3. 查询集群状态
2.3.2.4. config
2.3.2.4.1. use-context
2.3.2.5. cluster-info
2.3.3. namespace 命名空间
2.3.4. label 标签
2.3.5. pods
2.3.5.1. 查看所有POD
2.3.5.2. 运行 POD
2.3.5.3. pod
2.3.5.4. 删除 pod
2.3.5.5. 查看 Pod 的事件
2.3.5.6. Taint(污点)和 Toleration(容忍)
2.3.5.6.1. Taint(污点)设置
2.3.5.6.2. Toleration(容忍)调度
2.3.5.6.3. 使用场景
2.3.6. expose
2.3.7. 服务管理
2.3.7.1. 列出服务
2.3.7.2. 查看服务详细信息
2.3.7.3. 更新服务
2.3.7.4. 删除服务
2.3.7.5. clusterip
2.3.7.6. externalname
2.3.7.7. loadbalancer
2.3.7.8. nodeport
2.3.7.9. serviceaccount
2.3.8. 部署管理
2.3.8.1.
2.3.8.2. 删除 deployment
2.3.9. 资源管理
2.3.10. 查看 pod 日志
2.3.11. endpoints
2.3.12. 执行 Shell
2.3.13. edit
2.3.14. rollout
2.3.15. port-forward 端口映射
2.3.16. secret 密钥管理
2.3.16.1.
2.3.16.2. Private Registry 用户认证
2.3.16.3. 配置TLS SSL
2.3.17. ConfigMap
2.3.17.1. 创建 Key-Value 配置项
2.3.17.2. 从文件创建 ConfigMap
2.3.17.3.
2.3.17.4. 查看 ConfigMap
2.3.17.5. 删除 ConfigMap
2.3.18. Job/CronJob
2.3.18.1. CronJob
2.3.19. explain
2.3.19.1. ingress
2.3.20. 操作系统
2.3.20.1. sysctls
2.3.21. kubectl example
2.3.21.1. 私有 registry
2.3.21.2. mongodb
2.3.21.3. tomcat
2.4. Kubectl YAML
2.4.1. ServiceAccount
2.4.2. 创建命名空间
2.4.3. Pod
2.4.3.1. 指定主机名
2.4.3.2.
2.4.3.3. 健康状态检查
2.4.3.4. securityContext
2.4.3.4.1. sysctls
2.4.3.4.2. runAsUser
2.4.3.4.3. security.alpha.kubernetes.io/sysctls
2.4.3.5. Taint(污点)和 Toleration(容忍)
2.4.4. Service
2.4.4.1. 创建服务
2.4.4.2. 查看服务
2.4.4.3. 设置外部IP
2.4.4.4. 绑定外部域名
2.4.4.5.
2.4.4.6. nodePort
2.4.4.7. LoadBalancer
2.4.4.8. Example
2.4.5. ConfigMap
2.4.5.1. Key-Value 配置
2.4.5.2. 环境变量
2.4.5.3. 配置文件
2.4.6. Volume
2.4.6.1. local
2.4.6.1.1. 案例
2.4.7. Job
2.4.7.1. 执行单词任务
2.4.7.2. 计划任务
2.4.8. Ingress
2.4.8.1. 端口
2.4.8.2. URI 规则
2.4.8.3. vhost 虚拟主机
2.4.8.4. rewrite
2.4.8.5. annotations 配置
2.4.8.5.1. HTTP 跳转到 HTTPS
2.4.8.5.2. server-snippet
2.4.8.6. 金丝雀发布(灰度发布)
2.4.8.6.1. 准备服务
2.4.8.6.2. 方案一,权重分配
2.4.8.6.3. 通过HTTP头开启灰度发布
2.4.8.6.4. 通过 Cookie 开启
2.4.8.7. 管理 Ingress
2.5. istio
2.5.1. 启动 istio
2.5.2. 禁用 istio
2.6. Kubeapps
3. 容器图形化管理界面
3.1. Portainer
3.1.1. 安装
3.1.2. 配置 Portainer
3.1.3. 添加代理出错
3.2. Rancher - Multi-Cluster Kubernetes Management
3.2.1. 安装 Rancher
3.2.1.1. Rancher Server
3.2.1.1.1. 防火墙配置
3.2.1.1.2. Web UI
3.2.1.1.3. SSL 证书
3.2.1.1.4. 进入容器
3.2.1.2. Rancher Kubernetes Engine (RKE)
3.2.1.2.1. 安装 RKE
3.2.1.2.2. 配置 RKE
3.2.1.2.3. 启动 RKE
3.2.1.3. Rancher CLI
3.2.1.3.1. 二进制安装
3.2.1.3.2. Mac 安装
3.2.1.4. rancher-compose
3.2.1.4.1. v0.12.5
3.2.2. 快速入门
3.2.2.1. API
3.2.3. Rancher Compose
3.2.3.1. Rancher Compose 命令
3.2.3.2. 操作演示
3.2.4. Rancher CLI
3.2.4.1. 登陆 Rancher
3.2.4.2. 查看集群
3.2.4.3. 查看节点
3.2.4.4. catalog
3.2.4.5. 查看设置
3.2.4.6. rancher kubectl
3.2.5. Rancher Demo
3.2.5.1. Rancher 部署 Nginx
3.2.6. FAQ
3.2.6.1. 调试 Rancher 查看日志
3.2.6.2. [network] Host [rancher.netkiller.cn] is not able to connect to the following ports: [rancher.netkiller.cn:2379]. Please check network policies and firewall rules
3.3. Helm - The package manager for Kubernetes
3.3.1. 安装 Helm
3.3.1.1. Ubuntu
3.3.1.2. Mac
3.3.2. 快速开始
3.3.3. Helm 命令
3.3.3.1. 初始化 Helm
3.3.3.2. 查看仓库列表
3.3.3.3. 搜索
3.3.3.4. 查看包信息
3.3.3.5. 安装
3.3.3.6. 列表
3.3.3.7. 删除
3.3.3.8. 升级
3.3.3.9. 回滚
3.3.3.10. 查看状态
3.3.4. elastic
3.3.5. Helm The package manager for Kubernetes
3.3.6. Helm Faq
4. Virtual Machine(虚拟机)
4.1. Kernel-based Virtual Machine(KVM)
4.1.1. kvm install usage yum
4.1.1.1. brctl / tunctl
4.1.1.2. virt-install
4.1.2. Ubuntu
4.1.3. CentOS 6.2
4.1.4. Scientific Linux Virtualization
4.1.5. libvirt
4.1.5.1. virsh
4.1.5.1.1. console
4.1.5.1.2. dumpxml
4.1.5.2. Virtual Machine Manager
4.1.6. FAQ
4.1.6.1. No hypervisor options were found for this connection
4.1.6.2. 如何判断当前服务器是实体机还是虚拟机
4.2. Xen
4.2.1. install
4.2.2. Manager
4.3. OpenVZ
4.3.1. 安装OpenVZ
4.3.2. 使用OpenVZ & 建立VPS
4.3.2.1. 安装操作系统模板
4.3.2.2. 创建OpenVZ操作系统节点(VPS)
4.3.3. 设置VPS参数
4.4. vagrant - Tool for building and distributing virtualized development environments
4.4.1. vagrant for windows
4.5. 虚拟机管理
4.5.1. Proxmox - Open-source virtualization management platform Proxmox VE
4.5.2. OpenStack
4.5.3. CloudStack
4.5.4. OpenNode
4.5.5. OpenNEbula

范例清单

2.1. minikube 操作演示
4.1. virsh