如何在Docker组成中设置UID和GID



我可以执行docker run命令。

docker run --rm  --user $(id -u):$(id -g) -e MYDATA=/some/path/to/data -e USER=$USER -p 8883-8887:8883-8887 ...

但是,在码头组合中,当我写下以下内容...

version: '3.7'
services:
  container_name: some-server
  image: some:img
  user: $(id -u):$(id -g) 
  ... 

...它不起作用。

我知道我要docker-compose up执行子壳命令替换,并且不能。

有什么方法可以做到吗?

尝试此

所以,您需要放置:

user: "${UID}:${GID}"

在您的Docker中,并提供UID和GID作为Docker-Compose参数

UID=${UID} GID=${GID} docker-compose up

(或将UID和GID定义为环境变量(。

这可以做到这一点

在您的docker-composer.yml

user: $DOCKER_USER

在命令行

echo 'export DOCKER_USER="$(id -u):$(id -g)"' >> ~/.bash_profile
source ~/.bash_profile
docker-compose up

创建了一个docker_user变量,并将其添加到bash_profile中以持续。源将帮助外壳识别.bash_profile按需

的更改

在docker build上添加以下命令行参数图像:

docker build --build-arg UID="$(id -u)" --build-arg GID="$(id -g)" --build-arg UNAME="$(whoami)" . -t tagname -f docker.recipe

在Docker食谱开始时附加以下行:

FROM ubuntu:18.04 AS yoursystem
ARG UID
ARG GID
ARG UNAME
RUN groupadd -g ${GID} -o ${UNAME}
RUN useradd -m -u ${UID} -g ${GID} -o -s /bin/bash ${UNAME}

最新更新