Docker容器无法停止或移除-权限被拒绝错误 [英] Docker Containers can not be stopped or removed - permission denied Error
问题描述
问题:无法停止docker容器,每当我尝试停止容器时,我都会收到以下错误消息,
Issue: Can not stop docker containers, whenever I try to stop containers I get the following Error message,
ERROR: for yattyadocker_web_1 cannot stop container: 1f04148910c5bac38983e6beb3f6da4c8be3f46ceeccdc8d7de0da9d2d76edd8: Cannot kill container 1f04148910c5bac38983e6beb3f6da4c8be3f46ceeccdc8d7de0da9d2d76edd8: rpc error: code = PermissionDenied desc = permission denied
操作系统版本/内部版本: Ubuntu 16.04 | Docker版本17.09.0-ce,构建afdb6d4 | Docker Compose版本1.17.1,内部版本6d101fb
OS Version/build: Ubuntu 16.04 | Docker Version 17.09.0-ce, build afdb6d4 | Docker Compose version 1.17.1, build 6d101fb
重现步骤:
- 使用Dockerfile和docker-compose.yml创建了Rails项目。 docker-compose.yml是版本3。
- 使用
docker build -t< project name>成功构建了图像。 。
或docker-compose up --build
- 容器启动并成功运行。
- 尝试停止docker-compose下的docker构图。
- Created a rails project with Dockerfile and docker-compose.yml. docker-compose.yml is of version 3.
- Image is built successfully with either
docker build -t <project name> .
ordocker-compose up --build
- Containers boots up and runs successfully.
- Try to stop docker compose with docker-compose down.
我尝试过的事情::
- 我必须运行
sudo服务docker restart
可以删除容器。 - 卸载的docker,删除的docker目录,然后重新安装所有内容。仍然面临同样的问题。
- I have to run
sudo service docker restart
and then the containers can be removed. - Uninstalled docker, removed docker directory and then re installed everything. Still facing same issue.
注意:此配置之前运行正常,但文件权限可能有所更改,我看到了这个错误。我必须运行 sudo服务docker restart
,然后才能删除容器。但这非常不方便,我不知道如何解决此问题。
Note: This configuration was working correctly earlier, but somehow file permissions might have changed and I am seeing this error. I have to run sudo service docker restart
and then the containers can be removed. But this is highly inconvenient and I don't know how to troubleshoot this.
参考文件:
# 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:
And 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项目 https://github.com/moby/moby/ Issues / 20554 。
I was able to fix the issue. Apparmor service in ubuntu was not working normally due to some unknown issue. The problem was similar to the issue reported in moby project https://github.com/moby/moby/issues/20554.
/etc/apparmor.d/tunables
文件夹为空,并且 https://github.com/mlaventure 建议清除/重新安装apparmor,使其恢复到初始状态。
The /etc/apparmor.d/tunables
folder was empty, and https://github.com/mlaventure suggested to purge/reinstall apparmor to get it to the initial state.
所以我重新安装了apparmor,并且重启后问题已解决。
So I reinstalled apparmor, and after restarting the problem was solved.
希望这会有所帮助
这篇关于Docker容器无法停止或移除-权限被拒绝错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!