Docker教程之使用dockerfile生成镜像

2023-12-01 0 642
目录
  • 用dockerfile生成镜像并挂载数据卷
    • 编写dockerfile文件
  • 清理docker使用空间
    • 手动删除/var/lib/docker/volumes的问题解决
      • 错误信息
      • 尝试方法一(不建议使用):
      • 尝试方法二(推荐使用):

    用dockerfile生成镜像并挂载数据卷

    编写dockerfile文件

    创建dockerfile01 文件

    # 基础镜像
    FROM centos

    VOLUME [\”volume01\”, \”volume02\”]

    CMD echo \”—–end—-\”

    docker build 构建镜像

    docker build -f ./dockerfile01 -t xiao-centos .

    Docker教程之使用dockerfile生成镜像

    启动镜像

    docker run -it 镜像ID /bin/bash

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

    Docker教程之使用dockerfile生成镜像

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

    Docker教程之使用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
    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

    # 还是报错

    结论:

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

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

    停止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查看 成功运行

    结论

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

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

    docker volume ls
    DRIVER VOLUME NAME
    local a9b39215509378332ec9dfcdc3e10857b500694ea66efd9c2b7a6a9c55a2f10a
    local juming-nginx

    到此这篇关于Docker教程之使用dockerfile生成镜像的文章就介绍到这了,更多相关dockerfile生成镜像内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

    收藏 (0) 打赏

    感谢您的支持,我会继续努力的!

    打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
    点赞 (0)

    悠久资源 Linux服务器 Docker教程之使用dockerfile生成镜像 https://www.u-9.cn/server/linux/2271.html

    常见问题

    相关文章

    发表评论
    暂无评论
    官方客服团队

    为您解决烦忧 - 24小时在线 专业服务