10分鐘學(xué)會(huì)docker
本文大概耗時(shí)10分鐘。
你將會(huì)看到以下內(nèi)容:
- 為什么要用docker
- docker幾個(gè)概念
- 如何運(yùn)行docker container
- 如何build image
本文假定你有以下基礎(chǔ):
1.linux命令行(見參考鏈接)
2.必要的英語(yǔ)詞匯
為什么要用docker?
在探討docker能為我們帶來(lái)的好處時(shí),我們先得明白docker是什么。docker官網(wǎng)是這樣描述的“Docker is the world's leading software container platform.”由此可見,docker是一個(gè)容器的平臺(tái),我們把要打包的東西放到一個(gè)容器中,然后就可以在docker這個(gè)平臺(tái)上運(yùn)行,因?yàn)閐ocker在各個(gè)系統(tǒng)下都可以安裝,所以就可以和系統(tǒng)無(wú)關(guān),屏蔽了環(huán)境的復(fù)雜性。同時(shí),docker的容器可以包含app運(yùn)行的所有依賴,在部署的時(shí)候就沒有必要把所有依賴都手動(dòng)安裝一遍了。
docker中有哪幾個(gè)核心概念
雖然一上來(lái)就提概念像是教科書,但是不搞懂核心概念,下面的東西你可能看不懂。。。或者跳過這里直接看下面也行,遇到不懂的回過頭來(lái)再看。
image和container
image就是包含了一個(gè)應(yīng)用的代碼,依賴,運(yùn)行時(shí)。container可以理解為image的運(yùn)行形態(tài),它是以一個(gè)獨(dú)立的進(jìn)程存在的。
docker deamon與docker client
docker的守護(hù)進(jìn)程,后端服務(wù)。docker client是一個(gè)docker的客戶端,它和docker deamon交互。
base image與child image
base image 是指沒有父鏡像的鏡像,這些鏡像一般是系統(tǒng)級(jí)別的鏡像,如 ubuntu,alpine。child image在base image上構(gòu)建的鏡像。
Dockerfile image的描述文件。它包含了運(yùn)行app所需的所有信息。包括base image,代碼位置,工作目錄,依賴,項(xiàng)目啟動(dòng)命令等等。
如何運(yùn)行docker container
docker的安裝就不贅述了,可以去看參考鏈接。
先執(zhí)行以下你的第一條docker語(yǔ)句
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.
如果你能看到上面的東西,證明你已經(jīng)運(yùn)行了第一個(gè)docker container,恭喜呀。
讓我們來(lái)看下那個(gè)命令運(yùn)行之后用發(fā)生了什么吧。首先,docker會(huì)去你的本地去找有沒有hello-world這個(gè)image,發(fā)現(xiàn)沒有之后它會(huì)去docker registry上去找有沒有hello-world,找到了之后把它拉取到本地,然后它又發(fā)現(xiàn)了里面的Dockerfile還有依賴,它就接著拉取依賴,最后,拉取成功,啟動(dòng)。
好了,把這個(gè)不再需要的container移除吧。運(yùn)行以下語(yǔ)句
docker container ls -a
你會(huì)看到下面的東西
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9e354503933b hello-world "/hello" 4 minutes ago Exited (0) 27 seconds ago serene_engelbart
復(fù)制這個(gè)container id全部或者部分
運(yùn)行下面語(yǔ)句,將會(huì)移除container
docker container rm -f 9e354503933b
光移除container還是不夠的,container只是運(yùn)行形態(tài),image還在,還得把image也移除了。運(yùn)行下列語(yǔ)句列出你本地的images。
docker images
你會(huì)收到看到一個(gè)對(duì)應(yīng)的image id,接著通過image id移除image。
docker image rm 1815c82652c0
如何build docker image
今天就先到這里了,后續(xù)文章下次再說,嘿嘿嘿。
相關(guān)文章
Docker 無(wú)法停止或刪除容器服務(wù)問題的解決方案
這篇文章主要介紹了Docker 無(wú)法停止或刪除容器服務(wù)問題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2021-03-03使用Docker部署打包發(fā)布springboot項(xiàng)目
本文主要介紹了使用Docker部署打包發(fā)布springboot項(xiàng)目,從安裝docker到多種方式打包發(fā)布,編譯,鏡像,容器等問題,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Docker 安裝及配置鏡像加速的實(shí)現(xiàn)
這篇文章主要介紹了Docker 安裝及配置鏡像加速的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01docker?mysql5.7如何設(shè)置不區(qū)分大小寫
本文主要介紹了docker?mysql5.7如何設(shè)置不區(qū)分大小寫,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07使用docker部署influxdb與 mongo的常用命令
這篇文章主要介紹了使用docker部署influxdb與 mongo的常用命令,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05