在将Docker主目录移动后,容器中出现了“权限被拒绝”的错误。
在将Docker主目录移动后,容器中出现了“权限被拒绝”的错误。
最初,Docker文件系统位于/var/lib/docker目录下。一切都运行良好,但由于空间限制,我们不得不将其迁移到/Proj/docker目录下,并且Docker服务正在运行。\n然而,之后我遇到了权限被拒绝的问题。除非我将权限标志设置为true,否则无法运行命令。\n请帮助解决此问题。\n附加信息如下:\n[user@host ~]$ systemctl status docker\n● docker.service - Docker应用容器引擎\n Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)\n Drop-In: /etc/systemd/system/docker.service.d\n └─docker-sysconfig.conf, https-proxy.conf\n Active: active (running) since Thu 2019-03-28 09:36:59 UTC; 1 day 2h ago\n Docs: https://docs.docker.com\n Main PID: 27007 (dockerd)\n Tasks: 27\n Memory: 726.9M\n CGroup: /system.slice/docker.service\n └─27007 /usr/bin/dockerd --selinux-enabled -g /Proj/docker\n[user@host ~]$ cat /etc/systemd/system/docker.service.d/docker-sysconfig.conf\n[Service]\nExecStart=\nEnvironmentFile=-/etc/sysconfig/docker\nEnvironmentFile=-/etc/sysconfig/docker-storage\nEnvironmentFile=-/etc/sysconfig/docker-network\nExecStart=/usr/bin/dockerd \\\n $OPTIONS \\\n $DOCKER_STORAGE_OPTIONS \\\n $DOCKER_NETWORK_OPTIONS \\\n $INSECURE_REGISTRY \\\n -g /Proj/docker\n[user@host ~]$ cat /etc/systemd/system/docker.service.d/https-proxy.conf\n[Service]\nEnvironment=\"HTTPS_PROXY=http://proxyip:port\"\n[user@host~]# ls -lrth /Proj/docker\ntotal 56K\ndrwx------. 4 root root 4.0K Mar 22 07:42 plugins\ndrwx------. 3 root root 4.0K Mar 22 07:42 image\ndrwx------. 2 root root 4.0K Mar 22 07:42 volumes\ndrwx------. 2 root root 4.0K Mar 22 07:42 trust\ndrwxr-x---. 3 root root 4.0K Mar 22 07:42 network\ndrwx------. 2 root root 4.0K Mar 22 07:42 swarm\ndrwx------. 2 root root 4.0K Mar 22 07:42 builder\ndrwx------. 4 root root 4.0K Mar 22 07:42 buildkit\ndrwx------. 2 root root 4.0K Mar 28 09:36 runtimes\ndrwx------. 2 root root 4.0K Mar 28 13:02 tmp\ndrwx------. 33 root root 12K Mar 29 07:45 overlay2\ndrwx------. 6 root root 4.0K Mar 29 07:45 containers
权限拒绝是在将Docker主目录移动后容器中出现的问题。这通常是由于SELinux规则错误地创建了容器文件夹(在您的情况下将位于/Proj/docker/containers
)导致的。
根据这个回答中的建议,一个解决方法是运行以下命令进行绕过:
chcon -Rt svirt_sandbox_file_t /Proj/docker
在将docker的主目录移动后,容器中出现了"permission denied"的错误。这个问题的出现原因是因为docker的配置文件没有更新。
为了解决这个问题,我们需要进行以下步骤:
1. 停止dockerd服务。
2. 将/var/lib/docker目录下的所有文件移动到新的存储目录/Docker/Storage。
3. 修改/etc/docker/daemon.json文件,将"graph"字段的值修改为新的存储目录路径:
{
"graph":"/Docker/Storage"
}
4. 修改/usr/lib/systemd/system/docker.service文件,添加如下配置:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
BindsTo=containerd.service
After=network-online.target firewalld.service
Wants=network-online.target
Requires=docker.socket
[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H fd://
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
5. 运行systemctl daemon-reload命令,重新加载系统配置。
6. 最后运行systemctl start dockerd命令,启动dockerd服务。
希望这能够解决你的问题。
- 问题原因:在进行复制操作时,使用了"-p"选项来保留属性,这在我的情况下解决了问题。
- 解决方法:确保目标分区没有设置"nosuid"选项。检查/etc/fstab文件。否则,您将遇到其他权限问题。https://github.com/wodby/docker4drupal/issues/388
现在所有的权限问题都已经解决了。