Docker | 使用dockerfile生成镜像,清理docker空间

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

🚀 优质资源分享 🚀

学习路线指引(点击解锁)知识定位人群定位
🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

dockerfile生成镜像并挂载数据卷

编写dockerfile文件

  1. 创建dockerfile01 文件
# 基础镜像
FROM centos

VOLUME ["volume01", "volume02"]

CMD echo "-----end----"


  1. docker build 构建镜像
docker build -f ./dockerfile01 -t xiao-centos .

  1. 启动镜像
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. 删除所有容器
  2. 删除所有镜像
  3. 重新运行一个新的容器并挂载数据卷
# 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

# 还是报错

结论:

无法解决问题,且删除所有容器、镜像存在的风险较大,不建议使用!

尝试方法二(推荐使用):

  1. 停止docker服务
  2. 重新启动docker服务
  3. 再次运行容器
# 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


我是 甜点cc

热爱前端,也喜欢专研各种跟本职工作关系不大的技术,技术、产品兴趣广泛且浓厚,等待着一个创业机会。本号主要致力于分享个人经验总结,希望可以给一小部分人一些微小帮助。

希望能和大家一起努力营造一个良好的学习氛围,为了个人和家庭、为了我国的互联网物联网技术、数字化转型、数字经济发展做一点点贡献。数风流人物还看中国、看今朝、看你我。

  • 本文链接: https://blog.csdn.net/all-smile/p/16789104.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 原创文章,版权归作者个人所有,转载请务必联系我(右下角有微信名片,也可以在平台私信我😊)
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角**【[推荐](javascript:void(0)😉】**一下。
如何在Windows系统下使用Dockerfile构建Docker镜像:完整指南 使用Windows创建Dockerfile文件# 构建镜像(注意最后的点表示当前上下文)特别注意构建镜像这里的。 阅读详情

相关推荐

使用Dockerfile制作nginx镜像

原有的nginx镜像是直接docker pull拉取的,好像是1.19.0的版本。甲方公司在安全扫描的时候说有安全漏洞,需要升级nginx的镜像的版本,因此选择从0开始制作最新版的nginx镜像(1.21.0版本)。 制作镜像的方法有两种,这里我们选择Dockerfile方式: Dockerfile使用源代码构建docker镜像,编辑一个Dockerfile,而后根据此文件制作;docker可以自动通过读取Dockerfile中的指令,自动构建镜像Dockerfile是一个文本文档包含所有用户的命令,

weixin_44455388的博客 1万+

docker-chrome-selenium:Dockerfile 使用 ChromeDriver 构建无头 selenium 安装

带有 Chrome 的 Selenium Server 的 Docker 镜像(改编自 lzhang/selenium) 安装 $ sudo docker pull eperoumalnaik/docker-chrome-selenium 用法 运行容器: $ SELENIUM_CONTAINER= $( sudo docker run --privileged -p 4444:4444 -d eperoumalnaik/docker-chrome-selenium ) Selenium 服务器将在主机的 4444 端口上可用。Web 测试将通过无头 chrome 运行。 需要特权选项才能运行 chrome(请参阅 )。 关闭容器: $ sudo docker kill $SELENIUM_CONTAINER

Windows平台下使用DockerFile构建深度学习基础镜像的详细教程

在windows平台下,在docker desktop平台上用DockerFile来构建基础深度学习镜像

weixin_52582573的博客 2508

构建Docker基础镜像(ubuntu20.04+python3.7.1+chrome101+chromedriver101)

ps:创建镜像名为 ub2004py371chm101chmdr101 标签为 latest 的镜像,从当前路径下的 DockerFile 文件打包。要先下载一个支持 linux 的 浏览器 和 浏览器驱动,我这里下载 chrome+chromedriver。

什么都干的派森 1392

解决 Docker + selenium + chromedriver + chrome 会出现僵尸进程的问题

分析与解决 Docker + selenium + chromedriver + chrome 内的僵尸进程

无痕的博客 3491

Docker镜像中安装ChromeDriver

docker里面安装chromedriver

pbdatax的博客 1244

docker数据卷挂载本地后,是否会占用两倍磁盘空间

比如:服务器有100G空间,用docker部署了一个mysql,mysql数据有40G,把它挂载到本地后,是否等于一共占了磁盘,80G空间呢?不会, 实际占用了40G. 容器里的数据实际就在宿主机上, 只有一份, 挂载可以理解为建立了一个映射关系, 可以直接在宿主机上操作数据, 不用进入容器内部了. 删除容器后, 挂载的数据不会被删除, 也就是所谓的持久化.用dockerfile生成镜像并挂载数据卷编写dockerfile文件清理docker使用空间

weixin_36873225的博客 1392

实用版——python项目打包成docker容器镜像

摘要:本文介绍两种将Python项目打包为Docker镜像的方法。简单版(适合运维)直接导入项目文件到基础Python镜像,依赖需研发自行安装;复杂版(适合研发)通过requirements.txt自动安装依赖,但构建失败会产生缓存占用空间。文章详细说明了两种方法的Dockerfile编写、镜像构建步骤,并提供了清理Docker构建缓存的多种命令,包括危险但彻底的一键清理方式。最后指出可通过检查/var/lib/docker目录定位大文件来源。

共产主义接班人 1100

Dockerfile详解(Dockerfile的基本结构、使用Dockerfile自定义镜像示例、主流编程语言和中间件的基础Docker镜像、编写Dockerfile的最佳实践)

Dockerfile详解(Dockerfile的基本结构、使用Dockerfile自定义镜像示例、主流编程语言和中间件的基础Docker镜像、编写Dockerfile的最佳实践)

聂可以的博客 1万+

使用Dockerfile创建镜像

在多核 CPU 上,适当的进行并行编译还是可以明显提高编译速度的,但并行的任务不宜太多,一般是以 CPU 的核心数目的两倍为宜。Dockerfile中包含多种指令,如果涉及到部署最多使用的算是RUN命令了,使用RUN命令时,不建议每次安装都使用一条单独的RUN命令,可以把能够合并安装指令合并为一条,这样就可以减少镜像分层。一次RUN形成新的一层,如果没有在同一层删除,无论文件是否最后删除,都会带到下一层,所以要在每一层清理对应的残留数据,减小镜像大小。像hadoop需要hadoop用户操作;

2301_81129120的博客 2463

Docker】——安装镜像和创建容器,详解镜像Dockerfile

在此记录一下docker镜像容器的相关注意事项前提条件:已安装Docker、显卡驱动等基础配置。

XC___XC的博客 3906

Dockerfile容器镜像构建技术

Dockerfile 是一种能够被 Docker 程序解释的剧本。Dockerfile 由一条一条的指令组成,并且有自己的书写格式和支持的命令。当我们需要在容器镜像中指定自己额外的需求时,只需在Dockerfile上添加或修改指令,然后通过生成我们自定义的容器镜像(image)。

m0_62943934的博客 1849

Dockerfile最小化构建镜像:减少层数、清理无用数据、多段构建

       docker的官方虽然有数十万计的免费镜像,但是出于某些安全考虑,一般不会使用免费镜像,因此这就需要我们自己制作镜像,制作的镜像如果很大,那么在镜像上传、下载的时候是很不方便的,因此我们需要精简我们制作的镜像,在满足需要的情况下,镜像越小越好。 最小化构建镜像 最小化构建镜像,我们一般从下边三个方面进行操作: 1.减少层数 ...

qq_39213171的博客 1万+

Docker 镜像构建 dockerfile详解 镜像优化

文章目录1. 镜像构建1.1 docker commit (不推荐)3.2 Dockerfile方式(推荐)2. dockerfile详解2.1语法规则2.2 指令详解3. 镜像优化3.1构建nginx镜像(未优化过的)3.2 清理不必要中间产物3.3 减少RUN命令的使用3.4 使用多阶段构建镜像 1. 镜像构建 在构建容器化应用时,相当重要的步骤莫过于镜像制作,通常镜像的制作有两种方式: 使用现有的容器使用docker commit 生成镜像 使用Dockerfile进行镜像构建 采用dock

wnccmyr的博客 785

Docker高级管理--Dockerfile镜像制作

DockerfileDocker 解释的脚本,由多条指令组成(每条对应 Linux 命令),定义镜像构建逻辑,解决命令依赖(类似 Makefile)。相比镜像 “黑盒”,Dockerfile 更透明,支持灵活扩展。

2301_80376513的博客 1501

dockerfile镜像制作

Dockfile 是一种被 Docker 程序解释的脚本,Dockerfile 由多条的指令组成,每条指令对应Linux 下面的一条命令。Docker 程序将这些 Dockerfile 指令翻译成真正的Linux 命令。Dockerfile有自己书写格式和支持的命令,Docker 程序解决这些命令间的依赖关系,类似于Makefile。Docker 程序将读取 Dockerfile,根据指令生成定制的镜像

悟已往之不谏 1241
上一篇: MySQL用户也可以是个角色
下一篇: 初识设计模式 - 迭代器模式
qq_43479892
博客等级 码龄8年 986粉丝 852原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值