docker適合誰?運維,和devops的開發。mysql
Docker 開發方向:linux
語言:Golangredis
相關的技術:Swarm、Compose、Machine、mesos、k8s.....--- CI/CD Jeckins整合sql
爲何要用docker?解決了什麼問題?docker
開發與運維的矛盾:開發提交給運維代碼、war包、jar包,開發本機一切安好;運維工程師部署發現不成功。ubuntu
緣由:環境和配置windows
如在windows開發,部署到ubuntu或者Centos上。centos
版本迭代,系統變得複雜,可能會持續帶來相似問題。tomcat
解決思路:將開發工程師開發的環境 代碼、配置、系統、數據等環境下整個都交給運維來跑。docker就作的是這件事情——軟件+環境 安裝。安全
運維安裝的再也不是軟件,而是可以運行軟件和環境的整個全家桶。
(本文出自oschina博主happyBKs的博文:https://my.oschina.net/happyBKs/blog/3010974)
另外一個問題:大型分佈式環境,每一個ZK、redis、應用有多個節點,還有可能擴容,那部署和維護多個相同的軟件運行環境很是痛苦。
解決思路:把代碼、配置、環境、依賴等正確環境打一個包,叫作鏡像,發佈到多個節點。
docker是什麼?
docker的理念:一次構建到處運行。
解決了運行環境和配置問題的軟件容器,方便持續集成並有助於總體發佈的容器虛擬化技術。
虛擬機:啓動慢,吃資源,冗餘步驟多;捆綁一整套操做系統,虛擬一套硬件。
LXC :linux容器,不是模擬一個完整的操做系統,而是對進程進行隔離。內核要,其餘不相關的不要。將軟件所需的全部打包到一個隔離的容器當中。容器和虛擬機不一樣,不須要捆綁一整套操做系統,只須要軟件工做所須要的庫資源和設置。高效、輕量。
Docker和傳統虛擬化技術的不一樣之處:
傳統的虛擬機技術是虛擬一套硬件以後,在其上運行一個完整的操做系統,在該系統上運行所須要的應用進程。
而容器內的應用進程直接運行於宿主內核,容器內沒有本身的內核,並且也沒有進行硬件虛擬。所以容器要比傳統虛擬機更爲輕便。
每一個容器之間互相隔離,每一個容器有本身的容器系統,容器之間進程不會互相影響,能區分計算資源。
不嚴格的說,docker能夠認爲是一個精簡版、超小型linux系統虛擬機。
docker發佈一個鏡像運行便可,使得dev/ops的理念的出現,運維同志們小心被優化噢:)
Docker是2014年出現,2017年開始火爆。
Docker支持的系統和版本要求:
Centos必須6.5及以上版本。
centos7以上,要求64位操做系統、系統內核版本3.10以上。
centos6.5以上或者更高版本的Centos上,要求64位、系統內核版本2.6.32-431或者更高版本。
neil@linux-famw:~> uname -r 4.12.14-lp150.12.45-default
windows也可使用docker。
Docker的三要素:鏡像、容器、倉庫
docker的架構圖:
image鏡像 能夠看做是類。
container容器能夠看做是實例。
container容器是image鏡像的實例。
docker的logo是一個鯨魚同樣的船載滿了不少集裝箱。
集裝箱就是container容器。
鯨魚就是docker。
docker鏡像是一個只讀的模板,鏡像能夠用來建立docker容器,一個鏡像能夠建立不少個docker容器(就像一個類能夠有不少個實例同樣)
image鏡像能夠註冊在倉庫註冊服務器Registry。須要的時候pull下來使用。
倉庫Repository和倉庫註冊服務器Registry是有區別的。
倉庫Repository 是集中存放鏡像文件的地方。
庫註冊服務器Registry上每每存放着不少倉庫倉庫Repository,每一個倉庫中又包含了不少個image鏡像。每一個image鏡像有不一樣的標籤tag。
倉庫又分爲 公開倉庫public和私有倉庫private。
最大的公開倉庫 dokcer hub:https://hub.docker.com/
可是和maven中央倉庫、pip倉庫同樣,老外的倉庫與我朝有着網速的限制。通常仍是用國內的。
國內的docker公開倉庫有:阿里雲、網易雲
而這種承擔了docker 公開倉庫功能的網站,咱們稱之爲 docker 鏡像站。
Docker利用容器container獨立運行一個或一組應用。容器是用鏡像建立的實例。它尅被啓動、開始、中止、刪除。每一個容器都是互相隔離、保證安全的平臺。
Docker自己是一個容器運行載體,是一個容器管理引擎。
咱們把應用、配置、依賴打包好,造成一個可交付的運行環境,這個打包好的運行環境就是鏡像文件。只用經過鏡像文件才能生成docker容器。鏡像文件能夠看做是容器的模板。同一個鏡像文件能夠生成多個同時運行的容器實例。
一個容器運行一種服務,好比redis服務、mysql服務、tomcat服務。當咱們須要這個服務的時候,就用docker客戶端建立一個對應的運行實例,這就是容器。
下載安裝:
官方文檔:https://docs.docker.com/install/
centos、ubuntu、windows、mac os等都有。
官網沒有suse的docker安裝方法,但能夠參考我本身以前的博客文章《固態硬盤排名 Docker在opensuse leap15.0安裝手冊(HappyBKs特供白白》
docker6安裝的是docker io
7以後安裝的該叫docker ce
ce的意思是社區版。