据我所知,当docker映像被拉出来时,它们被安装到/var/lib/docker中。是否有办法改变这个位置,比如到一个挂载的卷,比如/mnt?
当前回答
在CentOS 6.5
service docker stop
mkdir /data/docker (new directory)
vi /etc/sysconfig/docker
添加以下行
other_args=" -g /data/docker -p /var/run/docker.pid"
然后保存文件并再次启动docker
service docker start
并将存储库文件创建在/data/docker中
其他回答
正如@mbarthelemy所建议的,这可以在直接启动docker守护进程时通过-g选项来完成。
但如果docker作为系统服务启动,则不建议修改/etc/default/docker文件。这里有一个指南。
正确的方法是创建/etc/docker/daemon.json文件在Linux(或Mac)系统或%programdata%\docker\config\daemon。json。如果这个文件没有被用于其他用途,那么以下字段就足够了:
{
"graph": "/docker/daemon_files"
}
这是假设你想让docker持久化它的数据的新位置是/docker/daemon_files
对于Debian/Ubuntu或Fedora,您可能可以使用其他答案。但是,如果/etc/default/docker或/etc/sysconfig/docker下没有文件,并且您的系统正在运行systemd,您可能希望通过h3nrik来遵循这个答案。我使用Arch,这对我有用。
基本上,您需要配置systemd以读取新的docker映像位置作为环境变量,并将该环境变量传递到docker守护进程执行脚本。
为了完整起见,以下是h3nrick的答案:
你有/lib/systemd/system/docker。服务文件?
如果是,编辑它,以便Docker服务使用通常的/etc/default/ Docker作为环境文件:EnvironmentFile=-/etc/default/ Docker。
在/etc/default/docker文件中添加DOCKER_OPTS="-g /home/rseixas/Programs/Docker/images"。
最后执行systemctl daemon-reload && systemctl restart docker。
欲了解更多信息,请参阅文档。
因为我没有找到在Fedora中这样做的正确说明(编辑:人们在评论中指出,这也应该在CentOS和Suse上工作)(/etc/default/docker不被使用),我在这里添加我的答案:
您必须编辑/etc/sysconfig/docker,并在OPTIONS变量中添加-g选项。如果有多个选项,请确保将它们用“”括起来。在我的例子中,该文件包含:
OPTIONS=--selinux-enabled
所以它会变成
OPTIONS="--selinux-enabled -g /mnt"
重启后(systemctl restart docker), docker应该使用新的目录
更简单的方法:
停止docker服务
sudo systemctl stop docker
移动现有docker目录到新位置
sudo mv /var/lib/docker/ /path/to/new/docker/
创建符号链接
sudo ln -s /path/to/new/docker/ /var/lib/docker
启动docker服务
sudo systemctl start docker
在CentOS 6.5
service docker stop
mkdir /data/docker (new directory)
vi /etc/sysconfig/docker
添加以下行
other_args=" -g /data/docker -p /var/run/docker.pid"
然后保存文件并再次启动docker
service docker start
并将存储库文件创建在/data/docker中
推荐文章
- 如何从DockerFile运行docker实例?
- 我是否试图连接到启用TLS的没有TLS的守护进程?
- Docker -一种访问主机USB或串行设备的方法?
- Docker:无效引用格式
- 将AWS凭证传递给Docker容器的最佳方法是什么?
- 如何在docker-compose中设置主机名?
- 为什么Docker容器映像这么大?
- 如何在docker撰写版本3中指定内存和CPU限制
- Docker和安全密码
- 如何让Docker容器在系统引导时自动启动?
- 如何在Docker容器中用模式初始化MySQL数据库?
- PYTHONUNBUFFERED在docker文件中的用途是什么?
- 如何在Dockerfile CMD中使用变量?
- 将主机端口转发到docker容器
- “docker compose”与“docker-compose”的区别