Docker教程之使用dockerfile生成镜像

 更新时间:2022年11月21日 08:27:15   作者:甜点cc  
这篇文章主要介绍了Docker教程之使用dockerfile生成镜像的相关资料,需要的朋友可以参考下

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

编写dockerfile文件

创建dockerfile01 文件

# 基础镜像
FROM centos

VOLUME ["volume01", "volume02"]

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

docker build 构建镜像

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

启动镜像

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
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生成镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 教你如何在windows 10家庭版上安装docker

    教你如何在windows 10家庭版上安装docker

    这篇文章主要介绍了如何在windows 10家庭版上安装docker的步骤,本文分为五步通过图文给大家介绍的非常详细,需要的朋友可以参考下
    2021-12-12
  • docker搭建CMS点播系统带播放器功能

    docker搭建CMS点播系统带播放器功能

    熟悉docker的童鞋都知道,安装是非常的便利的,也可以在线体验的,今天通过本文给大家介绍docker搭建CMS点播系统带播放器功能,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • Docker拉取ubuntu镜像并建立环境的详细过程

    Docker拉取ubuntu镜像并建立环境的详细过程

    在Docker实战中Ubuntu是一个常见的基础镜像,用于构建其他应用服务的容器,这篇文章主要给大家介绍了关于Docker拉取ubuntu镜像并建立环境的详细过程,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • 使用docker快速部署Elasticsearch集群的方法

    使用docker快速部署Elasticsearch集群的方法

    这篇文章主要介绍了使用docker快速部署Elasticsearch集群的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • 使用非root用户安装及启动docker的问题(rootless模式运行)

    使用非root用户安装及启动docker的问题(rootless模式运行)

    docker是使用--userns-remap容器用户映射宿主机用户的方式来解决问题,用户和组的映射由两个配置文件来控制,分别是/etc/subuid和/etc/subgid,本文给大家介绍非root用户启动docker的问题,感兴趣的朋友一起看看吧
    2022-05-05
  • 使用Dockerfile构建docker镜像

    使用Dockerfile构建docker镜像

    这篇文章主要介绍了使用Dockerfile构建docker镜像的方法,帮助大家更好的理解和学习使用docker,感兴趣的朋友可以了解下
    2021-04-04
  • Docker系列compose ymal文件解析学习

    Docker系列compose ymal文件解析学习

    这篇文章主要介绍了Docker系列之compose ymal文件解析学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Docker 1分钟搭建DNS服务器的方法

    Docker 1分钟搭建DNS服务器的方法

    本篇文章介绍了Docker 1分钟搭建DNS服务器的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • docker启动mysql5.7服务详细说明

    docker启动mysql5.7服务详细说明

    这篇文章主要给大家介绍了关于docker启动mysql5.7服务的相关资料,文中通过代码示例介绍的非常详细,对大家的学习或者工作具有一定的参考价值,需要的朋友可以参考下
    2023-09-09
  • Docker安装Nginx教程实现图例讲解

    Docker安装Nginx教程实现图例讲解

    这篇文章主要介绍了Docker安装Nginx教程图例讲解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09

最新评论