2015-11-03 35 views
0

我生成了一个在不同机器上行为不同的Docker镜像。对于Docker来说,我认为这是不可能的。但让我解释一下:Docker镜像在不同的机器上表现不同

我的计划是生成一个基于dashing的Docker镜像,我上传到一个ec2实例,然后在那里启动它。

在Dockerfile中(见下文),我创建了一个新的dashing实例,它在jobs子文件夹中创建了一些作业(例如twitter.rb)。之后,我删除作业文件夹并重新创建它以摆脱所有默认作业。

当我在本地计算机上运行映像(带有Docker Toolbox 1.8.3的OS X)时,我可以看到默认作业已被删除(如预期的那样)。同样在我的同事(Ubuntu和Docker 1.7.1)的机器上,它可以像预期的那样工作。但在ec2机器上(修改了Amazon Ami和Docker 1.7.1),我可以看到作业子文件夹中的默认作业以及我在Dockerfile末尾添加的作业。

有谁知道问题是什么?或者给我至少一些提示如何继续?

# Build script where 1 is my version 
docker build -t dashboard:1 . 
docker save -o dashboard.tar dashboard:1 

# On the ec2 machine 
docker load -i dashboard.tar 
docker run -t dashboard:1 dashing start 

这里是我的Dockerfile:

FROM ruby 

RUN apt-get update && \ 
    apt-get -y install npm && \ 
    apt-get -y install nodejs && \ 
    gem install dashing && \ 
    gem install bundle 

# Creates default jobs like jobs/twitter.rb 
RUN mkdir /dashing && \ 
    dashing new dashing && \ 
    cd /dashing && bundle 

WORKDIR /dashing 

# Clean default jobs and re-create the folder 
RUN rm -rf jobs && mkdir jobs && \ 
    rm -rf dashboards && mkdir dashboards && \ 
    rm -rf widgets && mkdir widgets && \ 
    rm -rf public && mkdir public 

# Add jobs from current repository 
ADD jobs /dashing/jobs 
ADD config/config.ru /dashing/config.ru 
ADD dashboards /dashing/dashboards 
ADD widgets /dashing/widgets 
ADD public /dashing/public 

# Run Bundle in a cache efficient way 
WORKDIR /tmp 
ADD config/Gemfile /tmp/ 
ADD config/Gemfile.lock /tmp/ 
RUN bundle install 

WORKDIR /dashing 

CMD ["dashing start"] 

回答

0

对于什么是值得的,如果你仍然有这个问题,听起来这是与文件夹中的“默认的umask”的问题在创建时。运行脚本的'用户'必须在一个组中,对作业目录和作业目录上方的目录具有至少'rw'(读/写)权限以删除它 - 听起来像你没有云设置(但显然你会在你自己的盒子!)

(更多的细节和功劳https://unix.stackexchange.com/questions/7466/

相关问题