Проблемы с разрешениями докера в Arch LinuxLinux

Ответить
Anonymous
 Проблемы с разрешениями докера в Arch Linux

Сообщение Anonymous »

ОС: Arch Linux — KDE Plasma (Wayland)
Я пытаюсь «докеризировать» свой веб-браузер (браузер Zen) , потому что я считаю очень полезным иметь отдельные экземпляры, чтобы лучше различать и приватизировать назначение одного экземпляра.

Я установил docker с помощью sudo pacman -S docker и активировал его системный сервис. Я также добавил себя в группу пользователей, чтобы не использовать sudo при каждой команде.

Я сделал все, чтобы мой графический процессор NVIDIA работал, поэтому «--gpus all» работает правильно, а среда выполнения по умолчанию для Docker — «nvidia».

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

Я создал файл под названием ' Dockerfile' в "/home/Containers/Browsers/TLXS/Zen Browser/" с инструкциями по созданию образа.

Код: Выделить всё

FROM archlinux:latest

# Install dependencies
RUN pacman -Syu --noconfirm && \
pacman -S --noconfirm \
libx11 libxrender libxtst gtk3 tar alsa-lib alsa-utils pipewire pipewire-alsa

# Set working directory to the mounted host directory
WORKDIR "/home/Containers/Browsers/TLXS/Zen Browser"

# Run the browser binary when the container starts
CMD ["./zen/zen-bin"]
Я могу успешно создать образ, выполнив docker buildx build -t tlxs_zen-browser ., но затем если я попытаюсь запустить контейнер с помощью команда

Код: Выделить всё

docker run -it --gpus all --name tlxs_zen-browser -v "/home/Containers/Browsers/TLXS/Zen Browser:/home/Containers/Browsers/TLXS/Zen Browser:rw" -e NVIDIA_DRIVER_CAPABILITIES=all -e DISPLAY=$DISPLAY -e XDG_RUNTIME_DIR=/tmp -v /tmp/.X11-unix:/tmp/.X11-unix -v /run/user/1000/pipewire-0:/tmp/pipewire-0 tlxs_zen-browser
Я получил эту ошибку:

Код: Выделить всё

docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: exec: "./zen/zen-bin": stat ./zen/zen-bin: no such file or directory: unknown.
[/b]
На самом деле там есть файл '/zen/zen-bin', и это для меня странно, потому что я' Я уже делал это раньше, и это сработало! Это результат команды ls -l, по сути тот же результат, который я получаю, если запускаю ее в папке первого экземпляра, с теми же разрешениями применено к перечисленным файлам:

Код: Выделить всё

total 4
-rw-r--r-- 1   371  Dockerfile
drwxr-xr-x 1   912  zen
Я не знаю, делал ли я что-то с разрешениями раньше, чтобы это работало, я, честно говоря, не помню, но для меня это странно, потому что я думаю, что я все сделал необходимые шаги, такие же, как и раньше!

Почему там говорится, что файла «/zen/zen-bin» нет, если инструкции Dockerfile идентичны инструкциям в другой папке? Также файл '/zen/zen-bin' находится в той же позиции!


TL;DR

Идея:

Моя идея — воспроизвести что-то вроде Sandboxie- Ящики Plus (Sandboxie-Plus — это приложение среды песочницы для Windows, где вы получаете для каждого созданного вами ящика выделенная и изолированная папка, к которой вы можете получить доступ и просматривать ее файлы).

Я создал папку «Контейнеры» в моем каталоге «/home/», затем я создал в ней папку под названием «Браузер» — это будет «коробка», посвященная основному браузеру. экземпляр и папка «Браузеры», в которой я создам все различные «ящики» для других экземпляров браузера.

Поэтому в "/home/Containers/" есть поля "Браузер" и "TLXS", "BFTW", "GDSV" и т. д. (случайные имена из 4 символов). ) в *"/home/Containers/Browsers/".

/home/Containers/

--- Браузер

------ Браузер Zen

---Браузеры

------TLXS

---------Браузер Zen

------BFTW

---------Дзен-браузер

------GDSV

---------Дзен Браузер

Мне бы хотелось, чтобы все файлы приложения, которое я закрепляю, были доступны и полностью доступны прямо здесь, в этих папках моей файловой системы, но сейчас я не смог этого сделать. Они каким-то образом скрыты, когда я просматриваю файловую систему с помощью файлового менеджера.


Что я сделал и над чем работал:
  • установить мою позицию в Терминале на "/home/Containers/Browser/Zen Browser"

    создал файл Dockerfile в "/home/Containers/Browser/Zen Browser";

Код: Выделить всё

FROM archlinux:latest

# Install dependencies
RUN pacman -Syu --noconfirm && \
pacman -S --noconfirm \
libx11 libxrender libxtst gtk3 tar alsa-lib alsa-utils pipewire pipewire-alsa

# Set working directory to the mounted host directory
WORKDIR "/home/Containers/Browser/Zen Browser"

# Run the browser binary when the container starts
CMD ["./zen/zen-bin"]
  • с помощью диспетчера файлов переместил архив Tarball «zen.linux-x86_64.tar.bz2» в "/home/Containers/ Browser/Zen Browser" и разархивировал его, получив его содержимое, папку под названием "zen" со всеми файлами, необходимыми для запуска веб-браузера;
  • построил изображение «browser_zen-browser», выполнив

    Код: Выделить всё

    docker buildx build -t browser_zen-browser .
  • предоставлено докеру разрешение на доступ к серверу отображения X11 с помощью команды

    Код: Выделить всё

    xhost +local:docker
  • запустите контейнер (и назовите его) с помощью команды

    Код: Выделить всё

    docker run -it --gpus all --name browser_zen-browser -v "/home/Containers/Browser/Zen Browser:/home/Containers/Browser/Zen Browser:rw" -e NVIDIA_DRIVER_CAPABILITIES=all -e DISPLAY=$DISPLAY -e XDG_RUNTIME_DIR=/tmp -v /tmp/.X11-unix:/tmp/.X11-unix -v /run/user/1000/pipewire-0:/tmp/pipewire-0 browser_zen-browser
Выполнив все эти действия, контейнер запустился успешно и веб-браузер запустился корректно . Если я его закрою, то смогу перезапустить командой

Код: Выделить всё

docker start browser_zen-browser
.

Вот в чем проблема!

Теперь мне нужно проделать те же шаги и создать другие «ящики» в »/home/Containers/Browsers/».

Я попробовал начать с одного, например, «TLXS», но после создания Dockerfile, извлечения содержимого Tarball и создания образа я не могу его запустить.

Я нахожусь по адресу "/home/Containers/Browsers/TLXS/Zen Browser", там есть два элемента: файл "Dockerfile" и папка " дзен'. Это вывод команды ls -l:

Код: Выделить всё

total 4
-rw-r--r-- 1   371  Dockerfile
drwxr-xr-x 1   912  zen
и по сути тот же результат, что и при запуске команды ls -l в браузере "/home/Containers/Browser/Zen" папку с теми же разрешениями, которые применяются к перечисленным файлам.

Тем не менее, если я запустил команду

Код: Выделить всё

docker run -it --gpus all --name tlxs_zen-browser -v "/home/Containers/Browsers/TLXS/Zen Browser:/home/Containers/Browsers/TLXS/Zen Browser:rw" -e NVIDIA_DRIVER_CAPABILITIES=all -e DISPLAY=$DISPLAY -e XDG_RUNTIME_DIR=/tmp -v /tmp/.X11-unix:/tmp/.X11-unix -v /run/user/1000/pipewire-0:/tmp/pipewire-0 tlxs_zen-browser
выдает такую ​​ошибку:

Код: Выделить всё

docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: exec: "./zen/zen-bin": stat ./zen/zen-bin: no such file or directory: unknown.
А вот файл 'zen-bin', расположенный в папке 'zen', наверняка там есть!

Поэтому я думаю, что это проблема с докером, который по какой-то странной причине не может увидеть файл.


Подробнее здесь: https://stackoverflow.com/questions/793 ... arch-linux
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»