Linux下修改docker默认存储路径的三种方式

简介: 本文提供三种方式修改docker存储路径:1.修改docker配置文件;2.创建daemon.json文件;3.创建软链接;

前言

docker安装完成后,默认存储路径为/var/lib/docker。创建容器后,每个容器的数据卷容量上限与/var/lib/docker所在的挂载的磁盘大小有关。例如下图所示:挂载的磁盘大小为50GB,则docker容器数据卷上限就是50GB,如果有多个容器,则这些容器共享50GB的容量,而且同时也与挂载磁盘下的其他目录共享使用。那么如果运行的容器数量较多,或是遇到需要存储大量数据如gitlab这类容器,50G显然就有些捉襟见肘。此时可以通过修改docker存储路径的方式扩容容器的容量上限。特别提一句,docker存储路径最好尽早修改,这样可以避免后期因磁盘写满导致的各种容器运行异常问题。

本文提供三种方式修改docker存储路径,分别为:

方式一:修改docker配置文件

编辑docker配置文件

vi /usr/lib/systemd/system/docker.service

使用"--graph"或"-g"参数指定存储位置,例如

ExecStart=/usr/bin/dockerd --graph /home/docker_home

修改完成后重新加载配置文件并重启docker服务

# reload配置文件 systemctl daemon-reload 
# 重启dockersystemctl restart docker.service

方式二:创建daemon.json文件

docker1.12或以上版本,可以创建或修改daemon.json文件来指定存储位置。docker查看版本命令“docker version”

vi /etc/docker/daemon.json

在最后添加graph字段,定义docker目录

{
"registry-mirrors":[
"http://registry.docker-cn.com",
"http://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com",
"http://cr.console.aliyun.com/",
"https://8wb4g36l.mirror.aliyuncs.com"],
"graph": "/home/docker_home"}

修改完成后同样需要重新加载配置文件、重启docker服务

systemctl daemon-reload
systemctl restart docker.service

方式三:创建软链接(推荐)

前两种方式适用于首次安装docker后没有pull过镜像、创建过容器。即使修改了存储路径,因为没有镜像和容器,所以也不会产生任何影响。

创建软链接的方式,适用于已经创建过容器、并且容器已经产生数据的情况。这种方式可以避免对镜像及现有容器数据造成破坏,以及更改存储路径后找不到数据的情况。具体步骤如下:

① 查看docker路径

默认情况下Docker的存放位置为:/var/lib/docker,也可以通过如下命令查看docker存储路径

docker info | grep"Docker Root Dir"

② 停掉docker服务

systemctl stop docker

③ 移动docker目录

mv /var/lib/docker /home/docker_home

③ 创建软链接

  • /home/docker_home为源文件目录,也就是新设置的docker存储目录
  • /var/lib/docker为软链接目标目录,与此目录建立链接后,相当于原来的docker配置保持不变,但真正的存储目录是其背后所指向的/home/docker_home
ln-s /home/docker_home /var/lib/docker

④ 启动docker服务

systemctl start docker

修改完成后,我们可以通过以下命令查看docker的存储目录:

docker info | grep"Root Dir"# 修改成功会返回以下内容:# Docker Root Dir: /home/docker_home

查看/var/lib/目录,docker目录是一个软链接,指向/home/docker_home,配置正确。

相关文章
|
1天前
|
Ubuntu Linux Shell
(已解决)Linux环境—bash: wget: command not found; Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
(已成功解决)Linux环境报错—bash: wget: command not found;常见Linux发行版本,Linux中yum、rpm、apt-get、wget的区别;Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
|
2月前
|
Linux Docker 容器
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
本篇博客重在讲解Centos安装docker,经博主多次在不同服务器上测试,极其的稳定,尤其是阿里的服务器,一路复制命令畅通无阻。
1913 4
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
|
1月前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
70 2
|
1月前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
44 3
|
2月前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
395 3
|
2月前
|
存储 数据管理 Linux
docker中使用主机路径作为数据卷
【10月更文挑战第13天】
19 2
|
2月前
|
存储 Linux Docker
使用Docker存储驱动
【10月更文挑战第9天】
32 3
|
2月前
|
存储 Kubernetes Docker
|
3月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
3月前
|
Linux Docker 容器
linux之docker命令
linux之docker命令
下一篇
DataWorks