Docker教程之使用dockerfile生成鏡像
用dockerfile生成鏡像并掛載數(shù)據(jù)卷
編寫dockerfile文件
創(chuàng)建dockerfile01
文件
# 基礎鏡像 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的云服務器,用了快三年了,內(nèi)存、cpu嚴重吃緊,所以就嘗試了清理docker使用空間,主要是刪除未使用過的鏡像、容器、數(shù)據(jù)卷、網(wǎng)絡命令,具體如下:
官方文檔鏈接 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)絡
docker network prune
刪除所有未使用過的資源
docker system prune
手動刪除/var/lib/docker/volumes的問題解決
當時清理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é)論:
無法解決問題,且刪除所有容器、鏡像存在的風險較大,不建議使用!
嘗試方法二(推薦使用):
停止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查看 成功運行
結(jié)論
沒有報錯,docker ps
查看,成功運行
docker volume ls
查看鏡像,可以看到具名數(shù)據(jù)卷juming-nginx
已顯示出來了
docker volume ls DRIVER VOLUME NAME local a9b39215509378332ec9dfcdc3e10857b500694ea66efd9c2b7a6a9c55a2f10a local juming-nginx
到此這篇關于Docker教程之使用dockerfile生成鏡像的文章就介紹到這了,更多相關dockerfile生成鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- 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)示例
相關文章
Docker拉取ubuntu鏡像并建立環(huán)境的詳細過程
在Docker實戰(zhàn)中Ubuntu是一個常見的基礎鏡像,用于構(gòu)建其他應用服務的容器,這篇文章主要給大家介紹了關于Docker拉取ubuntu鏡像并建立環(huán)境的詳細過程,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-07-07使用docker快速部署Elasticsearch集群的方法
這篇文章主要介紹了使用docker快速部署Elasticsearch集群的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03使用非root用戶安裝及啟動docker的問題(rootless模式運行)
docker是使用--userns-remap容器用戶映射宿主機用戶的方式來解決問題,用戶和組的映射由兩個配置文件來控制,分別是/etc/subuid和/etc/subgid,本文給大家介紹非root用戶啟動docker的問題,感興趣的朋友一起看看吧2022-05-05