У меня есть изображение докеры OpenSuse 42.3, которое я настроил для запуска кода. У изображения есть один пользователь (кроме root), называемый "myuser" , который я создаю во время начального создания изображения через Dockerfile. У меня есть три файла script, которые генерируют контейнер из образа на основе того, в какой операционной системе включен пользователь.
Вопрос. Может ли имя пользователя "myuser" в контейнере быть установлено на имя пользователя пользователя, который выполняет создание контейнера script?
Моя цель - позволить пользователю входить в контейнер интерактивно и иметь возможность запускать код из контейнера. Код - это всего лишь один бинарный файл, который выполняется и имеет несколько IO, поэтому я хочу, чтобы каталог пользователя был доступен из контейнера, чтобы они могли перемещаться по папке на своей машине и запускать код для генерации вывода в своей файловой системе.
Ниже я до сих пор строил. Я попытался установить переменную среды USER во время вызова linux script на docker run
, но это не изменило пользователя из "myuser" , чтобы сказать "bob" (имя пользователя на главной машине, которая запустила контейнер). Похоже, что установка каталогов работает нормально. Я не уверен, что даже можно достичь моей цели.
Контейнер Linux script:
username="$USER"
userID="$(id -u)"
groupID="$(id -g)"
home="${1:-$HOME}"
imageName="myImage:ImageTag"
containerName="version1Image"
docker run -it -d --name ${containerName} -u $userID:$groupID \
-e USER=${username} --workdir="/home/myuser" \
--volume="${home}:/home/myuser" ${imageName} /bin/bash \
Контейнер Mac script:
username="$USER"
userID="$(id -u)"
groupID="$(id -g)"
home="${1:-$HOME}"
imageName="myImage:ImageTag"
containerName="version1Image"
docker run -it -d --name ${containerName} \
--workdir="/home/myuser" \
--v="${home}:/home/myuser" ${imageName} /bin/bash \
Контейнер Windows script:
ECHO OFF
SET imageName="myImage:ImageTag"
SET containerName="version1Image"
docker run -it -d --name %containerName% --workdir="/home/myuser" -v="%USERPROFILE%:/home/myuser" %imageName% /bin/bash
echo "Container %containerName% was created."
echo "Run the ./startWindowsLociStream script to launch container"