запуск базового сценария bash при сборке docker из системы Windows

#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?