Я хочу заблокировать 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
имеет необходимые разрешения, но он пуст. Так как смонтировать том?