Том, созданный в Dockerfile, не монтируется в контейнер - PullRequest
0 голосов
/ 21 января 2019

Я хочу заблокировать Firefox в контейнере Docker. Для этого я создал следующий dockerfile файл:

FROM debian:sid

RUN apt-get update && apt-get install -y \
    firefox \
&& rm -rf /var/lib/apt/lists/*

RUN useradd \
      --create-home \
      --home-dir /home/morfitest/ \
      --shell /bin/bash \
      --uid 1000 \
      --user-group \
      morfitest

USER morfitest

ENV HOME /home/morfitest

RUN mkdir /home/morfitest/.mozilla
VOLUME ["/home/morfitest/.mozilla"]

WORKDIR /home/morfitest/

CMD /usr/bin/firefox

У меня также есть файл docker-compose.yml, который выглядит следующим образом:

version: '3.6'

services:
   browser:
     build:
       context: .
       dockerfile: dockerfile
     image: firefox:morfitest
     container_name: firefox
     hostname: firefox
     domainname: local
     restart: "no"
     volumes:
#       - user_profile:/home/morfitest/.mozilla/
       - /tmp/.X11-unix:/tmp/.X11-unix
     environment:
       - DISPLAY=$DISPLAY
     logging:
       driver: syslog
       options:
         syslog-address: "tcp://192.168.43.247:514"
         tag: "firefox-morfitest"
     networks:
       default:
         ipv4_address: 10.10.2.10

#volumes:
#    user_profile:

networks:
  default:
    name: firefox
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 10.10.2.0/24

Я читал, что когда вы хотите запустить контейнер как пользователь без полномочий root, вы не можете использовать volumes: в файле docker-compose.yml, потому что он не может правильно обрабатывать разрешения dir, когда он монтирует громкость, используя bind. Таким образом, объем должен быть указан в файле dockerfile, используя:

USER morfitest
RUN mkdir /home/morfitest/.mozilla
VOLUME ["/home/morfitest/.mozilla"]

Контейнер собирается и работает нормально, но я не могу понять, почему том не может быть подключен при загрузке / запуске контейнера.

Когда я осматриваю контейнер, я вижу следующее:

$ docker container inspect firefox | grep vol
                "Type": "volume",
                "Source": "/media/Zami/docker/volumes/f2a4ee3dd34e2711b262f104e6b1aea6c07d107c38ec837c2baf11a39227c754/_data",


# ls -al /media/Zami/docker/volumes/f2a4ee3dd34e2711b262f104e6b1aea6c07d107c38ec837c2baf11a39227c754/_data
total 20
drwxr-xr-x 5 morfik morfik 4096 2019-01-21 09:30:57 ./
drwxr-xr-x 3 root   root   4096 2019-01-21 09:30:55 ../
drwx------ 2 morfik morfik 4096 2019-01-21 09:30:57 extensions/
drwx------ 5 morfik morfik 4096 2019-01-21 09:30:57 firefox/
drwx------ 2 morfik morfik 4096 2019-01-21 09:30:57 systemextensionsdev/

Таким образом, том существует и имеет некоторый контент, но он не работает. Когда я использовал следующее CMD в файле dockerfile:

CMD  ls -al /home/morfitest/ &&  ls -al /home/morfitest/.mozilla

чтобы увидеть, действительно ли содержимое тома видно при загрузке / запуске контейнера, я мог видеть только это:

firefox-morfitest[61138]: total 24
firefox-morfitest[61138]: drwxr-xr-x 1 morfitest morfitest 4096 Jan 21 08:05 .
firefox-morfitest[61138]: drwxr-xr-x 1 root      root      4096 Jan 21 08:05 ..
firefox-morfitest[61138]: -rw-r--r-- 1 morfitest morfitest  220 Jun 17  2018 .bash_logout
firefox-morfitest[61138]: -rw-r--r-- 1 morfitest morfitest 3526 Jun 17  2018 .bashrc
firefox-morfitest[61138]: drwxr-xr-x 2 morfitest morfitest 4096 Jan 21 08:05 .mozilla
firefox-morfitest[61138]: -rw-r--r-- 1 morfitest morfitest  807 Jun 17  2018 .profile

firefox-morfitest[61138]: total 8
firefox-morfitest[61138]: drwxr-xr-x 2 morfitest morfitest 4096 Jan 21 08:05 .
firefox-morfitest[61138]: drwxr-xr-x 1 morfitest morfitest 4096 Jan 21 08:05 ..

Каталог .mozilla имеет необходимые разрешения, но он пуст. Так как смонтировать том?

1 Ответ

0 голосов
/ 22 января 2019

В основном файлы конфигурации в порядке, проблема была в закомментированных строках. На самом деле хеши должны быть удалены, и установка работает нормально.

Но когда я пытался сделать это в начале, громкость игнорировалась - некоторые части следующего предупреждения не отображались из-за некоторой визуальной ошибки:

WARNING: Service "browser" is using volume "/home/morfitest/.mozilla" from the
previous container. Host mapping "docker-firefox_user_profile" has no effect.
Remove the existing containers (with docker-compose rm browser)

Я удалил контейнер так, как он хотел, и теперь он создает том с постоянным именем: docker-firefox_user_profile вместо хэша. Теперь, когда я делаю down / up, он использует объем вместо создания нового. И это решает мою проблему.

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