在将Docker主目录移动后,容器中出现了“权限被拒绝”的错误。

15 浏览
0 Comments

在将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

0
0 Comments

权限拒绝是在将Docker主目录移动后容器中出现的问题。这通常是由于SELinux规则错误地创建了容器文件夹(在您的情况下将位于/Proj/docker/containers)导致的。

根据这个回答中的建议,一个解决方法是运行以下命令进行绕过:

chcon -Rt svirt_sandbox_file_t /Proj/docker

0
0 Comments

在将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服务。

希望这能够解决你的问题。

0
0 Comments
  1. 问题原因:在进行复制操作时,使用了"-p"选项来保留属性,这在我的情况下解决了问题。
  2. 解决方法:确保目标分区没有设置"nosuid"选项。检查/etc/fstab文件。否则,您将遇到其他权限问题。https://github.com/wodby/docker4drupal/issues/388

现在所有的权限问题都已经解决了。

0