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生成镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
- Dockerfile打包nginx镜像的实现步骤
- 使用Dockerfile.dockerignore提升Docker镜像构建速度
- docker通过Dockerfile修改镜像中tomcat的端口
- 查询Docker镜像DockerFile的方法步骤
- 编写Dockerfile和构建自定义镜像的步骤与技巧
- 利用Dockerfile制作个人的镜像文件详细讲解
- docker进阶教程之dockerfile优化镜像大小
- 使用Dockerfile脚本定制镜像的方法
- 从docker镜像里提取dockerfile的两种方法
- docker通过Dockerfile构建mysql镜像的方法
- dockerfile指令构建docker镜像的示例代码
- docker使用Dockerfile构建镜像的实现示例
相关文章
使用docker快速部署Elasticsearch集群的方法
这篇文章主要介绍了使用docker快速部署Elasticsearch集群的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-03-03使用非root用户安装及启动docker的问题(rootless模式运行)
docker是使用--userns-remap容器用户映射宿主机用户的方式来解决问题,用户和组的映射由两个配置文件来控制,分别是/etc/subuid和/etc/subgid,本文给大家介绍非root用户启动docker的问题,感兴趣的朋友一起看看吧2022-05-05
最新评论