執行 Docker 容器的元件無法在 AWS IoT Greengrass Core Version 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 容器