docker工作空间迁移
Posted 张侦毅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker工作空间迁移相关的知识,希望对你有一定的参考价值。
文章目录
本文接上面的Gitlab服务器数据存储文件迁移此处是迁移我们的docker
工作空间。
前期准备
docker
的相关指令:
- 禁用:
systemctl disable docker
- 启用:
systemctl enable docker
- 重新加载:
systemctl daemon-reload
- 启动:
systemctl start docker
- 停止:
systemctl stop docker
- 查看
docker
的信息:docker info
- 查看
docker
的版本:docker version
- 查看
docker
的日志:docker logs [容器id]
文件压缩与解压缩:
- 压缩指令:
tar -cvf [文件名].tar [压缩目录]
- 解压缩指令:
tar -xvf [文件名].tar
docker
的配置文件位置:
- 配置文件位置1:
/usr/lib/systemd/system/docker.service
- 配置文件位置2:
/etc/docker/daemon.json
docker
默认工作空间:/var/lib/docker/
迁移docker
的工作空间
停掉docker
systemctl stop docker
创建新的docker
工作空间/home/docker/data/
切换到docker
的默认工作空间,备份docker
默认工作空间
tar -cvf docker.tar .
拷贝旧有docker
的工作空间到新的工作空间
cp -r /var/lib/docker/* /home/docker/data/
编辑docker
的配置文件,修改工作空间到指定位置。
由于docker
版本的不同,其配置文件的修改也会出现相应的差别,比如说在我的本地虚拟机中,我是通过修改/usr/lib/systemd/system/docker.service
的docker
配置文件来完成docker
工作空间的指令操作,其修改方式如下:
在docker
的19.03.8
版本中在ExecStart=/usr/bin/dockerd
行添加--graph=/home/docker/data/
配置信息。
但是在公司的服务器中,重复上面的操作则不奏效,此时我们的解决办法是修改/etc/docker/daemon.json
配置文件,通过添加"data-root":"/home/docker/data/"
配置信息来解决。
而在docker
的1.13.1
版本中,是通过添加"graph": "/apps/docker/data"
来解决。
如果我们不清楚docker
的版本,我们可以使用如下指令进行查看:
docker version
如果我们想查看docker
的工作空间是否生效,我们可以通过下述指令:
docker info
在完成上述操作后,通过使用如下指令使docker
配置生效:
systemctl daemon-reload
之后我们就通过下面的指令启动docker
:
systemctl start docker
有时,当通过上面的指令也无法让docker
配置生效时,我们可以使用下面的指令集:
systemctl disable docker
systemctl enable docker
systemctl daemon-reload
systemctl start docker
Permission denied异常
当我们迁移docker
的工作空间后,出现了mysql
应用启动不起来的情况,通过下面的指令查看docker
日志:
docker logs [容器id]
此时我们的异常信息中有如下内容:
/usr/local/mysql/bin/mysqld: Can't create/write to file '/tmp/ib0n3frL' (Errcode: 13 - Permission denied)
这属于Permission denied
异常,此时就说明启动的docker应用本身不具有访问某些文件的权限,在这里,是我们的MySQL
不具有访问/tmp
文件夹的权限。我们可以通过如下指令给该文件夹赋予相应的权限:
chmod 777 /tmp
而在我们服务器上,虽然也出现了上述的异常,但是解决方式通过上面的途径是无法解决的,此时我们通过删除本地的MySQL
镜像,重新拉取MySQL
镜像加以解决。
以上是关于docker工作空间迁移的主要内容,如果未能解决你的问题,请参考以下文章
Linux 迁移Docker目录/var/lib/docker