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

简介: Docker | 使用dockerfile生成镜像,以及清理docker空间

dockerfile生成镜像并挂载数据卷


编写dockerfile文件


  1. 创建dockerfile01 文件
# 基础镜像
FROM centos
VOLUME ["volume01", "volume02"]
CMD echo "-----end----"
  1. docker build 构建镜像
docker build -f ./dockerfile01 -t xiao-centos .

image.png

  1. 启动镜像
docker run -it 镜像ID /bin/bash


可以看到生成镜像时自动挂载的,数据卷目录

image.png

以上dockerfile方式属于匿名挂载数据卷

image.png


清理docker使用空间


我个人使用的是单核2G的云服务器,用了快三年了,内存、cpu严重吃紧,所以就尝试了清理docker使用空间,主要是删除未使用过的镜像、容器、数据卷、网络命令,具体如下:


官方文档链接docs.docker.com/config/prun…

  • 执行如下可以查看 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



目录
打赏
0
0
0
0
4
分享
相关文章
云效flow构建docker镜像更换apt源为阿里镜像源
在 Dockerfile 中添加命令以更换 Debian 源为阿里云镜像,加速容器内软件包下载。核心命令通过 `sed` 实现源地址替换,并更新 apt 软件源。其中 `cat` 命令用于验证替换是否成功,实际使用中可删除该行。
653 32
将应用程序打包成Docker镜像时可能遇到哪些问题?
将应用程序打包成Docker镜像时可能遇到哪些问题?
264 77
Ubuntu Docker镜像:支持systemctl、SSH、VNC
总的来说,创建一个支持systemctl、SSH和VNC的Ubuntu Docker镜像需要一些技术知识,但是通过学习和实践,我们可以掌握这些技术。这将使我们能够更有效地使用Docker,更好地管理我们的应用程序和服务。CentOS系统中的日志文件位置和管理
119 17
Docker镜像:Ubuntu支持systemctl、SSH和VNC
总的来说,Docker提供了一个灵活且强大的方式来创建和运行自定义的Ubuntu镜像。通过理解和使用Dockerfile,你可以轻松地创建一个支持systemctl、SSH和VNC的Ubuntu镜像。
219 21
|
7月前
|
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
425 76
在Docker中,Dockerfile有哪些常见指令?
在Docker中,Dockerfile有哪些常见指令?
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问