修改dcoker镜像和容器存储的位置

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 修改dcoker镜像和容器存储的位置在阿里云上使用 docker 非常方便,但是使用久了镜像、容器越来越多,越来越大,小的可怜的系统盘吃不消了,就会遇到一个问题,如何修改docker的镜像容器的存储空间的修改,这里网上查了一些资料,做了一些总结(这里...

修改dcoker镜像和容器存储的位置

在阿里云上使用 docker 非常方便,但是使用久了镜像、容器越来越多,越来越大,小的可怜的系统盘吃不消了,就会遇到一个问题,如何修改docker的镜像容器的存储空间的修改,这里网上查了一些资料,做了一些总结(这里强调一下,做这样的操作,老镜像做迁移,有概率出现失败的可能性,[捂脸]我就失败了):

在修改存储位置之前,首先需要知道一下几点

  • Docker 使用的默认存储位置
  • Docker 当前使用的存储驱动程序
  • 存储容器和图像的新存储空间

第一个方式

docker info

记录下来,docker 默认存储位置 和 存储驱动程序

Storage Driver: overlay
。。。。
Docker Root Dir: /var/lib/docker

存储驱动可以参考http://blog.csdn.net/styshoo/article/details/62206762

第一步,将docker停止

systemctl stop docker

第二步,创建Drop-In文件
创建一个"docker.conf",路径是/etc/systemd/system/docker.service.d
创建文件夹:

mkdir /etc/systemd/system/docker.service.d

创建文件:

touch /etc/systemd/system/docker.service.d/docker.conf

创建Drop-In文件的原因是我们希望Docker服务覆盖docker.conf文件中提到的特定参数,并使用位于/lib/systemd/system/docker.service的默认服务文件的参数。如果您想深入了解Drop-In,请阅读system.unit文档

第三步打开 docker.conf 并添加一下内容

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph="/data/docker/new_volume" --storage-driver=overlay

新的环境 执行

systemctl daemon-reload
systemctl start docker

再运行 docker info 命令检查是否修改成功

如果有已经存在的镜像和容器,该怎么办呢?
执需要做老的镜像、容器迁移。

cp -i -rp /var/lib/docker /data/docker/new_volume

做软链接之前,做一下备份

mv /var/lib/docker /var/lib/docker-backup-2017-1213
ln -s /data/docker/new_volume/docker /var/lib/docker

简单解释:
1、软链接就是:“ln –s 源文件 目标文件”,只会在选定的位置上生成一个文件的镜像,不会占用磁盘空间,类似与windows的快捷方式。
2、硬链接ln源文件目标文件,没有参数-s, 会在选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

systemctl daemon-reload
systemctl start docker
第二种方式:

修改 docker daemon 的启动参数 -g, --graph=""

Path to use as the root of the Docker runtime. Default is /var/lib/docker.

如 docker -d --graph=/opt/docker

注: 这种方式只会临时修改,如果重启 docker daemon,就又会回到默认值。。。

我们可以通过修改 docker daemon的配置文件的方式来保存我们修改,方法如下:

默认情况下,docker daemon 会有一个默认的configuration 文件,此外,我们可以新建一个名为“daemon.json”文件的文件,我们在这个文件中的定义,会覆盖默认配置文件的内容文件。

cd etc/docker
vim daemon.json

在这个文件里面加入我们的内容,即修改docker daemon 的 Rootpath

{
    "graph": "/data/docker"
}

重新 load 配置

systemctl daemon-reload

重新启动 docker daemon

systemctl restart docker.service

此时,我们再来看 docker 的信息,docker root dir 已经更改:

docker info

参考资料
Change default image and Container location in Docker [CentOS 7]
https://sanenthusiast.com/change-default-image-container-location-docker/#more-636(原文地址)
https://www.cnblogs.com/atuotuo/p/7217331.html

目录
相关文章
|
1月前
|
存储 数据库 Docker
正确删除容器和镜像的方式
【10月更文挑战第24天】本文介绍了在Docker中如何正确删除容器和镜像,包括停止容器、删除已停止容器、删除未被使用的镜像以及注意事项,如数据备份、依赖关系检查和权限问题。其他容器管理工具的操作类似,但命令和语法可能不同。
122 3
|
15天前
|
Kubernetes 监控 Java
如何在Kubernetes中配置镜像和容器的定期垃圾回收
如何在Kubernetes中配置镜像和容器的定期垃圾回收
|
3月前
|
存储 安全 Ubuntu
Docker 镜像与 Docker 容器的区别
【8月更文挑战第27天】
328 5
|
3月前
|
运维 Ubuntu Shell
掌握Docker容器的创建:从镜像到实例
【8月更文挑战第27天】
673 4
|
3月前
|
存储 Ubuntu 应用服务中间件
在Docker中,怎么快速查看本地的镜像和容器?
在Docker中,怎么快速查看本地的镜像和容器?
|
3月前
|
缓存 开发者 Docker
Dockerfile是Docker容器化过程中的核心组件,它允许开发者以一种可重复、可移植的方式自动化地构建Docker镜像
【8月更文挑战第19天】Dockerfile是构建Docker镜像的脚本文件,含一系列指令定义镜像构建步骤。每条大写指令后跟至少一个参数,按序执行,每执行一条指令即生成新的镜像层。常用指令包括:FROM指定基础镜像;RUN执行构建命令;EXPOSE开放端口;CMD指定容器启动行为等。优化策略涉及减少镜像层数、选择轻量基础镜像、利用缓存及清理冗余文件。示例:基于Python应用的Dockerfile包括设置工作目录、复制文件、安装依赖等步骤。掌握Dockerfile有助于高效自动化构建镜像,加速应用部署。
34 1
|
3月前
|
运维 Ubuntu Shell
Docker命令宝典:解锁容器化技术的无限可能,从镜像管理到容器操作,全面解析与实战指南!
【8月更文挑战第3天】Docker简化了应用的部署与运行,掌握其基本命令对开发者和运维人员至关重要。通过`docker images`可查看本地镜像;使用`docker pull`拉取如最新版Ubuntu镜像;`docker rmi`用于删除不再需要的镜像。运行容器可通过`docker run`命令,结合`-it`等选项提供交互式环境。`docker ps`显示运行中的容器,加上`-a`则列出所有容器。`docker stop`和`docker start`分别用于停止和重启容器,而`docker rm`则删除容器。
84 5
|
13天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
55 2
|
3天前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
23 5
|
6天前
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
下一篇
无影云桌面