Meine Komponente, die einen Docker-Container ausführt, konnte nicht auf AWS IoT Greengrass Core Version 2 bereitgestellt werden, und ich möchte den Fehler beheben.
Kurzbeschreibung
Wenn eine AWS IoT Greengrass-Komponente, die einen Docker-Container ausführt, nicht bereitgestellt werden kann, wird der Fehler in der Regel durch ein Berechtigungsproblem verursacht.
Im Folgenden finden Sie ein Beispiel für eine Fehlermeldung für einen Fehler bei der Komponentenbereitstellung:
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}
Behebung
Um eine AWS IoT Greengrass-Komponente, die einen Docker-Container ausführt, erfolgreich bereitzustellen, ändern Sie eine der folgenden Berechtigungen:
- (Beste Praxis) Konfigurieren Sie den Docker-Container so, dass er für Benutzer ohne Root- oder Administratorrechte ausgeführt wird.
- Gewähren Sie dem Benutzer, der die Komponente bereitstellt, Root- oder Administratorberechtigungen.
Wenn ein Benutzer den Fehler „verweigerter Zugriff“ erhält, muss ein Administratorbenutzer den Benutzer zur Docker-Gruppe hinzufügen. Als Mitglied der Docker-Gruppe kann der Benutzer Befehle ohne Administratorrechte ausführen.
Gehen Sie wie folgt vor, um Benutzerberechtigungen hinzuzufügen:
-
Führen Sie den folgenden Befehl aus, um ggc_user zur Docker-Gruppe hinzuzufügen:
sudo usermod -aG docker ggc_user
**Hinweis:**Ersetzen Sie in Ihrem Befehl ggc_user durch Ihren Nicht-Root-Benutzer.
-
Führen Sie den folgenden Befehl aus, um AWS IoT Greengrass neu zu starten und die Aktualisierungen der Benutzerberechtigungen anzuwenden:
systemctl restart greengrass
-
Stellen Sie die Komponente erneut bereit, und stellen Sie dann sicher, dass der Benutzer Befehle ausführen kann.
Verwandte Informationen
Führen Sie einen Docker-Container aus