Docker教程之使用dockerfile生成鏡像
用dockerfile生成鏡像并掛載數(shù)據(jù)卷
編寫dockerfile文件
創(chuàng)建dockerfile01 文件
# 基礎(chǔ)鏡像 FROM centos VOLUME ["volume01", "volume02"] CMD echo "-----end----"
docker build 構(gòu)建鏡像
docker build -f ./dockerfile01 -t xiao-centos .

啟動鏡像
docker run -it 鏡像ID /bin/bash
可以看到生成鏡像時自動掛載的,數(shù)據(jù)卷目錄

以上dockerfile方式屬于匿名掛載數(shù)據(jù)卷

清理docker使用空間
我個人使用的是單核2G的云服務(wù)器,用了快三年了,內(nèi)存、cpu嚴(yán)重吃緊,所以就嘗試了清理docker使用空間,主要是刪除未使用過的鏡像、容器、數(shù)據(jù)卷、網(wǎng)絡(luò)命令,具體如下:
官方文檔鏈接 https://docs.docker.com/config/pruning/
執(zhí)行如下可以查看 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"
數(shù)據(jù)卷永遠不會自動刪除,因為這樣做可能會破壞數(shù)據(jù)
刪除未使用的數(shù)據(jù)卷
docker volume prune
刪除沒有使用過的網(wǎng)絡(luò)
docker network prune
刪除所有未使用過的資源
docker system prune
手動刪除/var/lib/docker/volumes的問題解決
當(dāng)時清理docker使用空間的時候,清過頭了,一下子把掛載的數(shù)據(jù)卷也給順手清理了??,真是自己給自己找事做。
錯誤信息
手動刪除了掛載到宿主機上的所有數(shù)據(jù)卷,在啟動容器掛載數(shù)據(jù)卷的時候就會報錯
如下,重新運行容器,原先具名掛載數(shù)據(jù)卷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.
嘗試方法一(不建議使用):
刪除所有容器
刪除所有鏡像
重新運行一個新的容器并掛載數(shù)據(jù)卷
# 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 # 還是報錯
結(jié)論:
無法解決問題,且刪除所有容器、鏡像存在的風(fēng)險較大,不建議使用!
嘗試方法二(推薦使用):
停止docker服務(wù)
重新啟動docker服務(wù)
再次運行容器
# 1 systemctl stop docker # 2 systemctl restart docker # 3 docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx # 沒有報錯,docker ps查看 成功運行
結(jié)論
沒有報錯,docker ps查看,成功運行
docker volume ls 查看鏡像,可以看到具名數(shù)據(jù)卷juming-nginx已顯示出來了
docker volume ls DRIVER VOLUME NAME local a9b39215509378332ec9dfcdc3e10857b500694ea66efd9c2b7a6a9c55a2f10a local juming-nginx
到此這篇關(guān)于Docker教程之使用dockerfile生成鏡像的文章就介紹到這了,更多相關(guān)dockerfile生成鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Dockerfile打包nginx鏡像的實現(xiàn)步驟
- 使用Dockerfile.dockerignore提升Docker鏡像構(gòu)建速度
- docker通過Dockerfile修改鏡像中tomcat的端口
- 查詢Docker鏡像DockerFile的方法步驟
- 編寫Dockerfile和構(gòu)建自定義鏡像的步驟與技巧
- 利用Dockerfile制作個人的鏡像文件詳細講解
- docker進階教程之dockerfile優(yōu)化鏡像大小
- 使用Dockerfile腳本定制鏡像的方法
- 從docker鏡像里提取dockerfile的兩種方法
- docker通過Dockerfile構(gòu)建mysql鏡像的方法
- dockerfile指令構(gòu)建docker鏡像的示例代碼
- docker使用Dockerfile構(gòu)建鏡像的實現(xiàn)示例
相關(guān)文章
docker操作Permission denied無權(quán)限的問題解決
我們?nèi)粘P枰猟ocker環(huán)境進入容器配置或查看一些文件,本文主要介紹了docker操作Permission denied無權(quán)限的問題解決,具有一定的參考價值,感興趣的可以了解一下2024-06-06
Docker下多容器搭建 lamp的詳細過程(httpd+mysql+php+redis)
這篇文章主要介紹了Docker下多容器搭建lamp的詳細過程(httpd+mysql+php+redis),搭建拉取所需鏡像,本文給大家講解的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-01-01

