web-dev-qa-db-fra.com

docker sur l'erreur ubuntu 16.04 lors de la destruction du conteneur

Je ne peux pas tuer ou arrêter n'importe quel conteneur de docker. J'ai autorisé des utilisateurs non privilégiés à exécuter des commandes Docker. Et docker run hello-world fonctionne bien. Mais je ne peux pas arrêter un autre conteneur.

J'ai suivi:

$ 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

La même erreur avec Sudo. En attendant, tous les conteneurs fonctionnent avec succès, mais pour les arrêter, il est uniquement possible de redémarrer complètement le système.

Exemple de composition Docker: # Utilisez les informations d'identification postgres/example utilisateur/mot de passe version: '3.1'

services:

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

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

Informations sur Docker:

$ 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

Pour moi, supprimer l'inconnu d'AppArmor fonctionne:

Sudo aa-remove-unknown
45

AppArmor (Application Armor) est un module de sécurité Linux qui protège un système d'exploitation et ses applications contre les menaces de sécurité. Pour l'utiliser, un administrateur système associe un profil de sécurité AppArmor à chaque programme. Docker s'attend à trouver une stratégie AppArmor chargée et appliquée. Vérifier les profils par défaut avec:

# Sudo apparmor_status

Pour utiliser le profil par défaut de docker sur un conteneur, exécutez:

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

Vous le désactivez en utilisant les commandes:

--security-opt apparmor=unconfined

Avec le docker, exécutez les commandes.

Pour désactiver le service apparmor, utilisez:

# systemctl stop apparmor && systemctl disable apparmor

Pour Ubuntu 14. Utilisez:

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

Il est recommandé de définir des profils de travail pour Docker apparmor plutôt que de le désactiver, en particulier pour les configurations de production.

Consultez ce document Google génial sur la sécurisation des conteneurs avec AppArmor.

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

15
Ben Njeri

Cette commande arrêtera tous les conteneurs de menu fixe.

Sudo killall docker-containerd-shim

Cette commande supprimera tous les conteneurs de menu fixe.

Sudo docker-compose down
13
Sidharth Srivastava