Почему в образе, который создаю, не создается пользователь?
Вот мой Dockerfile:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y git
RUN useradd -ms /bin/bash chc || echo "User creation failed"
USER chc
WORKDIR /home/chc
Вот результат сборки:
Step 3/5 : RUN useradd -ms /bin/bash chc || echo "User creation failed"
---> Running in 6def765288f6
Removing intermediate container 6def765288f6
---> b760fa411e30
Step 4/5 : USER chc
---> Running in 09a2068f18d7
Removing intermediate container 09a2068f18d7
---> f9b5cdae2f64
Step 5/5 : WORKDIR /home/chc
---> Running in f0889357344c
Removing intermediate container f0889357344c
---> 1eeab3145258
Successfully built 1eeab3145258
Вот результат команды: docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 1eeab3145258 9 minutes ago 201MB
<none> <none> f9b5cdae2f64 9 minutes ago 201MB
<none> <none> b760fa411e30 9 minutes ago 201MB
<none> <none> 353d3971a178 9 minutes ago 200MB
ubuntu latest e34e831650c1 7 days ago 77.9MB
Вот запуск образа ubuntu: docker run -it ubuntu:
root@c1dc8a7ccd60:/#
А вот попытка переключить юзера:
root@c1dc8a7ccd60:/# su - chc
su: user chc does not exist or the user entry does not contain all the required fields
Я кое-что узнал, если запустить это: Successfully built 1eeab3145258 то есть:
docker run -i -t 1eeab3145258
То, получаю своего нового юзера:
chc@6a2cc5c466b1:~$
И это "1eeab3145258" есть в списке образов:
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> "1eeab3145258" 9 minutes ago 201MB
<none> <none> f9b5cdae2f64 9 minutes ago 201MB
<none> <none> b760fa411e30 9 minutes ago 201MB
<none> <none> 353d3971a178 9 minutes ago 200MB
ubuntu latest e34e831650c1 7 days ago 77.9MB
Не могу понять в чем же дело! Я же собираю образ на основе образа ubuntu! А если запустить этот образ, то нет git'a, нет юзера, и пакеты не обновляются... Где я ошибаюсь, пожалуйста, подскажите, я уже 3 часа ломаю мозги...
Ответы (1 шт):
Вы взяли образ ubuntu и добавили в него git и своего пользователя. Сам образ ubuntu не изменился, все ваши добавления отправились в образ с хеш кодом 1eeab3145258.
Вы можете присвоить удобное имя через опцию -t NAME команды docker build. Например
docker build -t chc-ubuntu .
В результате у вас появится образ с именем chc-ubuntu. Его можно запустить по имени
docker run --rm -it chc-ubuntu
Проверьте сами - в этом запущенном контейнере есть и git, и ваш пользователь.
PS. Ключ --rm удаляет контейнер после того, как он отработает. Это часто делается для контейнеров, запущенных через -it, чтобы сбросить состояние и при следующем запуске снова был чистый контейнер без предистории.