dockerfile生成镜像并挂载数据卷

编写dockerfile文件

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

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

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

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

清理docker使用空间

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

官方文档链接 https://docs.docker.com/config/pruning/

  • 执行如下可以查看 Docker 的磁盘使用情况(类似于 Linux 上的 df 命令)
  1. docker system df
  • 删除所有未使用过的镜像
  1. docker image prune -a
  • 删除所有停止的容器
  1. docker container prune
  2. docker rm -f $(docker ps -aq)
  • 仅删除超过 24 小时的停止容器
  1. docker container prune --filter "until=24h"

数据卷永远不会自动删除,因为这样做可能会破坏数据

  • 删除未使用的数据卷
  1. docker volume prune
  • 删除没有使用过的网络
  1. docker network prune
  • 删除所有未使用过的资源
  1. docker system prune

手动删除/var/lib/docker/volumes的问题解决

当时清理docker使用空间的时候,清过头了,一下子把挂载的数据卷也给顺手清理了,真是自己给自己找事做。

错误信息

手动删除了挂载到宿主机上的所有数据卷,在启动容器挂载数据卷的时候就会报错

如下,重新运行容器,原先具名挂载数据卷juming-nginx,报错信息如下

docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx

  1. docker: Error response from daemon: open /var/lib/docker/volumes/juming-nginx/_data: no such file or directory.

尝试方法一(不建议使用):

  1. 删除所有容器

  2. 删除所有镜像

  3. 重新运行一个新的容器并挂载数据卷

  1. # 1
  2. docker rm -f $(docker ps -aq)
  3. # 2
  4. docker rmi -f $(docker images -aq)
  5. # 3.
  6. docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx
  7. # 还是报错

结论:

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

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

  1. 停止docker服务

  2. 重新启动docker服务

  3. 再次运行容器

  1. # 1
  2. systemctl stop docker
  3. # 2
  4. systemctl restart docker
  5. # 3
  6. docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx
  7. # 没有报错,docker ps查看 成功运行

结论

没有报错,docker ps查看,成功运行

docker volume ls 查看镜像,可以看到具名数据卷juming-nginx已显示出来了

  1. docker volume ls
  2. DRIVER VOLUME NAME
  3. local a9b39215509378332ec9dfcdc3e10857b500694ea66efd9c2b7a6a9c55a2f10a
  4. local juming-nginx

我是 甜点cc

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

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

Docker | 使用dockerfile生成镜像,清理docker空间的更多相关文章

  1. docker学习笔记-06:自定义DockerFile生成镜像

    一.自定义centos的DockerFile 1.从阿里源里拉的centos镜像新建的容器实例中,没有vim编辑器和ifconfig命令,所以自定义centos的DockerFile,创建自己想要的镜 ...

  2. DockerFile构建镜像和Docker仓库

    利用commit理解镜像构成 注意: docker commit 命令除了学习之外,还有一些特殊的应用场合,比如被入侵后保存现 场等.但是,不要使用 docker commit 定制镜像,定制镜像应该 ...

  3. Docker用Dockerfile定制镜像

    用Dockerfile定制镜像 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那之前提示的无法重复的问题 ...

  4. docker 容器大小查看及清理docker磁盘空间

    本文为博主原创,转载请注明出处: 今天打开服务器下载文件时,发现服务器内存不足,并开始清理服务器内存,排查及清理方法如下: 1. 查看服务器内存大小: df -h            通过 df - ...

  5. Docker build Dockerfile 构建镜像 - 二

    Dockerfile 制作镜像 https://hub.docker.com/ 搜索需要镜像: https://hub.docker.com/_/centos/ 官方示例: centos:6 1.这里 ...

  6. docker(4)使用Dockerfile文件创建镜像-对docker(3)的改进

    在<docker(3)docker下的centos7下安装jdk>中,当进入容器后,执行 java命令 不能运行,需要执行source /etc/profile才能执行.如果采用Docke ...

  7. 使用dockerfile构建镜像(docker build)

    Docker buidl .  找出当前文件夹下的Docker build文件名的文件 Docker build -t  centos(镜像名) . 在当前目录下找centos的镜像文件 Docker ...

  8. Docker 0x05: Dockerfile制作镜像

    目录 Dockerfile制作镜像 一句话什么是dockerfile dockerfile脚本指令 小结 Dockerfile制作镜像 dockerfile 可以是制作自己镜像的脚本文件,按照这个脚本 ...

  9. 使用dockerfile文件创建镜像时docker build没有反应

    问题: 先 docker pull centos:7 拉取了一个官方的基础镜像,为后续创建jdk8镜像做准备,在创建如下的dockerfile文件 执行docker build -t jdk_8u19 ...

随机推荐

  1. 石火电光追风逐日|前端优化之次时代图片压缩格式WebP的项目级躬身实践(Python3 PIL+Nginx)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_190 我们知道,在前端界有一个共识:速度就是生命,带宽就是金钱.怎样将页面加载速度有效提升是无数前端工程师无时不刻在思考的课题,目 ...

  2. Mysql8基础知识

    系统表都变为InnoDb表 从MySQL 8.0开始,系统表全部换成事务型的InnoDB表,默认的MySQL实例将不包含任何MyISAM表,除非手动创建MyISAM表 基本操作 创建数据表的语句为CR ...

  3. 从零开始Blazor Server(9)--修改Layout

    目前我们的MainLayout还是默认的,这里我们需要修改为BootstrapBlazor的Layout,并且处理一下菜单. 修改MainLayout BootstrapBlazor已经自带了一个La ...

  4. Git学习与码云实战

    Git学习与码云实战 一.Git安装 概述: Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理,是目前使用范围最广的版本管理工具. 下载安装: 下载地址:http ...

  5. 美女 Committer 手把手教你部署 Apache DolphinScheduler 单机版

    还在为如何部署Apache DolphinScheduler 发愁么?自上篇<美女 Committer 手把手教你使用海豚调度>的视频发布后,受到社区伙伴们的热烈欢迎.但个别小伙伴在部署这 ...

  6. LuoguP5024 保卫王国(动态DP,LCT)

    最小权覆盖集 = 全集 - 最大权独立集 强制取点.不取点可以使用把权值改成正无穷或负无穷实现 接下来就是经典的"动态最大权独立集"了 O(nlogn). 这不是我说的,是immo ...

  7. 老梗新玩「GitHub 热点速览 v.22.34」

    作者:HelloGitHub-小鱼干 不知道你是否和我有一样的烦恼,最近的流行梗当自己要用拿来造词时,就陷入了不知道咋"换壳"的尴尬地步.sao-gen-gen 大大减少了你老梗新 ...

  8. 一个监控工具monit

    最近看了一个问题,monit监控在读取配置文件之后,访问的文件是残留在容器中的,导致认为服务异常,其实一开始容器启动,并没有对应的服务. [root@10-36-235-119.fin-wealth- ...

  9. kafka手动设置offset

    项目中经常有需求不是消费kafka队列全部的数据,取区间数据 查询kafka最大的offset: ./kafka-run-class.sh kafka.tools.GetOffsetShell --b ...

  10. [HDU6057] Kanade‘s convolution (FWT)

    题面 出自HDU6057 给你两个数列 A [ 0... 2 m − 1 ] A[0...2^m-1] A[0...2m−1] 和 B [ 0... 2 m − 1 ] B[0...2^m-1] B[ ...