commit bcb3364092fa340f7e6d65dbb7eaf1d17f6a9b98 Author: Vladimir Protsenko Date: Wed Aug 17 00:36:57 2022 +0400 IC diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..72e8ffc --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +* diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3295d4d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +FROM conda/miniconda3 + +ARG USER +ARG GROUP +ARG UID +ARG GID + +RUN groupadd --gid ${GID} ${GROUP} +RUN useradd --shell /bin/bash --uid ${UID} --gid ${GID} --create-home ${USER} +RUN mkdir /wd +RUN chown ${USER}:${GROUP} /wd + +RUN apt-get update && apt-get install -y build-essential + +USER ${USER} + +RUN conda init +RUN conda create -n jupyter-env python==3.9 jupyterlab -y +RUN echo "conda activate jupyter-env" >> /home/${USER}/.bashrc + +SHELL ["/bin/bash", "--login", "-i", "-c"] + +WORKDIR /wd +ENV SHELL=/bin/bash +CMD jupyter lab --ip 0.0.0.0 --no-browser diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..313a66f --- /dev/null +++ b/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +docker build . -t ${USER}_${IMAGE_NAME} \ + --build-arg USER=${USER} \ + --build-arg GROUP=${USER} \ + --build-arg UID=$(id -u ${USER}) \ + --build-arg GID=$(id -g ${USER}) diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..b7c035e --- /dev/null +++ b/readme.md @@ -0,0 +1,20 @@ +Как использовать: + +``` +./build.sh +./start_daemon.sh или ./start_interactively.sh +``` +----------------------------------- +Цель - получить контейнер с пользователем, идентичным пользователю в host системе, чтобы: +- новые файлы (логи/модели etm.) принадлежали пользователю, а не root, +- в диспетчере процессов (top/htop) процессы принадлежали пользователю. + +Если в контейнере нужно выполнить действие от root, можно: +- выполнить их в Dockerfile до `USER ${USER}`, +- подключиться к запущенному контейнеру `7sDe`, вызвав на хосте `docker exec -it -u root 7sDe /bin/bash`, +- сконфигурировать sudoers в Dockerfile, выполнить через sudo. +--------------------------------- +``` +-v /home/${USER}:/wd +``` +означает, что /wd в контейнере будет связана с домашней папкой пользователя в /home/ на хосте. diff --git a/start_daemon.sh b/start_daemon.sh new file mode 100644 index 0000000..c28fb77 --- /dev/null +++ b/start_daemon.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker run --name ${USER}_${IMAGE_NAME} -d --gpus all -p 8900:8888 -v /home/${USER}:/wd ${USER}_${IMAGE_NAME} diff --git a/start_interactively.sh b/start_interactively.sh new file mode 100644 index 0000000..0618671 --- /dev/null +++ b/start_interactively.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker run -it --rm --gpus all -p 8900:8888 -v /home/${USER}:/wd ${USER}_${IMAGE_NAME}