1. 程式人生 > >Docker 入門筆記

Docker 入門筆記

ans bsp 名稱 只讀 enter end 速度 vol www.

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

Docker 入門筆記