Issue:无法停止docker容器,每当我try 停止容器时,我会收到以下错误消息,

ERROR: for yattyadocker_web_1  cannot stop container: 1f04148910c5bac38983e6beb3f6da4c8be3f46ceeccdc8d7de0da9d2d76edd8: Cannot kill container 1f04148910c5bac38983e6beb3f6da4c8be3f46ceeccdc8d7de0da9d2d76edd8: rpc error: code = PermissionDenied desc = permission denied

OS Version/build: Ubuntu 16.04 | Docker版本17.09.0-ce,构建afdb6d4 | Docker Compose版本1.17.1,构建6d101fb

Steps to reproduce:

  • 使用Dockerfile和docker compose创建了一个rails项目.yml.docker compose .yml是版本3.
  • 使用docker build -t <project name> .docker-compose up --build成功构建图像
  • 容器启动并成功运行.
  • 试着在docker compose关闭的情况下停止docker compose.

What I tried::

  • 我必须运行sudo service docker restart次,然后才能移除容器.
  • 卸载docker,删除docker目录,然后重新安装所有内容.仍然面临同样的问题.

Note:这个配置在之前工作正常,但不知怎么的,文件权限可能已经更改,我看到了这个错误.我必须运行sudo service docker restart次,然后才能移除容器.但这非常不方便,我不知道如何解决这个问题.

Reference Files:

# docker-compose.yml
version: '3'
volumes:
  db-data:
    driver: local
  redis-data:
    driver: local  
services:
  db:
    image: postgres:9.4.1
    volumes:
      - db-data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    env_file: local_envs.env
  web:
    image: yattya_docker:latest
    command: bundle exec puma -C config/puma.rb
    tty: true
    stdin_open: true
    ports:
      - "3000:3000"
    links:
      - db
      - redis
      - memcached
    depends_on:
      - db
      - redis
      - memcached
    env_file: local_envs.env
  redis:
    image: redis:3.2.4-alpine
    ports:
      # We'll bind our host's port 6379 to redis's port 6379, so we can use
      # Redis Desktop Manager (or other tools) with it:
      - 6379:6379
    volumes:
      # We'll mount the 'redis-data' volume into the location redis stores it's data:
      - redis-data:/var/lib/redis
    command: redis-server --appendonly yes
  memcached:
    image: memcached:1.5-alpine
    ports:
      - "11211:11211"
  clock:
    image: yattya_docker:latest
    command: bundle exec clockwork lib/clock.rb
    links:
      - db
    depends_on:
      - db
    env_file: local_envs.env
  worker:
    image: yattya_docker:latest
    command: bundle exec rake jobs:work
    links: 
      - db
    depends_on: 
      - db
    env_file: local_envs.env

和Dockerfile:

# Dockerfile
FROM ruby:2.4.1

RUN apt-get update && apt-get install -y nodejs --no-install-recommends && rm -rf /var/lib/apt/lists/*

ENV APP_HOME /app
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME

ADD Gemfile* $APP_HOME/
RUN bundle install

ADD . $APP_HOME

RUN mkdir -p ${APP_HOME}/log
RUN cat /dev/null > "$APP_HOME/log/development.log"

RUN mkdir -p ${APP_HOME}/tmp/cache \
    && mkdir -p ${APP_HOME}/tmp/pids \
    && mkdir -p ${APP_HOME}/tmp/sockets

EXPOSE 3000

推荐答案

我解决了这个问题.由于未知问题,ubuntu中的Apparmor服务无法正常工作.这个问题与moby project https://github.com/moby/moby/issues/20554中报告的问题类似.

/etc/apparmor.d/tunables文件夹是空的,https://github.com/mlaventure建议给purge/reinstall apparmor to get it to the initial state.

所以我重新安装了apparmor,问题解决了.

希望这有帮助.

Ruby-on-rails相关问答推荐

使用Hotwire/Turbo的Rails在链接悬停时获取请求

Rails:比枚举更惯用的排序/可比较列表方法?

一对多关联 counter_cache 在 Rails 中无法正确重新加载

NoMethodError:Puma::Events:Class 的未定义方法字符串

Rails:序列化数据库中的对象?

为特定操作使用布局

设计:手动加密密码并直接存储

如何为 Rails SimpleForm Select 框设置默认 Select 值

如何找出现有 Rails 应用程序基于哪个 Rails 版本?

Rails 5:无法从参数中检索哈希值

Rails HABTM - 正确删除关联

Rails:如何修复‘生产’环境缺少 secret_key_base

Post.all.map(&:id) 是什么意思?

Sidekiq 在 docker-compose 上的 127.0.0.1:6379 (Errno::ECONNREFUSED) 上连接到 Redis 时出错

如何在 Rails 迁移中判断数据库类型?

错误:无法在 Mavericks 上构建 gem 原生扩展

Rails 路由:GET 没有参数 :id

如何在 Rails 3 中订购包含的元素

如何获取 Rails 3.1 中assets资源 的绝对 URL?

.erb 、 .rhtml 和 .html.erb 有什么区别?