Docker 入門筆記

匡匡發表於2018-02-07

Docker 可以理解為一個輕量化的虛擬機器, 啟動速度快,本身佔的資源小

 


[重要], 容器裡是不能儲存資料的,容器只要一停止, 所有的資料都會丟失,所以如果重要的資料, 都需要通過配製,把資料儲存在 host 機器上。
根據 Docker 內的檔案系統設計情況。Docker 映象被儲存在一系列的只讀層。當我們開啟一個容器,Docker 讀取只讀映象並新增一個讀寫層在頂部。
如果正在執行的容器修改了現有的檔案,該檔案將被拷貝出底層的只讀層到最頂層的讀寫層。在讀寫層中的舊版本檔案隱藏於該檔案之下,但並沒有被不破壞 - 它仍然存在於映象以下。
當Docker的容器被刪除,然後重新啟動映象時,將開啟一個沒有任何更改的新的容器 - 這些更改會丟失, 此只讀層及在頂部的讀寫層的組合被Docker稱為Union File System(聯合檔案系統)

 

官方映象網站: hub.docker.com
官方網站在國外, 下載映象的時候,可能會比較慢, 使用 阿里雲加速器, 需要申請才可以使用。

 

常用命令

docker -v
檢視 docker 的當前版本

docker pull [imageName]
從倉庫裡下載一個指定的映象名稱到本地

docker run
這個是建立一個容器,並啟動, 可以通過 --name 引數指定容器的名稱,
-d 引數, 讓容器在後臺執行, 不加此引數, 命令列將一直處於工作狀態,不參進行其他操作

docker start [container name]
執行一個已經存在的容器, container name 就是通過 docker run 命令建立的容器

docker restart [container name]
重啟一個容器

docker stop [container name]
停止一個正在執行的容器

docker stop $(docker ps -q)
停止所有正在執行的容器

docker diff [container name]
檢視容器相對映象修改了哪些檔案

docker rm [container name]
刪除一個已經存在的容器, 如果容器正在執行,則刪除失敗

docker inspect [container name]
檢視容器的詳細資訊

docker ps -a
列表所有容器, 如果不指定引數 -a, 則只會列表正在執行的容器

docker images
列表所有的映象

docker rmi [image name]
從本地刪除一個指定的映象

資料卷(Volumn)

有些情況下, 容器裡的應用需要儲存資料,如資料庫應用,資料庫裡的內容是需要儲存起來,這個時候, 需要把主機中的某個目錄對映到容器中去,使用 -v 引數,如 MYSQL, 通過 使用 -v 引數, 為容器對映一個目錄到 host 上來: docker run -d -p 3306:3306 -v /my/own/datadir:/var/lib/mysql mysql
官方提供的 mysql 映象, 預設把資料檔案放在了 /var/lib/mysql 目錄,這樣就把容器中的資料儲存到主機上來了。
在 windows 裡, 使用 /d/own/datadir 或 d:/own/datadir 都可以。

 

進入容器操作

容器在執行這後, 如果我們需要修改或檢視容器中的內容,需要進行入容器中,
有四種方法:
1、docker attach containerid, 這種方法試了, 沒效果
2、通過 ssh 連線到容器中去, 但是好像說不推薦使用這種方式
3、nsenter 工具, https://github.com/jpetazzo/nsenter, 沒用過
4、使用 docker exe -it containerid bash 這樣最簡單了, 執行後當前命令列工具就切換到了容器內部,可以在這裡執行相關的命令,最後使用 exit 退出。

 

容器互聯

當一個主機上有兩個容器, 一個放 web 應用, 一個放資料庫應用,那麼 web 應用怎麼訪問另一個容器中的資料庫呢? 通過 --link 引數來設定
docker run -d --name web --link db:dbserver nginx

--link 引數的格式為 --link name:alias,其中 name 是要連結的容器的名稱,alias 是這個連線的別名。 通過這樣處理後, web 應用連線資料庫字串的 server 就是 dbserver 了。

 

其他相關資料

https://www.jianshu.com/p/cf6e7248b6c7?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

相關文章