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

问题描述 投票:0回答:1

当我尝试使用docker build -t audio:1.0.1 .构建Docker镜像时,它会构建一个图像(带有图像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"]
docker dockerfile docker-build
1个回答
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"
© www.soinside.com 2019 - 2024. All rights reserved.