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
Pour moi, supprimer l'inconnu d'AppArmor fonctionne:
Sudo aa-remove-unknown
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
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