本文大概耗時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
下次再說,嘿嘿嘿。