簡單易懂的Docker入門

    容器如今應用的愈來愈多了,不懂這個都很差意思說本身是個程序員了。這篇文章就給你們帶來一個簡單易懂的Docker入門。程序員

容器和虛擬機

    你們可能用過虛擬機,Vmware之類的,感受和容器差很少,都是「虛擬化一臺機器」。那咱們先解釋下,Docker和虛擬機有啥區別,先上圖:golang

容器與虛擬機

    虛擬機在被建立的時候,宿主機會模擬出一臺真實機器所須要的全部資源,包括硬件。一旦開啓,預分配給它的資源會被徹底佔用。每一臺虛擬機都擁有一套完整的獨立的用戶操做系統。docker

    容器就不同了,它不是模擬一個完整的操做系統,而是對進程進行隔離。容器包含了應用和它全部的依賴包,可讓資源在受到隔離的進程中運行應用程序。容器和容器之間是共享內核的。bash

    其實從上面的說明就能夠看出來了,容器比虛擬機須要的資源更少,帶來的優點包括更快的啓動,一樣硬件條件下能運行的實例數量遠高於虛擬機等等。而Docker則是對容器技術進行的一種封裝,它是目前最流行的容器解決方案。服務器

Docker的一些概念

Docker架構

鏡像(Image)

鏡像是Docker容器的模板。它看起來像一個文件系統,提供了容器運行的時候所須要的程序、庫、配置、環境變量等。鏡像不包含任何動態數據,其內容在構建以後也不會被改變。架構

容器(Container)

容器是能夠獨立運行的一個或一組應用。app

倉庫(Repositry)

倉庫是存放鏡像文件的地方,概念相似Git。而倉庫註冊服務器(Registry)能夠理解爲代碼倉庫(Github)。ui


簡單的說,咱們把應用還有須要的環境配置等,「打包」成一個鏡像,這個鏡像就存在於本地的倉庫中。須要運行應用的時候,將容器指定到對應的鏡像去運行就能夠了。 DockerHub上有很多基礎鏡像,均可以直接拿來用。spa

從零開始的Docker部署

Dockerfile

若是想從0開始構建本身的鏡像,咱們就須要本身編寫Dockerfile了,下面貼了一個例子。操作系統

FROM golang:latest

WORKDIR $GOPATH/go-app
COPY . $GOPATH/go-app
RUN go build .

EXPOSE 8000
ENTRYPOINT ["./go-app"]
複製代碼

下面說說這幾行都幹了啥:

  1. FROM 指定了基礎鏡像,這是必需要有的指令,並且是第一條。
  2. WORKDIR <工做目錄> 指定了工做目錄。若目錄不存在,會自動建立。
  3. COPY <源路徑> <目標路徑> 將構建上下文目錄中的源路徑裏面的文件,複製到鏡像的目標路徑的位置。
  4. RUN 執行命令
  5. EXPOSE 聲明運行時容器提供的服務端口。(只是一個聲明,運行的時候不會開這個端口)
  6. ENTRYPOINT 指定容器啓動程序和參數

構建鏡像

有了這些命令,接下來咱們就能經過docker build命令構建本身的鏡像了。

"-t" 指定了鏡像的名稱 "." 表示當前構建的目錄。如今咱們能夠經過docker images命令,查看已經構建完成的鏡像。

運行容器

有了鏡像,咱們如今就能夠用來運行容器了。

"-p port1:port2" 指定了端口映射,port1是宿主機,port2是容器端口。"go-app"是咱們建立的鏡像名稱。

這個例子就完了,So easy~

綜上

以上只是一個簡單的入門,後續會帶來更多Docker實戰內容。








相關文章
相關標籤/搜索