docker竟然簡單到10分鐘就可以學會?

端端君發表於2017-06-28

本文大概耗時10分鐘。

你將會看到以下內容:

1.為什麼要用docker
2.docker幾個概念
3.如何執行docker container
4.如何build image

本文假定你有以下基礎:

1.linux命令列(見參考連結)
2.必要的英語詞彙

為什麼要用docker?

在探討docker能為我們帶來的好處時,我們先得明白docker是什麼。docker官網是這樣描述的“Docker is the world’s leading software container platform.”由此可見,docker是一個容器的平臺,我們把要打包的東西放到一個容器中,然後就可以在docker這個平臺上執行,因為docker在各個系統下都可以安裝,所以就可以和系統無關,遮蔽了環境的複雜性。同時,docker的容器可以包含app執行的所有依賴,在部署的時候就沒有必要把所有依賴都手動安裝一遍了。

docker中有哪幾個核心概念

雖然一上來就提概念像是教科書,但是不搞懂核心概念,下面的東西你可能看不懂。。。或者跳過這裡直接看下面也行,遇到不懂的回過頭來再看。
image和container
image就是包含了一個應用的程式碼,依賴,執行時。container可以理解為image的執行形態,它是以一個獨立的程式存在的。

docker deamon與docker client
docker的守護程式,後端服務。docker client是一個docker的客戶端,它和docker deamon互動。

base image與child image
base image 是指沒有父映象的映象,這些映象一般是系統級別的映象,如 ubuntu,alpine。child image在base image上構建的映象。

Dockerfile image的描述檔案。它包含了執行app所需的所有資訊。包括base image,程式碼位置,工作目錄,依賴,專案啟動命令等等。

如何執行docker container
docker的安裝就不贅述了,可以去看參考連結。
先執行以下你的第一條docker語句
docker container run hello-world

又是hello world,so cool,right?

Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 03f4658f8b78: Pull complete a3ed95caeb02: Pull complete Digest: sha256:8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7 Status: Downloaded newer image for hello-world:latest

Hello from Docker. This message shows that your installation appears to be working correctly.

如果你能看到上面的東西,證明你已經執行了第一個docker container,恭喜呀。
讓我們來看下那個命令執行之後用發生了什麼吧。首先,docker會去你的本地去找有沒有hello-world這個image,發現沒有之後它會去docker registry上去找有沒有hello-world,找到了之後把它拉取到本地,然後它又發現了裡面的Dockerfile還有依賴,它就接著拉取依賴,最後,拉取成功,啟動。
好了,把這個不再需要的container移除吧。執行以下語句

docker container ls -a

你會看到下面的東西

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9e354503933b hello-world "/hello" 4 minutes ago Exited (0) 27 seconds ago serene_engelbart
複製這個container id全部或者部分
執行下面語句,將會移除container
docker container rm -f 9e354503933b
光移除container還是不夠的,container只是執行形態,image還在,還得把image也移除了。執行下列語句列出你本地的images。

docker images
你會收到看到一個對應的image id,接著通過image id移除image。

docker image rm 1815c82652c0

如何build docker image

下次再說,嘿嘿嘿。

相關文章