【技術分享】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,共勉之~
給我好看
