怎么把docker里面已經創建的容器刪除
Docker是一個為開發人員和系統管理員開發、遷移和運行應用程序的平臺 。應用程序通過Docker打包成Docker Image后,可以實現統一的方式來下載、啟動、擴展、刪除和遷移,這樣方便了應用程序的部署和運維 。https://community/docs/DOC-42054Docker采用服務器/客戶端模式 。Docker客戶端通過和Docker Daemon進行交互來新建、運行或者部署Docker容器 。用戶可以將Docker客戶端和Docker Daemon安裝在同一個系統上,也可以安裝在不同的系統上 。Docker客戶端通過端口或者RESTful API和Docker Daemon進行通信 。Docker內部由三部分組成:Docker images:Docker image是一個只讀模板,用于創建Docker容器 。Image中可以包含Linux操作系統、Apache或者Web應用程序等等,用戶可以下載已經創建好的Docker image,也可以創建Docker image給其他用戶使用 。每個image是由很多層組成,Docker通過Union File Systems將這些層綁定在一個image中 。每個image都以一個初級image做為基礎,然后通過操作指令在這些初級image上添加新層,操作指令可以是運行的命令、添加文件或目錄或者創建可用操作環境等 。這些操作指令都被保存在“Dockerfile”文件中 。Docker registries: Docker registries用于保存Docker image,也分公用和私用二種 。公用的Docker registry就是Docker Hub,用戶也可以創建私有的Docker registry,為其他用戶提供Docker images下載 。Docker containers:類似于保存VMware虛擬機配置文件的目錄,它可以為應用程序運行提供一切要素 。Docker Containers可以運行、啟動、停止或者被刪除,每個container都是隔離的安全應用平臺 。
Docker 占用資源膨脹那么快,你知道怎么清理?
如果經常使用 docker,你會發現 docker 占用的資源膨脹很快,其中最明顯也最容易被察覺的應該是對磁盤空間的占用 。本文將介紹如何快速的清理 docker 占用的系統資源,具體點說就是刪除那些無用的 鏡像、容器、網絡和數據卷 。
在進行資源清理之前我們有必要搞清楚 docker 都占用了哪些系統的資源 。這需要綜合使用不同的命令來完成 。
docker container ls :默認只列出正在運行的容器,-a 選項會列出包括停止的所有容器 。
docker image ls :列出鏡像信息,-a 選項會列出 intermediate 鏡像(就是其它鏡像依賴的層) 。
docker volume ls :列出數據卷 。
docker network ls :列出 network 。
docker info :顯示系統級別的信息,比如容器和鏡像的數量等 。
通過這些命令查看 docker 使用的資源情況后,相信你已經決定要清理 docker 占用的一些資源了!讓我們先從那些未被使用的資源開始 。
Docker 提供了方便的 docker system prune 命令來刪除那些已停止的容器、dangling 鏡像、未被容器引用的 network 和構建過程中的 cache:
【Docker 鏡像、容器命令 docker刪除容器重新運行】 <pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">$ docker system prune</pre>
安全起見,這個命令默認不會刪除那些未被任何容器引用的數據卷,如果需要同時刪除這些數據卷,你需要顯式的指定 --volumns 參數 。比如你可能想要執行下面的命令:
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">$ docker system prune --all --force --volumns</pre>
這次不僅會刪除數據卷,而且連確認的過程都沒有了!注意,使用 --all 參數后會刪除所有未被引用的鏡像而不僅僅是 dangling 鏡像 。
這里有必要解釋一下何為 dangling images,其實可以簡單的理解為未被任何鏡像引用的鏡像 。比如在你重新構建了鏡像后,那些之前構建的且不再被引用的鏡像層就變成了 dangling images:
在本地的鏡像更新之后,就會出現類似圖中紅框內的 <none> 鏡像 。這表示舊的鏡像已經不再被引用了,此時它們就變成了 dangling images 。如果使用 -a 參數,你還會發現另外一種類型的 <none> 鏡像,它們的 repository 和 tag 列都表現為 <none>:
這些鏡像被稱為 intermediate 鏡像(就是其它鏡像依賴的層) 。
我們還可在不同在子命令下執行 prune,這樣刪除的就是某類資源:
docker container prune# 刪除所有退出狀態的容器
docker volume prune# 刪除未被使用的數據卷
docker image prune# 刪除 dangling 或所有未被使用的鏡像
這里的 "安裝時的狀態" 指資源占用情況而不是 docker 的相關配置 。這也是一種比較常見的用例,比如筆者就需要在一個干凈的 docker 環境中自動化的還原出某天的一個生產環境(使用生產環境的備份數據)用于 bug 調查 。讓我們一起來看看都需要做些什么?
回想我們前面介紹的 docker system prune --all --force --volumns 命令,如果在執行這個命令前系統中所有的容器都已停止,那么這個命令就會移除所有的資源!好,現在讓我們想辦法停掉系統中的所有容器 。
docker container stop 命令可以停止一個或多個容器,我們只需要把系統中所有在運行的容器羅列出來就可以了 。由于 docker 并不介意我們再次停止一個已經停止了的容器,干脆簡單粗暴點,直接列出所有的容器(包括已經停止的)!
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">$ docker container ls -a -q</pre>
-a 顯示所有的容器,-q 只顯示數字形式的容器 ID 。
然后把這里命令執行的結果作為 docker container stop 命令的參數:
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">(docker container ls -a -q)</pre>
完整的恢復 docker 環境的命令如下:
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">(docker container ls -a -q) && docker system prune --all --force --volumns</pre>
和前面的 prune 命令類似,也可以完全刪除某一類資源:
刪除容器 :docker container rm(docker image ls -a -q)
刪除數據卷 :docker volume rm(docker network ls -q)
上面的命令可以完成任務但是卻很繁瑣,我們可以通過 shell 的別名功能來簡化這些命令的執行 。
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">alias docker-clean-unused='docker system prune --all --force --volumes' alias docker-clean-all='docker stop $(docker container ls -a -q) && docker system prune --all --force --volumes'</pre>
把上面的命令寫入到用戶的 ~/.bashrc 文件中就可以了!
執行一次清理任務:
經常清理系統資源不僅能夠讓系統運行的更流暢,也利于我們把精力集中在相關的重點資源上面 。所以建議大家能夠使用相關的資源清理命令,讓 docker 保持清爽和高效 。
參考:
Clean out your Docker images, containers and volumes with single commands
Python 零基礎入門課程
此課程為面授班和網絡班,一共 15 個課時,每周上一個全天,歷時4個月 。附加:錄播視頻+筆記+答疑2019-6月份開課
Python 自動化運維進階課程
此課程為面授班和網絡班,一共 15 個課時,每周上一個全天,歷時4個月 。附加:錄播視頻+筆記+答疑2019-4月份開課
Docker+K8s 課程
此課程為網絡班,一共 150個課時,每周上一個全天,歷時4個月 。附加:錄播視頻+筆記+答疑現已開課
現在報名即可享受早鳥價
golang 課程
早報名可享受早鳥價
想要詳細了解和報名的同學可以掃碼添加好友私聊
「 Docker」容器Removal In Progress刪除方案
有兩個閑置的容器在刪除時發生錯誤,處在Removal In Progress狀態 。在重啟Docker后處于Dead狀態 。
刪除時提示信息如下:
網上有很多類似的解決辦法,但試了幾個均不能使用,例如:
最終解決方案:
說明:grep檢索的不是容器號,而是刪除時提示信息中/mnt/docker/devicemapper/mnt/*** 驅動器號,得到占用該驅動器的進程號 24762(/proc/24762/mountinfo),殺死進程即可
Docker 鏡像、容器命令鏡像-容器的模板-靜態的-打包好的-使用的時候創建容器
du -sh *
[hs@cs007 hs]$ du -sh *
0app
80Kbackup
574Mcentos-ssh-jdk.tar
8.0Kdgw-agent
docker container prune:清理所有停止運行的容器(exited)
docker image prune:清理所有懸掛(<none>)鏡像
docker system prune:清理磁盤,刪除關閉的容器、無用的數據卷和網絡,-a:可以將沒有鏡像都刪掉
docker rmi -f3}') :刪除鏡像名稱或標簽為<none>的鏡像
docker rmi -f1}'):刪除異常停止的docker容器
sync; echo 1 > /proc/sys/vm/drop_caches
Docker卸載過程
對一臺已經安裝了docker的機器,如果我們要卸載掉他的話,可以通過rpm命令刪除掉 。
1)這里用到一臺已經裝了docker的機器,首先查看一下他的安裝情況:
執行rpm -qa | grep docker,可以看到如下信息
2)在刪除之前,我們可以通過docker ps命令來看一下有哪些容器處于運行狀態,如果有的話通過docker stop 容器ID可用停掉容器,如果以CTRL+P+Q的方式退出容器的話,需要先docker attach 容器ID來先進入容器 。
還可以通過docker rm -f 容器ID命令將容器直接刪除掉 。
3)如果沒有處于運行狀態的容器,可用跳過上一步,直接去刪除docker,這里我們分別指向rpm -e來刪除這些軟件,刪除的時候可能提示依賴包錯誤,我們需要加上--nodeps,如下圖:
這里給出一個刪除命令的示例作為參考
4)執行完上面的操作后docker,如果還沒有卸載完全,需要通過yum remove將相關的包remove掉
yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-selinux
docker-engine-selinux
docker-engine
5)最后去docker相關的一些目錄,將該目錄強制刪除掉
Docker鏡像操作常用指令有哪些?docker version:查看docker版本;
docker info:查看docker詳細信息;
docker --help:查看docker命令;
鏡像命令
docker images:列出本地主機上的鏡像,REPOSITORY:表示鏡像的倉庫源;TAG:鏡像的標簽;IMAGE
ID:鏡像ID;CREATED:鏡像創建時間;SIZE :鏡像大小,同一個倉庫源可以有多個TAG,可以表示倉庫源的不同版本,使用REPOSITORY:TAG來定義不同的鏡像;
docker images -a:列出本地所有的鏡像;
docker images -p:只顯示鏡像ID;
docker images --digests:顯示鏡像的摘要信息;
docker images --no-trunc:顯示完整的鏡像信息;
docker search tomcat:從Docker Hub上查找tomcat鏡像;
容器命令
docker run [OPTIONS] IMAGE:根據鏡像新建并啟動容器,IMAGE是鏡像ID或鏡像名稱;
docker ps:列出當前所有正在運行的容器;
exit:退出并停止容器;
docker start 容器ID或容器名稱:啟動容器;
docker restart 容器ID或容器名稱:重新啟動容器;
docker stop 容器ID或容器名稱:停止容器;
docker kill 容器ID或容器名稱:強制停止容器;
docker rm 容器ID或容器名稱:刪除容器;
docker rm -f $(docker ps -a -q):刪除多個容器 。
關于docker刪除容器和docker刪除容器重新運行的內容就分享到這兒!更多實用知識經驗,盡在 m.apearl.cn
- 足球比賽中人墻的距離是多少?
- 伶組詞語和讀音,俐組詞
- 衛生紙生活小竅門
- 描寫自然風光的名言警句
- 雨棚怎樣搭不違建
- 抖音簡單大氣的名字
- 燃燒的意志薩博怎么過
- 提前做好準備,預防暈車
- 下水道凍了怎么快速化了
- 西洋參可以生吃嗎 西洋參片可以生吃嗎
