用 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
我是 甜点 cc
酷爱前端,也喜爱专研各种跟本职工作关系不大的技术,技术、产品趣味宽泛且浓重,期待着一个守业机会。本号次要致力于分享集体经验总结,心愿能够给一小部分人一些渺小帮忙。
心愿能和大家一起致力营造一个良好的学习气氛,为了集体和家庭、为了我国的互联网物联网技术、数字化转型、数字经济倒退做一点点奉献。数风流人物还看中国、看今朝、看你我。