Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

Netkiller Virtualization 手札

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

Mr. Neo Chan, 陳景峯(BG7NYT)



中國廣東省深圳市望海路半島城邦三期
518067
+86 13113668890


2015-07-14

電子書最近一次更新于 2020-11-15 22:36:03 .

版權聲明

轉載請與作者聯繫,轉載時請務必標明文章原始出處和作者信息及本聲明。

http://www.netkiller.cn
http://netkiller.github.io
http://netkiller.sourceforge.net
微信訂閲號 netkiller-ebook (微信掃瞄二維碼)
QQ:13721218 請註明“讀者”
QQ群:128659835 請註明“讀者”

$Date$

2020-11-15 22:36:03

內容摘要

本文檔講述Linux系統涵蓋了系統管理與配置包括:

[注意]對初學Linux的愛好者忠告

玩Linux最忌reboot(重新啟動)這是windows玩家壞習慣

Linux只要接上電源你就不要再想用reboot,shutdown,halt,poweroff命令,Linux系統和應用軟件一般備有reload,reconfigure,restart/start/stop...不需要安裝軟件或配置伺服器後使用reboot重新引導計算機

在Linux系統裡SIGHUP信號被定義為刷新配置檔案,有些程序沒有提供reload參數,你可以給進程發送HUP信號,讓它刷新配置檔案,而不用restart.通過pkill,killall,kill 都可以發送HUP信號例如: pkill -HUP httpd

我的系列文檔:

操作系統

Netkiller Linux 手札 Netkiller FreeBSD 手札 Netkiller Shell 手札
Netkiller Security 手札 Netkiller Web 手札 Netkiller Monitoring 手札
Netkiller Storage 手札 Netkiller Mail 手札 Netkiller Virtualization 手札
Netkiller Cryptography 手札   

以下文檔停止更新合併到 《Netkiller Linux 手札》

Netkiller Debian 手札 Netkiller CentOS 手札 Netkiller Multimedia 手札    

致讀者

Netkiller 系列電子書始於 2000 年,風風雨雨走過20年,將在 2020 年終結,之後不在更新。作出這種決定原因很多,例如現在的閲讀習慣已經轉向短視頻,我個人的時間,身體健康情況等等......

感謝讀者粉絲這20年的支持

雖然電子書不再更新,後面我還會活躍在知乎社區和微信公眾號

目錄

1. 自述
1.1. 寫給讀者
1.2. 作者簡介
1.3. 如何獲得文檔
1.4. 打賞(Donations)
1.5. 聯繫方式
1. Docker
1.1. Installation
1.1.1. CentOS 8
1.1.1.1. docker-compose
1.1.2. CentOS 6
1.1.3. CentOS 7 docker-ce
1.1.4. Ubuntu
1.1.5. Ubuntu docker-ce
1.1.6. 測試 Docker
1.1.7. 重置 Docker
1.2. 配置 Docker
1.2.1. 開啟遠程訪問
1.2.2. 鏡像配置
1.2.2.1. 臨時選擇鏡像
1.2.2.2. 切換國內鏡像
1.2.3. 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.3.8. 基于 Dockerfile 創建鏡像
1.3.8.1. 創建 Dockerfile 檔案
1.3.8.2. 創建鏡像
1.3.8.3. 運行鏡像
1.3.8.4. 測試 Nginx
1.3.8.5. 提交鏡像
1.3.8.6. Dockerfile 語法
1.3.8.6.1. COPY
1.3.8.6.2. EXPOSE
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.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. 倉庫
1.6.1. Docker 官方倉庫
1.6.1.1. 登陸倉庫
1.6.1.2. 獲取鏡像
1.6.1.3. 上傳鏡像
1.6.2. 私有倉庫
1.6.2.1. 搭建私有倉庫
1.6.2.2. 推送鏡像到私有倉庫
1.6.2.3. 查詢鏡像
1.6.2.4. registry 鏡像高級配置
1.6.2.4.1. 私有倉庫認證
1.6.2.5. registry 介面
1.6.3. Harbor
1.7. Swarms
1.7.1. 管理 Swarms
1.7.1.1. 查看 Swarms 版本
1.7.1.2. 初始化 Swarms
1.7.1.3. 顯示 join-token
1.7.1.4. 創建虛擬機
1.7.1.5. 顯示虛擬機列表
1.7.1.6. 設置管理節點
1.7.1.7. 環境變數
1.7.1.8. 切換節點
1.7.1.9. 啟動/停止節點
1.7.1.10. 離線
1.7.2. Stack
1.7.3. 服務
1.7.3.1. 創建 Service
1.7.3.2. 刪除 Service
1.7.3.3. inspect
1.7.4. Docker 網絡
1.7.4.1. 創建 overlay 網絡
1.7.5. swarm 卷管理
1.7.5.1. Host Volumes
1.7.5.2. Named Volumes
1.7.5.3. 共享卷
1.8. docker 命令
1.8.1. docker - A self-sufficient runtime for containers
1.8.1.1. 查看 docker 信息
1.8.1.2. run
1.8.1.3. start / stop / restart
1.8.1.4. ps
1.8.1.5. top
1.8.1.6. inspect
1.8.1.6.1. 獲取容器名稱
1.8.1.6.2. 容器鏡像名稱
1.8.1.6.3. 獲取容器主機名 Hostname
1.8.1.6.4. 查詢 IP 地址
1.8.1.6.5. 容器日誌
1.8.1.6.6. 獲取 json 配置
1.8.1.6.7. 函數
1.8.1.6.8. 綜合查詢
1.8.1.7. images
1.8.1.7.1. Getting a new image
1.8.1.8. logs
1.8.1.9. 重置 Docker
1.8.1.10. 倉庫操作
1.8.1.10.1. 登陸
1.8.1.10.2. 註銷
1.8.1.11. build
1.8.1.12. 網絡管理
1.8.1.13. 事件信息
1.8.2. docker-compose - Define and run multi-container applications with Docker.
1.8.2.1. 安裝 docker-compose
1.8.2.1.1. 使用 pip 安裝
1.8.2.1.2. OSCM 安裝
1.8.2.2. 快速入門
1.8.2.3. 啟動/停止
1.8.2.3.1. 啟動
1.8.2.3.2. 停止
1.8.2.4. 查看進程
1.8.2.5. 查看日誌
1.8.2.6. 執行命令
1.8.2.7. docker-compose.yml
1.8.2.7.1. 版本號
1.8.2.7.2. 鏡像
1.8.2.7.3. 容器名稱
1.8.2.7.4. 啟動策略
1.8.2.7.5. 容器用戶
1.8.2.7.6. 掛在卷
1.8.2.7.7. 映射連接埠的標籤
1.8.2.7.8. 添加 hosts 檔案
1.8.2.7.9.
1.8.2.7.10. 設置環境變數
1.8.2.7.11. 臨時檔案系統
1.8.2.7.12. 編譯 Dockerfile
1.8.2.7.13. resources 硬件資源分配
1.9. Docker Example
1.9.1. registry
1.9.1.1. Auth + SSL
1.9.2. Example Java - Spring boot with Docker
1.9.2.1. 獲取 CentOS 7 鏡像
1.9.2.2. 安裝 openjdk
1.9.2.3. Spring boot 包
1.9.2.4. 啟動 Spring boot 項目
1.9.2.5. 基于 CentOS 7 製作 spring 鏡像
1.9.3. Redis
1.9.3.1. Docker 命令
1.9.3.1.1. 獲取 Redis 鏡像
1.9.3.1.2. 啟動一個 Redis 實例
1.9.3.1.3. 進入 Redis
1.9.3.1.4. 啟動一個 Redis 實例並映射 6379 連接埠
1.9.3.1.5. 維護容器
1.9.3.2. Docker compose
1.9.3.3. Docker Stack
1.9.4. Nginx
1.9.4.1. nginx:latest
1.9.4.2. 安裝 Docker Nginx alpine
1.10. Docker FAQ
1.10.1. 檢查 Docker 是否可用
1.10.2. Bitnami
1.10.3. 刪除 <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
2.1.3.1.1. 虛擬機驅動
2.1.3.1.2. 開啟GPU
2.1.3.1.3. 日誌輸出級別
2.1.3.1.4. CPU 和 內存分配
2.1.3.1.5. 指定 kubernetes 版本
2.1.3.1.6. 配置啟動項
2.1.3.1.7. 指定 registry-mirror 鏡像
2.1.3.1.8. 指定下載鏡像
2.1.3.1.9. Enabling Unsafe Sysctls
2.1.3.2. 停止 minikube
2.1.3.3. Docker 環境變數
2.1.3.4. SSH
2.1.3.5. 緩存鏡像
2.1.3.6. 清理 minikube
2.1.3.7. Kubernetes 控製麵板
2.1.3.8. service
2.1.3.9. 查看日誌
2.1.3.10. 查看 Docker 環境變數
2.1.3.11. profile
2.1.3.12. addons
2.1.3.12.1. 啟用 addons
2.1.3.12.2. 查看 addons 列表
2.1.3.13. SSH
2.1.3.14. 查看IP地址
2.1.3.15. addons
2.1.3.15.1. 查看所有插件
2.1.3.15.2. 開啟 registry 私有庫
2.1.3.15.3. 啟用 ingress
2.1.4. FAQ
2.1.4.1. This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory
2.1.4.2. ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables
2.1.4.3. ERROR ImagePull
2.1.4.4. 證書已存在錯誤
2.1.4.5. http: server gave HTTP response to HTTPS client
2.1.4.6. provided port is not in the valid range. The range of valid ports is 30000-32767
2.1.4.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.2. microk8s
2.2.1. 安裝 microk8s
2.2.2. kubectl
2.2.3. Kubernetes Addons
2.2.3.1. dashboard
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. 執行 Shell
2.3.12. edit
2.3.13. rollout
2.3.14. port-forward 連接埠映射
2.3.15. secret 密鑰管理
2.3.15.1.
2.3.15.2. Private Registry 用戶認證
2.3.15.3. 配置TLS SSL
2.3.16. ConfigMap
2.3.16.1. 創建 Key-Value 配置項
2.3.16.2. 從檔案創建 ConfigMap
2.3.16.3.
2.3.16.4. 查看 ConfigMap
2.3.16.5. 刪除 ConfigMap
2.3.17. Job/CronJob
2.3.17.1. CronJob
2.3.18. explain
2.3.18.1. ingress
2.3.19. 操作系統
2.3.19.1. sysctls
2.4. Rancher - Multi-Cluster Kubernetes Management
2.4.1. 安裝
2.4.1.1. Ubuntu
2.4.1.2. SSL 證書
2.4.1.3. 進入容器
2.4.1.4. Rancher CLI
2.4.1.5. rancher-compose
2.4.2. 快速入門
2.4.2.1. API
2.4.3. Rancher CLI
2.4.3.1. 登陸 Rancher
2.4.3.2. 查看集群
2.4.3.3. 查看節點
2.4.3.4. catalog
2.4.3.5. 查看設置
2.4.4. Rancher Compose
2.4.4.1. Rancher Compose 命令
2.4.4.2. 操作演示
2.4.5. Rancher Kubernetes Engine (RKE)
2.4.6. Rancher CLI
2.4.7. 調試
2.4.8. FAQ
2.4.8.1. [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
2.5. Helm - The package manager for Kubernetes
2.5.1. 安裝 Helm
2.5.1.1. Ubuntu
2.5.1.2. Mac
2.5.2. 快速開始
2.5.3. Helm 命令
2.5.3.1. 初始化 Helm
2.5.3.2. 查看倉庫列表
2.5.3.3. 搜索
2.5.3.4. 查看包信息
2.5.3.5. 安裝
2.5.3.6. 列表
2.5.3.7. 刪除
2.5.3.8. 升級
2.5.3.9. 回滾
2.5.3.10. 查看狀態
2.5.4. elastic
2.5.5. Helm Faq
2.6. kubectl example
2.6.1. 私有 registry
2.6.2. mongodb
2.6.3. tomcat
2.7. Kubectl YAML
2.7.1. ServiceAccount
2.7.1.1.
2.7.2. 創建命名空間
2.7.3. Pod
2.7.3.1. 指定主機名
2.7.3.2.
2.7.3.3. 健康狀態檢查
2.7.3.4. securityContext
2.7.3.4.1. sysctls
2.7.3.4.2. runAsUser
2.7.3.4.3. security.alpha.kubernetes.io/sysctls
2.7.3.5. Taint(污點)和 Toleration(容忍)
2.7.4. Service
2.7.4.1. 創建服務
2.7.4.2. 查看服務
2.7.4.3. 設置外部IP
2.7.4.4. 綁定外部域名
2.7.4.5.
2.7.4.6. nodePort
2.7.4.7. LoadBalancer
2.7.4.8. Example
2.7.5. ConfigMap
2.7.5.1. Key-Value 配置
2.7.5.2. 環境變數
2.7.5.3. 配置檔案
2.7.6. Volume
2.7.6.1. local
2.7.6.1.1. 案例
2.7.7. Job
2.7.7.1. 執行單詞任務
2.7.7.2. 計劃任務
2.7.8. Ingress
2.7.8.1. 連接埠
2.7.8.2. URI 規則
2.7.8.3. vhost 虛擬主機
2.7.8.4. rewrite
2.7.8.5. annotations 配置
2.7.8.5.1. HTTP 跳轉到 HTTPS
2.7.8.5.2. server-snippet
2.7.8.6. 金絲雀發佈(灰度發佈)
2.7.8.6.1. 準備服務
2.7.8.6.2. 方案一,權重分配
2.7.8.6.3. 通過HTTP頭開啟灰度發佈
2.7.8.6.4. 通過 Cookie 開啟
2.7.8.7. 管理 Ingress
2.8. istio
2.8.1. 啟動 istio
2.8.2. 禁用 istio
2.9. Kubeapps
3. Virtual Machine(虛擬機)
3.1. Kernel-based Virtual Machine(KVM)
3.1.1. kvm install usage yum
3.1.1.1. brctl / tunctl
3.1.1.2. virt-install
3.1.2. Ubuntu
3.1.3. CentOS 6.2
3.1.4. Scientific Linux Virtualization
3.1.5. libvirt
3.1.5.1. virsh
3.1.5.1.1. console
3.1.5.1.2. dumpxml
3.1.5.2. Virtual Machine Manager
3.1.6. FAQ
3.1.6.1. No hypervisor options were found for this connection
3.1.6.2. 如何判斷當前伺服器是實體機還是虛擬機
3.2. Xen
3.2.1. install
3.2.2. Manager
3.3. OpenVZ
3.3.1. 安裝OpenVZ
3.3.2. 使用OpenVZ & 建立VPS
3.3.2.1. 安裝操作系統模板
3.3.2.2. 創建OpenVZ操作系統節點(VPS)
3.3.3. 設置VPS參數
3.4. vagrant - Tool for building and distributing virtualized development environments
3.4.1. vagrant for windows
3.5. 虛擬機管理
3.5.1. Proxmox - Open-source virtualization management platform Proxmox VE
3.5.2. OpenStack
3.5.3. CloudStack
3.5.4. OpenNode
3.5.5. OpenNEbula

範例清單

2.1. minikube 操作演示
3.1. virsh