1. 程式人生 > >docker鏡像與容器管理(二)

docker鏡像與容器管理(二)

實現 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鏡像與容器管理(二)