1. 程式人生 > >Docker入門六部曲——基本引導

Docker入門六部曲——基本引導

預備知識

雖然我們接下來還是會介紹很多概念,但是最好還是提前瞭解什麼是Docker,和為什麼你會使用Docker。
我們假設你對下面這些知識比較熟悉:

  • IP地址和埠
  • 虛擬機器
  • 編輯配置檔案
  • 程式碼依賴和程式碼構建的基本認識
  • 計算機資源的使用指標,如:CPU使用率,RAM的使用情況等

對容器的簡短的解釋

映象是輕量的,獨立的,可執行的包,並且包含了軟體執行需要的所有東西,包括:程式碼,執行環境,各種庫,環境變數,配置檔案等。

容器是一個映象的執行例項——也就是映象被載入到記憶體,並且真的被執行之後。預設情況下,容器和宿主機是完全隔離的,最多也只會在配置了的情況下,使用宿主機的hosts檔案和埠。

容器會把應用直接執行在宿主機的核心中,這樣會比虛擬機器有更好的效能,因為虛擬機器只能通過hypervisor(超級監督者)來間接的使用宿主機資源的虛擬許可權。容器可以獲得原生的資源使用許可權,每個都執行在獨立的程序中,不需要額外的記憶體。

虛擬機器示意圖


注意看每個OS層,虛擬機器上執行著客戶機的作業系統。這是資源集中的,結果也就是磁碟映象,應用狀態都和宿主機耦合起來,包括宿主機的設定,系統安裝的依賴,系統的安全補丁,還有其他一些容易忽略的小細節。

容器示意圖


容器共享一個核心,而且要想製作一個容器映象,只需要有程式的執行檔案和相關的依賴就可以了,這些都不需要安裝到宿主機。你可以使用docker ps

來管理這些程序,很類似用ps作業系統的原生的程序。最後需要注意的是,容器已經包含了程式執行的所有依賴,不需要再有任何配置;所以一個容器化的應用就是可以“runs anywhere”(在任何地方執行)。

設定

在設定之前,請先確保你已經暗轉掛了最新版本的Docker。安裝

注意:這份文件需要版本不低於1.13。

如果安裝完了,可以嘗試執行docker run hello-world

➜  ~ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from
library/hello-world b04784fba78d: Pull complete Digest: sha256:f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74f Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://cloud.docker.com/ For more examples and ideas, visit: https://docs.docker.com/engine/userguide/

在看看版本是否滿足要求,使用docker --version

➜  ~ docker --version
Docker version 17.05.0-ce-rc1, build 2878a85

如果你執行得到的結果和我的類似,那就可以愉快的使用Docker來玩耍了。