当我尝试使用docker build -t audio:1.0.1 .
构建Docker映像时,它将生成一个自动运行并停止(但不会被删除)的映像(具有IMAGE ID,但不是我在构建期间想要的名称)。立即
构建过程完成后,输出以下最后几行:
当我执行docker images
时,图像显示出来,没有TAG或没有在REPOSITORY中:
如何解决此问题以构建“正常”图像?
我的Docker版本是18.09.1,我正在macOS Mojave版本10.14.1上使用它
以下是我的Dockerfile的内容:
FROM ubuntu:latest
# Run a system update to get it up to speed
# Then install python3 and pip3 as well as redis-server
RUN apt-get update && apt-get install -y python3 python3-pip \
&& pip3 install --trusted-host pypi.python.org jupyter \
&& jupyter nbextension enable --sys-prefix widgetsnbextension
# Create a new system user
RUN useradd -ms /bin/bash audio
# Change to this new user
USER audio
# Set the container working directory to the user home folder
# WORKDIR /home/jupyter
WORKDIR /home/audio
EXPOSE 8890
# Start the jupyter notebook
ENTRYPOINT ["jupyter", "notebook", "--ip=0.0.0.0", "--port=8890"]
答案 0 :(得分:1)
如何解决此问题以构建“正常”图像?
您在屏幕截图上就出现了错误。 useradd
无法创建组,因为该组已经存在,因此Docker构建被中止。请注意,audio
组是系统组,因此您可能不想使用它。
因此,要么使用其他名称创建用户,要么将-g audio
传递给useradd命令,以使用现有组。
如果需要使用户创建成为条件,则可以使用getent
命令检查用户/组的存在,例如:
# create the user if doesn't exists
RUN [ ! $(getent passwd audio) ] && echo "useradd -ms /bin/bash audio"
# create the user and use the existing group if it exists
RUN [ ! $(getent group audio) ] && echo "useradd -ms /bin/bash audio -g audio"