Почему файл, установленный на контейнере с помощью docker, недоступен? - PullRequest
0 голосов
/ 04 марта 2020

В моем docker -компонентном файле я пытаюсь смонтировать файл с хоста в контейнер docker.

docker -компонентный файл У меня есть что-то вроде этого:

version "2"

services:
    myservice:
        image:  images/previmage:1.0.0
        volumes:
            - /opt/files/aaa.conf:/aaa.conf

После запуска службы я смотрю содержимое root контейнера, используя docker с хоста:

sudo docker container exec myservice_1 ls /

Результат этой команды ls для Запись aaa.conf показывает, что она выглядит так, как будто она есть, но разрешения не соответствуют ожиданиям:

drwxr-xr-x.  2 root   root     6 Apr 11 2018 opt
-??????????  ? ?      ?        ?           ? aaa.conf
ls:  cannot access /aaa.conf:  Permission denied

Аналогично, если я пытаюсь использовать другие команды, такие как cat aaa.conf, я получаю Отказ в разрешении.

Я понимаю, что разрешения для файла должны быть установлены на стороне хоста. На хосте я сделал разрешения 755, а затем 777, но я все еще получаю Отказано в доступе.

Это ожидаемое поведение?


Редактировать [работает на AWS / EC2]

sudo docker container exec myservice_1 cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

sudo docker container exec myservice_1 id -u
33016

1 Ответ

1 голос
/ 04 марта 2020

У меня была такая же проблема, это для SE Linux ( Проверить это сообщение )

Отключить SE Linux для указанного c контейнера

Вы можете отключить SE Linux для указанного контейнера c, добавив --security-opt label:disable к вашей команде docker run:

docker container run --security-opt label:disable myservice_1

Добавление правила SE Linux (рекомендуется)

Согласно этой записи , Вы также можете использовать эту команду, чтобы разрешить доступ к файлам

chcon -Rt svirt_sandbox_file_t /path/to/volume

Полностью отключить SE Linux!

Не рекомендуется, но также работает:

su -c "setenforce 0"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...