我生成了一个Docker镜像,在不同的机器上表现不同。我认为Docker无法做到的事情。但让我解释一下:
我的计划是生成一个基于破败的Docker镜像,我将其上传到ec2实例,然后在那里启动它。
在Dockerfile(见下文)中,我创建了一个新的虚拟实例,它在jobs子文件夹中创建了一些作业(例如twitter.rb)。之后我删除了jobs文件夹并再次重新创建它以摆脱所有默认作业。
当我在本地计算机上运行映像(带有Docker Toolbox 1.8.3的OS X)时,我可以看到默认作业被删除(如预期的那样)。同样在我的同事(Ubuntu与Docker 1.7.1)的机器上,它的工作方式与预期的一样。但是在ec2机器上(使用Docker 1.7.1修改了Amazon Ami),我可以看到jobs子文件夹中的默认作业以及我在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 :(得分:0)
对于它的价值,如果你仍然有这个问题,听起来这是一个默认的umask'文件夹创建时出现问题。用户'运行您的脚本必须位于至少包含' rw' (读/写)作业目录上的权限和作业目录上方的目录删除它 - 听起来好像你没有在云设置上有这个(但显然你会在你自己的盒子上!)