網站首頁 編程語言 正文
用dockerfile生成鏡像并掛載數據卷
編寫dockerfile文件
創建dockerfile01
文件
# 基礎鏡像 FROM centos VOLUME ["volume01", "volume02"] CMD echo "-----end----"
docker build
構建鏡像
docker build -f ./dockerfile01 -t xiao-centos .
啟動鏡像
docker run -it 鏡像ID /bin/bash
可以看到生成鏡像時自動掛載的,數據卷目錄
以上dockerfile
方式屬于匿名掛載數據卷
清理docker使用空間
我個人使用的是單核2G的云服務器,用了快三年了,內存、cpu嚴重吃緊,所以就嘗試了清理docker使用空間,主要是刪除未使用過的鏡像、容器、數據卷、網絡命令,具體如下:
官方文檔鏈接 https://docs.docker.com/config/pruning/
執行如下可以查看 Docker 的磁盤使用情況(類似于 Linux 上的 df 命令)
docker system df
刪除所有未使用過的鏡像
docker image prune -a
刪除所有停止的容器
docker container prune docker rm -f $(docker ps -aq)
僅刪除超過 24 小時的停止容器
docker container prune --filter "until=24h"
數據卷永遠不會自動刪除,因為這樣做可能會破壞數據
刪除未使用的數據卷
docker volume prune
刪除沒有使用過的網絡
docker network prune
刪除所有未使用過的資源
docker system prune
手動刪除/var/lib/docker/volumes的問題解決
當時清理docker使用空間的時候,清過頭了,一下子把掛載的數據卷也給順手清理了??,真是自己給自己找事做。
錯誤信息
手動刪除了掛載到宿主機上的所有數據卷,在啟動容器掛載數據卷的時候就會報錯
如下,重新運行容器,原先具名掛載數據卷juming-nginx
,報錯信息如下??
docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx
docker: Error response from daemon: open /var/lib/docker/volumes/juming-nginx/_data: no such file or directory.
嘗試方法一(不建議使用):
刪除所有容器
刪除所有鏡像
重新運行一個新的容器并掛載數據卷
# 1 docker rm -f $(docker ps -aq) # 2 docker rmi -f $(docker images -aq) # 3. docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx # 還是報錯
結論:
無法解決問題,且刪除所有容器、鏡像存在的風險較大,不建議使用!
嘗試方法二(推薦使用):
停止docker服務
重新啟動docker服務
再次運行容器
# 1 systemctl stop docker # 2 systemctl restart docker # 3 docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx # 沒有報錯,docker ps查看 成功運行
結論
沒有報錯,docker ps
查看,成功運行
docker volume ls
查看鏡像,可以看到具名數據卷juming-nginx
已顯示出來了
docker volume ls DRIVER VOLUME NAME local a9b39215509378332ec9dfcdc3e10857b500694ea66efd9c2b7a6a9c55a2f10a local juming-nginx
原文鏈接:https://www.cnblogs.com/all-smile/p/16789104.html
相關推薦
- 2023-02-09 C++存儲持續性生命周期原理解析_C 語言
- 2023-08-13 uniapp寫一個隨時間變化的預約日期列表
- 2022-05-12 uni-app混合原生安卓開發
- 2023-01-26 如何在.Net?7中將Query綁定到數組詳解_實用技巧
- 2024-03-03 layui彈窗編輯表單清空
- 2022-12-24 Docker自定義網絡詳解_docker
- 2022-06-15 golang?gorm的關系關聯實現示例_Golang
- 2022-10-07 C語言實現動態版通訊錄的示例代碼_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支