验证:运行docker build时发现问题

时间:2019-04-30 20:00:38

标签: docker dockerfile docker-build

当我尝试使用docker build -t audio:1.0.1 .构建Docker映像时,它将生成一个自动运行并停止(但不会被删除)的映像(具有IMAGE ID,但不是我在构建期间想要的名称)。立即 enter image description here

构建过程完成后,输出以下最后几行:

enter image description here

当我执行docker images时,图像显示出来,没有TAG或没有在REPOSITORY中:

enter image description here

如何解决此问题以构建“正常”图像?

我的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"]

1 个答案:

答案 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"