【发布时间】:2018-11-15 22:16:18
【问题描述】:
我有一个创建了用户的 dockerfile,因此它没有以 root 身份运行(最佳实践)
FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM microsoft/dotnet:aspnetcore-runtime
RUN groupadd -g 1001 appuser && useradd -r -u 1001 -g appuser appuser
USER appuser
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "ConsoleApp32.dll"]
我构建镜像并运行容器:
docker build -f Dockerfile1 -t myappimage .
docker run -d --name myapp myappimage
然后检查它是否运行:
ps aux | grep dotnet
21569 1001 0:00 dotnet ConsoleApp32.dll
所以以 uid 1001 运行。 然后我检查这个用户的主机:
cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
man
postmaster
cron
ftp
sshd
at
squid
xfs
games
postgres
cyrus
vpopmail
ntp
smmsp
guest
nobody
dockremap
没有应用用户的迹象。我的理解(可能是错误的)是我们正在使用共享内核,并且用户应该在列表中。 我也查了uid
getent passwd 1001
没有返回任何结果。 有人可以解释一下吗,因为我不明白进程如何在主机上以 1001 的 uid 运行并且没有关联的用户
【问题讨论】:
标签: docker containers