【发布时间】:2021-04-19 16:12:47
【问题描述】:
我正在尝试在基于 Ubuntu 20.04 的 Docker 容器中运行 Docker 构建。在 Docker 构建发生之前,容器需要作为构建过程的非 root 用户运行。
这是我的 Dockerfile 的一些 sn-ps 以显示我在做什么:
FROM amd64/ubuntu:20.04
# Install required packages
RUN apt-get update && apt-get install -y software-properties-common
build-essential \
libssl-dev \
openssl \
libsqlite3-dev \
libtool \
wget \
autoconf \
automake \
git \
make \
pkg-config \
cmake \
doxygen \
graphviz \
docker.io
# Add user for CI purposes
RUN useradd -ms /bin/bash ciuser
RUN passwd -d ciuser
# Set docker group membership
RUN usermod -aG docker ciuser
# Run bash as the non-root user
CMD ["su", "-", "ciuser", "/bin/bash"]
当我启动容器并尝试运行 docker 命令时,出现错误:
$ docker run -ti --privileged=true -v /var/run/docker.sock:/var/run/docker.sock ci_container_staging
ciuser@0bb768506106:~$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json: dial unix /var/run/docker.sock: connect: permission denied
如果我以ciuser 删除运行,它可以正常工作:
$ docker run -ti --privileged=true -v /var/run/docker.sock:/var/run/docker.sock /ci_container_staging
root@d71654581cec:/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d71654581cec ci_container_staging "/bin/bash" 3 seconds ago Up 2 seconds vigilant_lalande
root@d71654581cec:/#
通过 Dockerfile 设置 Docker 然后将用户设置为运行方式,我哪里出错了?
【问题讨论】: