当我尝试使用docker build -t audio:1.0.1 .
构建Docker镜像时,它会构建一个图像(带有图像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"]
如何解决此问题以构建“正常”图像?
屏幕截图上有错误。 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"