實用網站:
https://segmentfault.com/a/1190000009544565
https://www.jianshu.com/p/0231568ab335
https://yeasy.gitbooks.io/docker_practice/
https://docs.docker.com/engine/reference/commandline/run/
基本概念
鏡像(Image):一個特殊的文件系統,提供容器運行時所需的程序/庫/資源/配置等文件。鏡像不包含任何動態數據,內容在創建之後也不會被改變。
分層存儲:鏡像構建時,採用分層構建,前一層時後一層的基礎。每一層構建完成之後就不會再發生改變,後一層上的任何更改只會發生在自己這一層。比如,刪除前一層文件的操作,實際不是真的刪除前一層的文件,而是僅在當前層標記爲該文件已刪除。在最終容器運行的時候,雖然不會看到這個文件,但是實際上該文件會一直跟隨鏡像。
容器(Container):鏡像和容器的關係就像是類與實例之間的關係。容器是鏡像運行時的實體,實質是進程,運行於屬於自己的獨立的命名空間(是在自己獨立的隔離環境中)。每一個容器在運行時,都以鏡像爲基礎層,在其上建立一個當前容器的存儲層。該存儲層與容器的生存週期相同,一般不往其中寫任何數據(數據保存至數據卷中)。
倉庫(Repository):每個倉庫可以包含多個標籤,一個標籤對應一個鏡像。默認標籤爲latest。通常一個倉庫包含同一個軟件的不同版本的鏡像。可以通過 <倉庫名>:<標籤>
的格式來指定具體是這個軟件哪個版本的鏡像。
使用鏡像
獲取鏡像
docker pull [option] NAME[:TAG|@DIGEST]
docker pull [option] [Docker Registry地址[:端口號]/]倉庫名[:標籤]
eg:docker pull daocloud.io/library/node //從docker鏡像中心下載Node鏡像,不加標籤默認下載lasted
運行鏡像
docker run [options] IMAGE [COMMAND] [ARG...]
eg:docker run node
查看所有鏡像
docker image ls
查看鏡像/容器/數據卷所佔用的空間
docker system df
查看虛懸鏡像(dangling image)
docker image ls -f dangling=true
刪除所有虛懸鏡像
docker image prune
刪除本地鏡像
docker image rm [option] IMAGE [IMAGE ...]
進入容器
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
eg:docker exec -it nginx /bin/bash //以交互式終端的方式進入容器
退出容器 exit
查看容器的存儲層變動
docker diff
保存容器及其存儲層構成新鏡像(慎用)
docker commit [選項] <容器ID或容器名> [倉庫名[:標籤]]
使用Dockerfile定製鏡像
https://yeasy.gitbooks.io/docker_practice/image/build.html
在Dockerfile文件所在的目錄執行 docker build -t 倉庫名:標籤 .
Dockerfile中常用命令
FROM 基礎鏡像
RUN 用來執行命令行命令
使用容器
新建容器並啓動
docker run [options] IMAGE [COMMAND] [ARG...]
options: -i 設置容器的標準輸入保持打開
-t 讓docker分配一個僞終端並綁定至容器的標準輸入上
-d 讓 Docker 在後臺運行而不是直接把執行命令的結果輸出在當前宿主機下
在僞終端利用ps或top命令查看docker進程信息
獲取容器的輸出信息
docker container logs
終止容器
docker container stop
啓動已終止的容器
docker container start
重啓容器
docker container restart
導出容器快照至本地文件
docker export CONTAINER_ID > FILE_NAME.tar
從本地導入容器快照至docker鏡像
cat FILE_NAME.tar | docker import - [path/]倉庫名:標籤
刪除容器
docker container rm 倉庫名