傳統虛擬化
傳統虛擬化步驟
一、安裝虛擬化軟件以及虛擬化的管理軟件
二、建立虛擬機
三、給虛擬機安裝os
四、在虛擬機內部不是應用(http、db之類的應用)
傳統虛擬化的特色
一、VM與VM之間是徹底隔離的,而且虛擬機必需要安裝os
二、應用所運行的環境是創建在操做系統之上的
三、應用遷移很是笨重
傳統虛擬化已經沒法知足當前敏捷開發方式,VM的方式會致使開發環境和生產環境不一致,版本測試完成以後須要從新搭建環境。
docker
docker是容器的引擎工具,最主要是管理容器的生命週期,建立容器、管理容器、管理鏡像等。容器是沒有操做系統的概念,容器經過image來啓動。當你經過一個image建立和啓動一個容器的時候,容器內的進程就已經啓動了。一旦容器內的process意外退出,容器也就死亡。即進程在容器在,進程毀容器亡。容器與容器之間隔離經過namespace(命名空間隔離),對於Linux操做系統而言必定存在namespace,無需另外安裝。
一個完整的docker由四個部分組成:
docker client客戶端
docker daemon守護進程
docker image鏡像
docker container容器
docker功能特性
隔離環境(系統、網絡、文件系統)與應用
解決依賴與版本問題
易於分發開箱即用
節點與容器快速擴容
鏡像製做簡單便捷,管理方便。
隔離
經過cgroup(隔離和跟蹤資源的使用)和namespace(組與組之間隔離)來實現輕量級的進程隔離。
對應容器中運行的進程來講,本身獨佔了一個系統。
容器間網絡、文件及其餘資源都互相隔離。
版本與依賴
傳統模式下,多個不一樣環境或版本的項目須要部署在不一樣機器上,部署與後期維護管理複雜繁瑣。
使用docker經過多個不一樣版本或環境的鏡像,能夠同時運行在一臺機器上互不干擾,部署與後期維護簡單方便。
分發與使用
鏡像能夠經過導入、導出、上傳到鏡像倉庫等多種方式進行分發。
在啓動了docker的系統上直接使用docker run便可啓動鏡像,無需特別配置。
擴容
容器擴容簡單方便
擴容節點只需安裝並啓動docker便可
鏡像製做
鏡像的靈魂dockerfile
使用dockerfile進行指令控制
基於linux命令易於理解快速上手
易於定製與修改
應用場景
web應用的自動化打包和發佈
自動化測試和持續集成、發佈
應用服務,如mysql、redis等經過docker實現快速部署
k8s私有云
安裝環境
系統:centos 7.4 minimal
分區:
/boot xfs 500M
swap 不使用
/ 剩餘所有
安裝docker
一、安裝docker做爲容器的引擎工具
yum install -y docker
二、啓動docker服務
systemctl enable docker
systemctl start docker
三、搜索image
docker經過image來建立和啓動容器,image在鏡像倉庫內。倉庫分爲公有倉庫(如docker.io)和私有倉庫。在默認狀況下docker會訪問公有倉庫,docker會拉取公有倉庫的image。
docker search centos
搜索公有倉庫中含有centos關鍵字的image。
四、下載image
docker pull docker.io/centos
pull即從公有倉庫中拉取image到本地。
五、查看本地image
docker images
六、啓動容器
docker run -d docker.io/centos
-d即後端運行
七、查看容器
docker ps
dockers ps -a
沒有結果即沒有運行的容器,可能的緣由是這個容器內沒有進程。
進程來源於執行一個可執行文件。
使用docker經過一個image建立一個容器,容器內就會有進程,image內嵌入一條可執行的文件(命令)。經過這個image去建立一個容器的時候,會執行這個可執行文件,從而產生前端進程。
docker.io/centos這個image不含有可執行文件,也沒有觸發一個可執行文件。因此建立這個容器的時,容器當即退出了。
docker run -ti docker.io/centos /bin/bash
-ti交互式運行
八、查看容器內的的進程
docker top
docker top d54
d54容器短id
九、查看容器參數
docker inspect d54
十、查看容器id
docker ps -q
十一、查看容器日誌
docker logs d54
十二、刪除容器
docker rm d54
若是一個容器處於running狀態沒法刪除。
docker rm $(docker ps -qa)
1三、中止容器
docker stop d54
中止後的容器能夠被刪除。
1四、容器內的操做
yum intall -y net-tools
1五、進入容器
docker exec -ti 35d /bin/bash
1六、啓動指定容器的參數
指定容器主機名
docker run -d -t --hostname=servera.example.com docker.io/centos
指定dns
docker run -d -t --hostname=serverb.example.com --dns 8.8.8.8 --dns 4.4.4.4 docker.io/centos
指定ip
docker run -d -t --hostname=serverc.example.com --dns 8.8.8.8 --dns 4.4.4.4 --ip=192.168.0.222 docker.io/centos
定義變量
docker run -d -e name=test -e MYSQL_USER=root -ti docker.io/centos /bin/bash
容器退出後自動重啓容器
docker run -d --restart=always -e MYSQL_USER=root -ti docker.io/centos /bin/bash
自動重啓3次失敗後將再也不重啓
docker run -d --restart=on-failure:3-e MYSQL_USER=root -ti docker.io/centos /bin/bash
查看啓動幫助
docker run --help
前端