Docker入門學習一之初識Docker

1、初步認識Dockerjava

      1.Docker歷史git

  • 2010 dotCloud PASS
  • 2013 docker開源
  • 2014.6 Docker 1.0
  • 2014.7 C輪 $4000萬
  • 2015.4 D輪 $9500萬
  • 至今 Docker 1.13

      2.什麼是Docker?github

  • Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何接口。
  • Docker is the world's leading software containerization platform
  • Docker公司開發,開源,託管在github
  • 跨平臺,支持Windows、Macos、Linux

      3.Docker思想docker

  • 集裝箱
  • 標準化:1.運輸方式;2.存儲方式;3.API接口
  • 隔離

      4.Docker解決了什麼問題?tomcat

  • 我本地運行沒有問題啊!Docker將操做系統,JDK,Tomcat,代碼,配置放進集裝箱裏,再打包放到鯨魚上,鯨魚送到服務器上,解決了運行環境不一致的問題。
  • 系統好卡,哪一個哥們又寫死循環了?!內存泄漏?磁盤寫滿?服務變慢!
  • 雙11來了,服務器撐不住啦!平時與雙11服務器數量不一致,運維工做量巨大!Docker標準化讓快速擴展、彈性伸縮變得簡單!

2、走進Docker服務器

      1.Docker三個核心概念運維

  • 鏡像--->集裝箱
  • 倉庫--->超級碼頭
  • 容器--->運行程序的地方

      Docker運行程序的過程:去倉庫把鏡像拉到本地,用一條命令將鏡像運行起來變成容器ui

  • Build--->構建鏡像
  • Ship--->運輸鏡像,從倉庫往主機運輸
  • Run--->運行的鏡像,就是一個容器

      2.Docker鏡像spa

      鏡像英文名image,鯨魚馱着的全部的集裝箱就是一個鏡像,本質上來講,鏡像就是一系列的文件,它能夠包括應用程序的文件,也能夠包括運行環境的文件,Docker把這些文件都保存到了本地。操作系統

      Docker以什麼格式保存文件的呢?鏡像的存儲格式是使用的Linux的一種存儲技術——聯合文件系統unionfs,它是一種分層的文件系統,它能夠將不一樣的文件目錄掛到同一個虛擬文件系統下。好比,test1目錄下有opt、usr、var三個文件夾,test2下有README、java、tomcat三個文件,聯合文件系統能夠在同一個文件夾下看到opt、usr、var、README、java、tomcat,即test一、test2文件的集合。經過這樣的一種方式,聯合文件系統就能夠實現文件的分層,好比test1能夠當作第一層(包括opt、usr、var),test2能夠當作第二層(包括README、java、tomcat)。Docker鏡像就是利用這種分層的思想來實現鏡像的存儲。

     

      下面這張圖是一個鏡像的存儲格式,能夠明顯看到這張圖是分層的,就像是一個個的集裝箱摞在一塊兒,這就是鏡像的最直觀的存儲方式。

  • 最底層是一個操做系統地引導
  • 第二層是一個具體的Linux操做系統
  • 第三層是一個具體的相關的軟件,若是是咱們的應用程序,這一層可能就是JDK,Tomcat
  • 第四層是一個具體的相關的軟件,能夠存放咱們的應用代碼,每一層都是能夠本身控制
  • 最上層是暫時忽略,在容器中介紹
  • 注意:Docker鏡像的每一層都是隻讀的,而後每一層加載完成以後,全部層的文件都會當作是同一個目錄,至關於只有一個文件系統,Docker這種文件系統就稱爲鏡像。

     

      2.Docker容器

      Docker容器本質就是一個進程,爲了便於理解,能夠先把容器想象成一個虛擬機(看上圖),每一個虛擬機都有本身的文件系統,你們能夠把整個一部分看做是容器的文件系統,也就至關於虛擬機全部的文件系統。與虛擬機的區別在於,它這裏面的文件系統是一層一層的,並且下面的N層都是隻讀的,只有最頂層是可讀可寫的(由於程序運行起來確定是須要作一些日誌、文件或者對系統文件作一些修改等操做)。

      若是程序運行中要寫一個鏡像裏的文件,會發生什麼呢?

      由於鏡像中的每一層都是隻讀的,因此它在寫這個文件以前,會先把這個文件所在這層拷貝到容器的最頂層,而後再對它進行修改,修改以後,當咱們的應用讀一個文件時,會先從頂層開始查找,若是沒有才會接着找下一層,由於這個文件已經被拷貝到了最頂層了,在最頂層才能找到它最新的內容。

      因爲容器的最頂層是能夠修改的,而鏡像每層都是隻讀的,這樣就能夠保證同一個鏡像能夠生成多個容器獨立運行,並且它們之間不會互相干擾!

      3.Docker倉庫

      構建鏡像的目的是爲了能在不一樣的機器、環境中運行。

      (1)可是如何完成將鏡像從本地到目的地傳輸過程呢?

      這就須要用到Docker倉庫,首先須要將鏡像放入Docker倉庫中去,再由目的地從Docker倉庫中將鏡像拉過去。

      (2)可是誰提供的Docker倉庫呢?

      那確定是須要有一箇中央服務器,提供一個地址,讓我能夠去訪問它。

      (3)可是誰提供這樣的服務呢?

      Docker本身就提供了!

      地址:

  • hub.docker.com 可是以前被牆了,如今開放了,訪問速度很慢
  • c.163.com 國內服務 網易蜂巢鏡像中心

 

本文爲原創文章,若是對你有一點點的幫助,別忘了點贊哦!比心!如需轉載,請註明出處,謝謝!

相關文章
相關標籤/搜索