#windows #bash #docker #dockerfile
#Windows #bash #docker #dockerfile
Вопрос:
Я хотел бы создать образ docker на основе скрипта bash для подготовки моей системы.
Я пытаюсь создать свой образ, и docker сообщает мне «Успешно собран», но когда я пытаюсь запустить это, я вижу это сообщение: «Нет такого файла или каталога», и я не могу просмотреть контейнер в приложении Kitematic.
Если я запускаю проверку docker в своем контейнере (создан правильно, но не запущен) Я могу просмотреть код выхода 127.
Можете ли вы помочь мне разобраться в проблеме, а также помочь мне правильно запустить простой скрипт bash для предоставления image docker.
dockerfile :
FROM ubuntu:trusty
MAINTAINER barbie rambo <barbierambo@mymail.com>
RUN apt-get update
amp;amp; apt-get install -y openjdk-7-jdk wget openssh-server tar vim
COPY scripts/base.sh /home/docker/scripts/base.sh
RUN chmod 744 /home/docker/scripts/base.sh
ENTRYPOINT /home/docker/scripts/base.sh
мой base.sh сценарий
#!/usr/bin/env bash
# Set non-interactive mode
#export DEBIAN_FRONTEND=noninteractive
# Update the box
apt-get -y update
apt-get -y install linux-headers-$(uname -r) build-essential
apt-get -y install zlib1g-dev libssl-dev libreadline-gplv2-dev
apt-get -y install curl unzip
apt-get -y install software-properties-common
apt-get -y install gnupg2
# others tools
sudo apt-get -y install nano
sudo apt-get -y install vim
sudo apt-get -y install aptitude
sudo apt-get -y install git
sudo apt-get -y install openjdk-8-jre
sudo apt-get -y install whois
sudo apt-get -y install dos2unix
Комментарии:
1. Вы действительно хотите, чтобы это также было как
ENTRYPOINT
? Как запустить образ?2. Мне действительно не нужна ТОЧКА ВХОДА, я просто хочу предоставить свой образ с помощью скрипта. Я запускаю свой образ с помощью docker run.
3. Хммм, я запустил ваш код, и он сработал. Но я бы переключился
ENTRYPOINT
наRUN
то, чтобы действительно создать образ, а не запускать установку для каждогоdocker run
— вы также можете проверить, перезаписываете ли вы существующую точку входа. Пробелы, подобные ответу VladoDemcak, также могут быть проблемой.
Ответ №1:
проверьте, имеет ли /home/docker/scripts/base.sh
EOL формат UNIX / OSX, если нет, вы можете выполнить преобразование EOL в Notepad
-
откройте файл в
Notepad -> Edit -> EOL Conversion -> UNIX/OSX Format -> Save
-
затем перестройте образ docker
Если вы хотите попасть в контейнер ten, выполните следующее:
docker ps -a
и используйте идентификатор контейнера docker exec -i -t [containerID] bash
и проверьте /home/docker/scripts/base.sh
, существует ли файл
Комментарии:
1. Я подтверждаю, что сборка docker выполняется правильно, но я не понимаю, почему docker run запускает мой скрипт и завершает код 0 без контейнера запуска.
2. Это потому, что docker только что выполнил
base.sh
(Служба точки ВХОДА) с вашими установками и завершением. Больше ничего. Вам нужно запустить bash на «переднем плане» или что-то еще (только не в режиме деамона), чтобы сохранить контейнер docker в рабочем состоянии.3. @darkomen Проблема «Нет такого файла или каталога» была с EOL?