Ива*_*рёв 10 bitnami rabbitmq docker
我启动了 Docker 容器:
VirtualBox:~$ sudo docker run --name rabbitmq -d -p 0.0.0.0:5672:5672 -p 0.0.0.0:15672:15672 bitnami/rabbitmq
Run Code Online (Sandbox Code Playgroud)
一切都很好,容器正在工作。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dd3d12133774 bitnami/rabbitmq:latest "/app-entrypoint.sh …" 37 minutes ago Up 37 minutes 0.0.0.0:4369->4369/tcp, 0.0.0.0:5672->5672/tcp, 0.0.0.0:15672->15672/tcp, 0.0.0.0:25672->25672/tcp sad_knuth
203500ee7f1e bitnami/rabbitmq "/app-entrypoint.sh …" 5 hours ago Up 5 hours 0.0.0.0:5672->5672/tcp, 4369/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp rabbitmq
Run Code Online (Sandbox Code Playgroud)
当我使用命令时:
docker stop 203500ee7f1e
Run Code Online (Sandbox Code Playgroud)
或者
docker stop rabbitmq
Run Code Online (Sandbox Code Playgroud)
没有任何反应(错误):
VirtualBox:~$ docker stop rabbitmq
Error response from daemon: cannot stop container: rabbitmq: Cannot kill container 203500ee7f1eb09bf0ecb2fdaf2041f4da27990a3654bca90b808a3ec36238cf: unknown error after kill: docker-runc did not terminate sucessfully: container_linux.go:393: signaling init process caused "permission denied"
: unknown
Run Code Online (Sandbox Code Playgroud)
输出 Docker 版本
VirtualBox:~$ docker version
Client:
Version: 18.06.0-ce
API version: 1.38
Go version: go1.10.3
Git commit: 0ffa825
Built: Wed Jul 18 19:09:54 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.0-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: 0ffa825
Built: Wed Jul 18 19:07:56 2018
OS/Arch: linux/amd64
Experimental: false
Run Code Online (Sandbox Code Playgroud)
输出 Docker 信息
VirtualBox:~$ docker info
Containers: 2
Running: 2
Paused: 0
Stopped: 0
Images: 2
Server Version: 18.06.0-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: d64c661f1d51c48782c9cec8fda7604785f93587
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 4.15.0-29-generic
Operating System: Ubuntu 18.04.1 LTS
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 3.852GiB
Name: ivanpuzyrev-VirtualBox
ID: 2LAE:PADC:VVDH:G2OW:MWUD:IRTS:CRNU:J727:DDEV:ZYBS:GTGG:SIOI
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
Run Code Online (Sandbox Code Playgroud)
请帮忙!!!没发生什么事。也许你有什么想法?
not*_*vvy 50
更新
请注意,在找出我的情况的根本原因后,我添加了另一个答案:并发docker安装 我建议您检查是否也适合您的情况,因为如果是这样,另一个答案提供了首选解决方案。
这个答案也对我使用 docker 有所帮助:
后
sudo aa-remove-unknown
Run Code Online (Sandbox Code Playgroud)
问题立即消失,并且docker stop
将按预期再次工作。请参阅:aa-remove-unknown - 删除未知的 AppArmor 配置文件
据我了解,问题原因是 docker 软件包没有在 AppArmor 服务中安装 docker 的配置文件,因此 docker 被 AppArmor 归类为“未知”。上述命令会删除所有未知应用程序的配置文件,因此它们不再受 AppArmor 的限制。
当然,正确的方法是保留未知应用程序的配置文件并为 docker 创建 AppArmor 配置文件。根据Docker 的 AppArmor 安全配置文件上的 docker 文档,“Docker 引擎守护程序的配置文件存在,但当前尚未安装”。
not*_*vvy 20
注意:在我最终发现我的情况的根本原因是什么之后,我决定在之前的答案之外添加这个答案。情况可能并不总是如此,所以我也保留旧答案。
\n该问题可能是由于同时通过apt和snap安装 docker 导致的。
\n就我而言,我通过 apt 安装了 docker,但意外地又通过 snap 进行了安装。发生这种情况是因为,在 Ubuntu 上,apt 被配置为在后台使用 snap,除非您禁用它(请参阅此答案和此问题以了解如何防止这种情况)。之后,如问题中所述,“权限被拒绝”问题开始出现。
\n为了检查是否是这种情况,请检查快照安装,如下例所示:
\n$ sudo snap list | grep docker\ndocker 20.10.17 2285 latest/stable canonical\xe2\x9c\x93 -\n
Run Code Online (Sandbox Code Playgroud)\n这里我们可以看到snap已经安装了docker 20.10.17。
\n现在检查 apt 安装情况,如下所示:
\n$ sudo apt list --installed | grep docker\n\nWARNING: apt does not have a stable CLI interface. Use with caution in scripts.\n\ndocker-ce-cli/focal,now 5:20.10.21~3-0~ubuntu-focal amd64 [installed]\ndocker-ce-rootless-extras/focal,now 5:20.10.21~3-0~ubuntu-focal amd64 [installed,automatic]\ndocker-ce/focal,now 5:20.10.21~3-0~ubuntu-focal amd64 [installed]\ndocker-scan-plugin/focal,now 0.21.0~ubuntu-focal amd64 [installed,automatic]\n
Run Code Online (Sandbox Code Playgroud)\n这里我们可以看到apt已经安装了docker 20.10.21。这是被执行的那个,但不知何故,快照安装干扰了它。
\n可以通过删除快照安装来解决该问题:
\n$ sudo snap remove docker\n
Run Code Online (Sandbox Code Playgroud)\n就我而言,该命令将挂起。去检查:
\n$ snap changes\nID Status Spawn Ready Summary\n6 Doing today at 15:19 CET - Remove "docker" snap\n
Run Code Online (Sandbox Code Playgroud)\n状态应为“完成”。如果它保持“正在执行”,您可以通过以下方式中止它
\n$ sudo snap abort 6\n
Run Code Online (Sandbox Code Playgroud)\n其中 6 是上一个命令输出的 ID 列中的数字。
\n然后,尝试强行删除它(应该总是有效):
\n$ sudo snap remove --purge docker\n
Run Code Online (Sandbox Code Playgroud)\n最后,我建议重新启动并再次检查,但在删除快照安装后,Docker 通常应该立即恢复按预期工作。
\n您可能更喜欢保留 snap 安装而不是 apt 安装,后者可能同样有效,但我还没有尝试过。
\n小智 9
尝试执行这两个命令:
$ sudo systemctl restart docker.socket docker.service
$ docker rm {container_id}
Run Code Online (Sandbox Code Playgroud)
我将不同意所有建议 sudo 的人。docker 命令向守护进程发送 api 调用,如果您需要 sudo 来运行该命令,您会从连接到 docker 套接字的失败中知道。守护进程本身应该以 root 身份运行。
在我看来,权限错误可能是由 AppArmor 策略引起的,也可能只是引擎/容器/运行中的错误。您还运行 Ubuntu 18.04,该版本 docker 最近才添加了支持,因此,如果可能,请尝试运行稍旧版本的 Ubuntu LTS,或者查看其中一个 Edge/nightly build 是否修复了该问题。在短期内,您可能有幸重新启动 docker 引擎 ( systemctl restart docker
) 和整个主机,以查看是否可以解决问题。
归档时间: |
|
查看次数: |
14136 次 |
最近记录: |