Docker Container не работает - PullRequest
0 голосов
/ 17 ноября 2018

Пожалуйста, помогите. Когда я хочу пойти в контейнер говорит:

Сообщение об ошибке от демона: контейнер 90599013c666d332ff6560ccde5053d9127e72042ecc3887550aef90fa1d1eac не работает

Мой DockerFile:

FROM ubuntu:16.04

MAINTAINER Anton Lapitski <a.lapitski@godeltech.com>

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app


ADD ./ /usr/src/app

EXPOSE 80

ENTRYPOINT ["/bin/sh", "-c", "/usr/src/app/entry.sh"]

Запуск скрипта - start.sh:

sudo docker build -t starter .
sudo docker run -t -v mounted-directory:/usr/src/app/mounted-directory -p 80:80 starter
Сценарий

entry.sh:

echo "Hello World"
ls -l
pwd
if mountpoint -q /mounted-directory 
then
  echo "mounted"
else
  echo "not mounted"
fi

sudo docker ps -a дает:

CONTAINER ID   IMAGE  COMMAND CREATED STATUS   PORTS   NAMES
90599013c666   starter "/bin/sh -c /usr/src…"   18 minutes ago      Exited (0) 18 minutes ago                       thirsty_wiles

И самое главное:

sudo docker exec -it 90599013c666 bash
Error response from daemon: Container 90599013c666d332ff6560ccde5053d9127e72042ecc3887550aef90fa1d1eac is not running

Пожалуйста, не могли бы вы сказать, что я делаю не так? P.S добавление флага -d при запуске не помогло.

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Как только ENTRYPOINT завершается (в любой форме), контейнер выходит.

После выхода из контейнера вы не можете docker exec войти в него.

Если вы хотите получить оболочку на изображении, которое вы только что построили, чтобы копаться в нем, вы можете

sudo docker run --rm -it --entrypoint /bin/sh starter

Чтобы сделать это немного проще, вы можете изменить ENTRYPOINT на CMD в вашем Dockerfile. (Docker запустит ENTRYPOINT, передав CMD в качестве аргументов командной строки; или, если нет точки входа, просто запустите CMD.)

...
RUN chmod +x ./app.sh
CMD ["./app.sh"]

Сделав это, вы можете легко переопределить команду

sudo docker run --rm -it starter /bin/sh
0 голосов
/ 17 ноября 2018

Вы не можете выполнить контейнер, потому что ваш сценарий ENTRYPOINT завершен, и контейнер остановлен. Попробуйте это:

  1. Удалите ENTRYPOINT из вашего Dockerfile
  2. Перестройте изображение
  3. запустить его с sudo docker run -it -v mounted-directory:/usr/src/app/mounted-directory -p 80:80 starter sh

Ключ - флаг i и sh в конце команды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...