运行 Docker 容器的组件无法在 AWS IoT Greengrass Core 版本 2 上部署,我想解决这一错误。
简短描述
当运行 Docker 容器的 AWS IoT Greengrass 组件无法部署时,错误通常由权限问题引起。
以下是组件部署失败的错误消息示例:
com.example.RaspberryDockerComponent: stderr. permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/load?quiet=1": dial unix /var/run/docker.sock: connect: permission denied. {scriptName=services.com.example.RaspberryDockerComponent.lifecycle.Install.Script, serviceName=com.example.RaspberryDockerComponent, currentState=NEW}
解决方法
要成功部署运行 Docker 容器的 AWS IoT Greengrass 组件,请更改以下权限之一:
- **(最佳实践)**配置 Docker 容器,供非根用户或非管理员用户运行。
- 向部署组件的用户授予根权限或管理员权限。
当用户出现权限被拒绝错误时,管理员用户须将该用户添加到 Docker 群组。作为 Docker 群组的成员,该用户无需管理员权限即可运行命令。
要添加用户权限,请完成以下步骤:
-
要添加 ggc_user 到 Docker 群组,请运行以下命令:
sudo usermod -aG docker ggc_user
**注意:**在命令中,将 ggc_user 替换为非根用户。
-
要重新启动 AWS IoT Greengrass 以应用用户权限更新,请运行以下命令:
systemctl restart greengrass
-
重新部署组件,然后验证用户是否可以运行命令。
相关信息
运行 Docker 容器