当前位置: 首页 > 面试题库 >

ubuntu 16.04上的docker杀死容器时出错

龙新荣
2023-03-14
问题内容

我无法杀死或停止任何泊坞窗容器。我已允许非特权用户运行Docker命令。并且docker run hello- world工作正常。但是我无法停止其他任何容器。

我得到了:

$ 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

与sudo相同的错误。同时,所有容器都可以成功运行,但是要停止它们,只能完全重新引导系统。

Docker撰写示例:#使用postgres / example用户/密码凭证版本:“ 3.1”

services:

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

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

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

问题答案:

AppArmor(应用程序装甲)是Linux安全模块,可保护操作系统及其应用程序免受安全威胁。要使用它,系统管理员会将AppArmor安全配置文件与每个程序相关联。Docker希望找到一个已加载并强制执行的AppArmor策略。使用以下方法检查默认配置文件:

# sudo apparmor_status

要在容器上使用docker默认配置文件,请运行:

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

您可以使用以下命令禁用它:

--security-opt apparmor=unconfined

使用docker run命令。

要禁用apparmor服务,请使用:

# systemctl stop apparmor && systemctl disable apparmor

对于Ubuntu 14.使用:

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

建议为Docker apparmor设置工作配置文件,而不是禁用它,特别是对于生产设置。

在AppArmor上确保容器安全,请参阅此Google文档。

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



 类似资料:
  • 问题内容: 我的目标是编写一个运行python脚本的docker映像,该脚本会生成很多充满随机数的csv文件,完成后将这些文件写入外部存储驱动器,然后退出容器。假设它写入了很多这样的csv文件,以致它们无法存储到内存中。 我担心的是容器遇到错误并退出(或由用户退出),然后创建了一堆必须手动清除的垃圾文件的情况。 第一个解决方案是将快速驱动器(如SSD)直接安装到容器中并对其进行写入。完成后,它将数

  • 问题内容: 我有一个来自docker网站官方指南的简单示例。 我运行以下命令: 然后从创建的容器中获取一些输出: 然后,我查找容器的运行过程: 接下来,我尝试杀死容器的第一个过程: 但是,在我做完之后,没有任何改变。进程仍然有效,并且每秒输出“ hello”。我怎么了 问题答案: 重现您的情况时,我会看到和之间的PID不同。当您执行命令时,将在容器内执行=>应使用容器的pid。否则,在这种情况下,

  • 我采取的mysql备份从一个Linux环境使用下面的命令,docker exec CONTAINER /usr/bin/mysqldump-u root--word=root DATABASE 然后我尝试使用下面的命令将上面的sql转储还原到另一个Linux环境,cat备份.sql |Docker exec -i CONTAINER /usr/bin/mysql -u root --passwor

  • 问题内容: 不管我做什么,如果没有立即使用其他PID弹出另一个实例,我似乎都无法杀死Redis -我检查以确保自己正在杀死父进程,并且确实如此。有什么建议么??我已经尝试过重启机器。 问题答案: 弄清楚了!原来当我尝试了这样的SO帖子提供的第二个答案的时候,我做了然后跑了,当我实际上应该跑的时候。我不知道为什么这很重要。

  • 问题内容: 我正在尝试在Hadoop上执行map reduce程序。 当我将工作提交到hadoop单节点集群时。正在创建作业,但消息失败 “被ApplicationMaster杀死的容器” 使用的输入大小为10 MB。 当我使用输入文件400 KB的相同脚本时,它成功了。但是输入大小为10 MB的输入文件失败。 在我的终端中显示的完整日志如下。 我的映射器在这里触发另一个程序,该程序将在这里处理我

  • 问题内容: 首先是第一件事。我的系统信息和版本: 容器中的进程变成僵尸之后,我无法停止容器。升级到docker 0.9.0后,我在服务器上看到大量僵尸。例: 我可以看到 没有在节点进程25332上调用wait()来保持僵尸存活。所以我检查了strace在做什么,它似乎卡在了。stract实际上一开始就卡住了,只是显示了这一点: 但是在我运行sudo docker kill 3da5764b7bc9