2016-10-07 5 views
1

Ich würde gerne ein Docker-Bild basierend auf Skript bash für die Bereitstellung meines Systems erstellen.starten bash bash script auf docker bauen von windows system

Ich versuche mein Bild und Docker zu bauen mir sagen „erfolgreich aufgebaut“ aber wenn ich versuche, dies zu starten ich diese Meldung sehen: „Keine solche Datei oder das Verzeichnis“ und ich kann nicht sehen Behälter in Kitematic Anwendung.

Wenn ich Docker inspect auf meinem Container starten (ordnungsgemäß erstellt, aber nicht gestartet) kann ich eine ExitCode 127 anzeigen.

Können Sie mir helfen, Problem zu verstehen und mir auch helfen, eine einfache Skript-Bash richtig für Provisioning Image Docker zu starten.

dockerfile:

FROM ubuntu:trusty 
MAINTAINER barbie rambo <[email protected]> 

RUN apt-get update \ 
    && 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 

mein base.sh Skript

#!/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 
+0

Wollen Sie das auch wirklich als 'ENTRYPOINT'? Wie startest du das Bild? – schmunk

+0

Ich möchte nicht wirklich ENTRYPOINT Ich möchte nur mein Bild mit Skript provisioning. Ich starte mein Bild mit Docker Run. – darkomen

+0

Hmmm, ich habe deinen Code ausgeführt und es hat funktioniert. Aber ich würde "ENTRYPOINT" mit "RUN" wechseln, um das Image wirklich zu erstellen und die Installation nicht für jeden "Docker Run" auszuführen - Sie könnten auch prüfen, ob Sie einen bestehenden Einstiegspunkt überschreiben. Räume wie in VladoDemcaks Antwort könnten ebenfalls ein Problem sein. – schmunk

Antwort

1

prüfen, ob /home/docker/scripts/base.sh hat EOL als UNIX/OSX-Format, wenn Sie nicht EOL-Konvertierung in Notepad ++ tun können

  • geöffnete Datei in Notepad++ -> Edit -> EOL Conversion -> UNIX/OSX Format -> Save

  • dann Docker Bild

wieder aufbauen Wenn Sie in den Behälter zehn Lauf erhalten möchten folgende:

docker ps -a

und verwenden Container ID docker exec -i -t [containerID] bash

und überprüfen Sie, ob die Datei /home/docker/scripts/base.sh existiert

+0

Ich bestätige, dass Docker-Build korrekt ausgeführt wird, aber ich verstehe nicht, warum Docker starten mein Skript starten und Code 0 ohne Startcontainer beenden. – darkomen

+0

Es ist, weil Docker gerade 'base.sh' (ENTRYPOINT-Dienst) mit Ihren Installationen ausgeführt und beendet hat. Nichts anderes. Sie müssen bash in "Vordergrund" oder etwas anderes ausführen (nur nicht im Deamon-Modus), um den Andock-Container am Leben zu erhalten. – VladoDemcak

+0

@darkomen Das Problem "Keine solche Datei oder Verzeichnis" war mit EOL? – VladoDemcak