2016-10-07 40 views
1

我想构建一个基于脚本bash的docker镜像以供应我的系统。在Docker上从windows系统启动基本bash脚本

我尝试建立自己的形象和搬运工人告诉我“成功构建了”但是当我尝试推出这个我可以看到这条消息:“没有这样的文件或目录”,我无法在观看集装箱Kitematic申请。

如果我在我的容器上启动泊坞窗检查(正确创建但未启动),我可以查看ExitCode 127

你能帮助我理解问题,并帮助我正确启动一个简单的脚本bash来配置镜像泊坞窗。

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 

我base.sh脚本/home/docker/scripts/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 
+0

你真的想把这也当成一个'ENTRYPOINT'吗?你如何开始形象? – schmunk

+0

我真的不想进入我只是想用脚本配置我的图像。我用码头运行开始我的形象。 – darkomen

+0

嗯,我运行你的代码,它的工作。但是我会用'RUN'切换'ENTRYPOINT'来真正构建图像,而不是为每个'docker run'运行安装 - 您也可以检查是否覆盖现有的入口点。像VladoDemcak的答案那样的空间也可能是一个问题。 – schmunk

回答

1

检查是否有EOL作为UNIX/OSX格式,如果不是你可以在记事本做EOL转换++

  • Notepad++ -> Edit -> EOL Conversion -> UNIX/OSX Format -> Save

  • 打开文件然后重建泊坞窗图像

如果你想进入容器10运行如下:

docker ps -a

,并使用容器ID docker exec -i -t [containerID] bash

并检查文件是否为/home/docker/scripts/base.sh存在

+0

我确认码头构建正确运行,但我不明白为什么码头运行启动我的脚本并退出代码0没有启动容器。 – darkomen

+0

这是因为docker刚刚执行了'base.sh'(ENTRYPOINT服务)并且退出了安装。没有其他的。你需要在“foreground”或其他地方运行bash(只是不要在deamon模式下)来保持docker容器的运行。 – VladoDemcak

+0

@darkomen问题“没有这样的文件或目录”与EOL? – VladoDemcak