Проверка: обнаружены проблемы при запуске сборки Docker - PullRequest
0 голосов
/ 30 апреля 2019

Когда я пытаюсь создать образ Docker, используя docker build -t audio:1.0.1 ., он создает образ (с ИД ИЗОБРАЖЕНИЯ, но не с именем, которое я предполагал во время сборки), который автоматически запускается и останавливается (но не удаляется) немедленно enter image description here

после завершения процесса сборки со следующими последними строками:

enter image description here

Изображение появляется без метки или в хранилище, когда я выполняю docker images:

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 Ответ

1 голос
/ 30 апреля 2019

Как решить эту проблему, чтобы создать "нормальное" изображение?

У вас есть ошибка прямо на скриншоте.useradd не удалось создать группу, поскольку она уже существует, поэтому сборка докера была прервана.Обратите внимание, что группа 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"
...