web-dev-qa-db-de.com

Docker auf Ubuntu 16.04 Fehler beim Töten Container

Ich kann keine Docker-Container töten oder stoppen. Ich habe nicht privilegierten Benutzern erlaubt, Docker-Befehle auszuführen. Und docker run hello-world funktioniert gut. Aber ich kann keinen anderen Container aufhalten.

Ich habe folgendes bekommen:

$ docker stop 59e3b815d1dc
Error response from daemon: cannot stop container: 59e3b815d1dc: 
Cannot kill container 59e3b815d1dcf2d8c8bcd3dd641c3c033b83ac68ea2f0257a32a76468af7374c: 
unknown error after kill: docker-runc did not terminate sucessfully: 
container_linux.go:393: signaling init process caused "permission denied"
: unknown

Der gleiche Fehler bei Sudo. In der Zwischenzeit laufen alle Container erfolgreich, aber um sie zu stoppen, ist nur ein vollständiger Neustart des Systems möglich.

Docker-Erstellungsbeispiel: # Verwenden Sie die Anmeldeinformationen für postgres/Beispielbenutzer/-kennwort: '3.1'

services:

  db:
    image: postgres
    restart: always
    environment:
      POSTGRES_PASSWORD: example

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

Docker-Info:

$ docker info
Containers: 7
 Running: 2
 Paused: 0
 Stopped: 5
Images: 10
Server Version: 17.12.1-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge Host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 9b55aab90508bd389d7654c4baf173a981477d55
runc version: 9f9c96235cc97674e935002fc3d78361b696a69e
init version: 949e6fa
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.4.0-116-generic
Operating System: Ubuntu 16.04.4 LTS
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 11.61GiB
Name: peter-pen
ID: P6FS:C76H:WIAO:LCWC:TCHT:JEYB:6W3M:HXYD:S4E2:KTUZ:2T3Q:3GPI
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

WARNING: No swap limit support
24
Petr

Für mich funktioniert das Entfernen des Unbekannten aus AppArmor:

Sudo aa-remove-unknown

AppArmor (Application Armor) ist ein Linux-Sicherheitsmodul, das ein Betriebssystem und seine Anwendungen vor Sicherheitsbedrohungen schützt. Zur Verwendung ordnet ein Systemadministrator jedem Programm ein AppArmor-Sicherheitsprofil zu. Docker erwartet, dass eine AppArmor-Richtlinie geladen und durchgesetzt wird. Überprüfen Sie die Standardprofile mit:

# Sudo apparmor_status

Führen Sie Folgendes aus, um das Docker-Standardprofil für einen Container zu verwenden:

$ docker run --rm -it --name test-container --security-opt apparmor=docker-default image-name

Sie deaktivieren es mit den Befehlen:

--security-opt apparmor=unconfined

Mit den Docker-Run-Befehlen.

Verwenden Sie zum Deaktivieren des Apparmor-Dienstes Folgendes:

# systemctl stop apparmor && systemctl disable apparmor

Für Ubuntu 14. Verwenden Sie:

# service apparmor stop
# update-rc.d -f apparmor remove

Es wird empfohlen, Arbeitsprofile für Docker Apparmor festzulegen, anstatt es zu deaktivieren, insbesondere für Produktions-Setups.

Sehen Sie sich dieses großartige Google-Dokument zum Sichern von Containern mit AppArmor an.

https://cloud.google.com/container-optimized-os/docs/how-to/secure-apparmor

15
Ben Njeri

Dieser Befehl stoppt alle Docker-Container.

Sudo killall docker-containerd-shim

Dieser Befehl entfernt alle Docker-Container.

Sudo docker-compose down
13