【技術分享】docker基礎

  • 2020 年 2 月 16 日
  • 筆記

目錄

1、引子

2、要素

3、鏡像

4、容器

5、總結

1、引子

我們在寫程式碼的過程中,或多或少都會遇到這樣的問題:寫了程式碼,在別人電腦上運行不了,一檢查,別人電腦缺環境。

那怎麼辦?簡單呀,裝!

不知道有多少小夥伴裝過spark環境、influxdb環境,兩眼淚千行呀!

況且,如果我這個程式碼要在一百台機子上運行呢?

那還能怎麼辦?

是不是可以直接把[環境+配置+程式碼]一起給別人來運行?

可以,docker乾的就是這個。

它的核心理念是:一次安裝,到處運行。

我們用一個形象生動的比喻:以前搬家,我們一件一件東西搬,由於房型不同,東西擺放位置肯定不同,剛開始會有一些不習慣。docker來了,說:這有什麼難的,我整個房子一起搬。

我們看看docker的圖標:

圖標中,鯨魚就是docker,我們的程式碼就是一個個集裝箱。

2、要素

docker由三元素組成:鏡像、容器、倉庫。

鏡像是指環境+程式,主要包含簡易的linux內核、程式運行環境、程式碼、數據等;

容器是指運行的鏡像,可使用類和對象來類比鏡像和容器;

倉庫是指存放鏡像的地方,最大的倉庫是dockerhub。

咦,有的小夥伴可能會懷疑,這有點像虛擬機呀。

其實,有很大差別的:

1)虛擬機會安裝一個作業系統應該有的所有東西,而docker只安裝基礎的linux內核,所以,虛擬機通常幾個G,docker容器通常幾百M。

2)虛擬機啟動很慢,需要載入很多資源。

3)虛擬機本身是虛擬作業系統,而docker容器與宿主機共享作業系統。

3、鏡像

前面說過,鏡像就是 環境+程式。更具體來說,鏡像是一層一層的程式碼,最底層是linux內核,上一層程式運行環境,再上一層是一些環境配置,最後是我們寫的程式碼。

這樣,不管我們把這個鏡像放在哪兒,只要裝了docker,由於自身帶了環境和配置,就可以運行寫的程式碼。

鏡像相關的命令有什麼呢:

docker images:查看鏡像

docker search 鏡像名:在倉庫搜索某個鏡像

docker pull 鏡像名:從倉庫拉取某個鏡像

docker rmi 鏡像名:刪除某個鏡像

(製作鏡像的過程後命令留著第二次分享)

對了,上述命令中如果只使用「鏡像名」,等同於使用該鏡像最新版本,即「鏡像名:latest」,如果要指定版本號,在鏡像名後面添加上版本號,即「鏡像名:版本號」

4、容器

拿到一個鏡像以後,我們可以創建一個實例,就可以使用鏡像里的環境,運行裡面的程式碼了。

容器相關的命令有:

docker run [option] 鏡像名:根據鏡像創建並且運行一個容器

常用[option]有-t,以交互的方式啟動,即前台啟動;-d後台啟動;-t分配偽終端;–name指定容器名。eg. docker run -it hello-world

docker ps [option]:列出運行的容器

常用[option]有-a,所有容器;-n最近幾個創建的容器。

docker start 容器名:啟動容器

docker restart 容器名:重啟容器

docker stop 容器名:停止容器(等待自然結束)

docker kill 容器名:強制停止容器

docker rm 容器名:刪除容器

在容器中退出該容器:

exit:容器停止運行並退出

ctrl+p+q:容器不停止並退出

5、總結

最基礎的docker部分基本上就是這些。

總的來說,docker還是比較強大的,解決了多台機子配置同一環境的煩惱,用著也不是很難,值得推薦。


學習新東西,最艱難的往往是第一步,加油~

1.01^365=37.8,共勉之~

給我好看