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 .
啟動(dòng)鏡像
docker run -it 鏡像ID /bin/bash
可以看到生成鏡像時(shí)自動(dòng)掛載的,數(shù)據(jù)卷目錄
以上dockerfile
方式屬于匿名掛載數(shù)據(jù)卷
清理docker使用空間
我個(gè)人使用的是單核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 小時(shí)的停止容器
docker container prune --filter "until=24h"
數(shù)據(jù)卷永遠(yuǎn)不會自動(dòng)刪除,因?yàn)檫@樣做可能會破壞數(shù)據(jù)
刪除未使用的數(shù)據(jù)卷
docker volume prune
刪除沒有使用過的網(wǎng)絡(luò)
docker network prune
刪除所有未使用過的資源
docker system prune
手動(dòng)刪除/var/lib/docker/volumes的問題解決
當(dāng)時(shí)清理docker使用空間的時(shí)候,清過頭了,一下子把掛載的數(shù)據(jù)卷也給順手清理了??,真是自己給自己找事做。
錯(cuò)誤信息
手動(dòng)刪除了掛載到宿主機(jī)上的所有數(shù)據(jù)卷,在啟動(dòng)容器掛載數(shù)據(jù)卷的時(shí)候就會報(bào)錯(cuò)
如下,重新運(yùn)行容器,原先具名掛載數(shù)據(jù)卷juming-nginx
,報(bào)錯(cuò)信息如下??
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.
嘗試方法一(不建議使用):
刪除所有容器
刪除所有鏡像
重新運(yùn)行一個(gè)新的容器并掛載數(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 # 還是報(bào)錯(cuò)
結(jié)論:
無法解決問題,且刪除所有容器、鏡像存在的風(fēng)險(xiǎn)較大,不建議使用!
嘗試方法二(推薦使用):
停止docker服務(wù)
重新啟動(dòng)docker服務(wù)
再次運(yùn)行容器
# 1 systemctl stop docker # 2 systemctl restart docker # 3 docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx # 沒有報(bào)錯(cuò),docker ps查看 成功運(yùn)行
結(jié)論
沒有報(bào)錯(cuò),docker ps
查看,成功運(yùn)行
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鏡像的實(shí)現(xiàn)步驟
- 使用Dockerfile.dockerignore提升Docker鏡像構(gòu)建速度
- docker通過Dockerfile修改鏡像中tomcat的端口
- 查詢Docker鏡像DockerFile的方法步驟
- 編寫Dockerfile和構(gòu)建自定義鏡像的步驟與技巧
- 利用Dockerfile制作個(gè)人的鏡像文件詳細(xì)講解
- docker進(jìn)階教程之dockerfile優(yōu)化鏡像大小
- 使用Dockerfile腳本定制鏡像的方法
- 從docker鏡像里提取dockerfile的兩種方法
- docker通過Dockerfile構(gòu)建mysql鏡像的方法
- dockerfile指令構(gòu)建docker鏡像的示例代碼
- docker使用Dockerfile構(gòu)建鏡像的實(shí)現(xiàn)示例
相關(guān)文章
docker搭建CMS點(diǎn)播系統(tǒng)帶播放器功能
熟悉docker的童鞋都知道,安裝是非常的便利的,也可以在線體驗(yàn)的,今天通過本文給大家介紹docker搭建CMS點(diǎn)播系統(tǒng)帶播放器功能,感興趣的朋友跟隨小編一起看看吧2021-05-05Docker拉取ubuntu鏡像并建立環(huán)境的詳細(xì)過程
在Docker實(shí)戰(zhàn)中Ubuntu是一個(gè)常見的基礎(chǔ)鏡像,用于構(gòu)建其他應(yīng)用服務(wù)的容器,這篇文章主要給大家介紹了關(guān)于Docker拉取ubuntu鏡像并建立環(huán)境的詳細(xì)過程,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07使用docker快速部署Elasticsearch集群的方法
這篇文章主要介紹了使用docker快速部署Elasticsearch集群的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03使用非root用戶安裝及啟動(dòng)docker的問題(rootless模式運(yùn)行)
docker是使用--userns-remap容器用戶映射宿主機(jī)用戶的方式來解決問題,用戶和組的映射由兩個(gè)配置文件來控制,分別是/etc/subuid和/etc/subgid,本文給大家介紹非root用戶啟動(dòng)docker的問題,感興趣的朋友一起看看吧2022-05-05Docker系列compose?ymal文件解析學(xué)習(xí)
這篇文章主要介紹了Docker系列之compose?ymal文件解析學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10docker啟動(dòng)mysql5.7服務(wù)詳細(xì)說明
這篇文章主要給大家介紹了關(guān)于docker啟動(dòng)mysql5.7服務(wù)的相關(guān)資料,文中通過代碼示例介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考價(jià)值,需要的朋友可以參考下2023-09-09Docker安裝Nginx教程實(shí)現(xiàn)圖例講解
這篇文章主要介紹了Docker安裝Nginx教程圖例講解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09