docker鏡像與容器管理(二)
阿新 • • 發佈:2018-07-07
實現 rgb images 批量刪除 輸出信息 後臺運行 -- ner mil 鏡像: 靜態的只讀文件,是一個只讀的模板。
容器: 是從鏡像創建的一個運行實例,容器是帶有運行時需要的可寫文件層。
鏡像工作原理:
啟動一個新的容器時,docker會加載鏡像,在鏡像之上添加一個讀寫層,
並將鏡像中的目錄復制一份到/var/lib/docker/containers/容器ID的目錄下,
容器內修改已存在的文件,會將該文件從只讀層復制到讀寫層,並覆蓋只讀層的文件,實現了文件系統隔離,
當刪除容器後,讀寫層的數據將會刪除,鏡像不變。
鏡像文件存儲:
docker相關文件: /var/lib/docker/目錄下。
/var/lib/docker/overlay2/容器ID/diff #每層與父層之間的文件差異。
鏡像管理命令:
獲取: docker pull imagename:tag
上傳: docker push 倉庫名稱
查找: docker search imagename:tag
列出本地鏡像: docker images
修改已有鏡像:
docker run -itd --name test02 ubuntu:16.04 運行容器
docker attach test02 進入容器
安裝相關服務。
docker commit -m "說明信息" -a "指定用戶信息" 容器ID 倉庫名:tag
用Dockerfile構建新鏡像: docker build
刪除鏡像: docker rmi imagename
刪除容器: docker rm containername
直接刪除一個運行中的容器: docker rm -f containername
批量刪除容器: docker rm -v $(docker ps -aq -f status=exited)
導出鏡像: docker save -o 包名 image:tag
導出正在運行的容器: docker export -o centos7 test01
導入鏡像: docker load -i 包名
導入正在運行的容器為鏡像: # docker import centos7 test01:7
註意:
export,import :
導出後再導入的鏡像會丟失所有的歷史,無法回滾之前的層。
save,load :
保存後再加載的鏡像沒有丟失歷史和層,可持久化鏡像,可以做到層回滾。
###容器管理:
##查看容器:
docker ps :列出當前所有正在運行的container
docker ps -l :列出最近一次啟動的container
docker ps -a :列出所有的container
docker ps -q :列出最近一次運行的container ID
##運行容器:
運行容器: docker run -itd image:tag /bin/bash
-itd: i 交互, t 偽終端, d 後臺運行。
##進入正在運行的容器:
#docker run -itd --name test2 test01:latest /bin/sh
#docker exec -it test2 /bin/bash
或者:
#docker attach test2
使用ctrl+p+q 快捷鍵退出。
或:
nsenter工具:
使用nsenter連接到容器,需要先找到容器進程的PID:
#PID=$(docker inspect --format "{{ .State.Pid }}" containerid)
#nsenter --target $PID --mount --uts --ipc --net --pid
查看docker版本: docker version
查看系統(docker)層面的信息: docker info
指定容器總是重啟:
docker run -itd --name test3 --restart=always centos:7
查看狀態(前臺運行): docker stats
查看狀態(後臺運行): docker stats --no-stream
獲取容器輸出信息並查看容器運行日誌:
docker logs containerid
終止容器: docker stop
強行終止容器: docker kill containerid
終止容器後,可以用docker start命令重啟容器。
先終止,再重啟容器: docker restart 命令。
查看image或container的底層信息:
docker inspect <image|container>
docker鏡像與容器管理(二)