2015-06-04 105 views
2

我使用lemonlatte/docker-webvirtmgr作为基本文件,但问题是没有为用户www-data配置ssh密钥,所以我编写了以下shell脚本:在容器中运行shell脚本

#!/bin/sh 

if [ ! -d "/var/local/webvirtmgr/nginxhome" ]; then 
mkdir /var/local/webvirtmgr/nginxhome 
chown -R www-data:www-data /var/local/webvirtmgr/nginxhome 
usermod -d /var/local/webvirtmgr/nginxhome www-data 
su - www-data -s /bin/bash -c "ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N ''" 
su - www-data -s /bin/bash -c "touch /var/local/webvirtmgr/nginxhome/.ssh/config && echo -e 'StrictHostKeyChecking=no\nUserKnownHostsFile=/dev/null' >> /var/local/webvirtmgr/nginxhome/.ssh/config" 
su - www-data -s /bin/bash -c "chmod 0600 ~/.ssh/config" 
fi 

之后,我添加了两个语句到dockerfile:

ADD setupssh.sh /webvirtmgr/setupssh.sh 
RUN /bin/sh -c "/webvirtmgr/setupssh.sh" 

我已经尝试过CMD /webvirtmgr/setupssh.sh,RUN /webvirtmgr/setupssh.sh但没有成功...

当我手工运行容器内的脚本,它工作正常。

这里有什么问题?

问候

UPDATE: 这里是链接到维护者的回购:link

更新2: 的dockerfile的构建成功,我把之间的语句:

RUN apt-get -ys clean 
<statements were here> 
WORKDIR/
+0

请您分享您的dockerfile? – christian

+0

当您尝试构建修改后的Dockerfile时,您是否收到错误消息?在哪里添加了这两行代码? –

+1

试图用相同的两条附加行重新创建您的docker文件,并且我能够在没有任何问题的情况下运行它。首先我得到了“/ bin/sh:1:/webvirtmgr/setupssh.sh:Permission denied” - >改变了chmod,我能够调用容器中的shell脚本 –

回答

1

该目录/var/local/webvirtmgr定义为volume

VOLUME /var/local/webvirtmgr 

因此这个目录是挂载点在运行容器,你已经加入到它被覆盖的。

你将不得不使用不同的目录,那么你的脚本将工作。

Here's一个Dockerfile来测试它:

FROM lemonlatte/docker-webvirtmgr 
RUN mkdir /var/local/webvirtmgr2 
RUN touch /var/local/webvirtmgr2/t && touch /var/local/webvirtmgr/t 
RUN ls -la //var/local/webvirtmgr 
RUN ls -la /var/local/webvirtmgr2 

输出:

Sending build context to Docker daemon 4.608 kB 
Sending build context to Docker daemon 
Step 0 : FROM lemonlatte/docker-webvirtmgr 
---> 18e2839dffea 
Step 1 : RUN mkdir /var/local/webvirtmgr2 
---> Running in d7a1e897108e 
---> cc029293525e 
Removing intermediate container d7a1e897108e 
Step 2 : RUN touch /var/local/webvirtmgr2/t && touch /var/local/webvirtmgr/t 
---> Running in 1a1375651fa7 
---> e314c2529d90 
Removing intermediate container 1a1375651fa7 
Step 3 : RUN ls -la //var/local/webvirtmgr 
---> Running in 5228691c84f5 
total 8 
drwxr-xr-x 2 www-data www-data 4096 Jun 6 09:22 . 
drwxr-xr-x 6 root  root  4096 Jun 6 09:22 .. 
---> ec4113936961 
Removing intermediate container 5228691c84f5 
Step 4 : RUN ls -la /var/local/webvirtmgr2 
---> Running in a6d2a683391a 
total 8 
drwxr-xr-x 2 root root 4096 Jun 6 09:22 . 
drwxr-xr-x 6 root root 4096 Jun 6 09:22 .. 
-rw-r--r-- 1 root root 0 Jun 6 09:22 t 
---> 3cb98c5c1baf 
Removing intermediate container a6d2a683391a 
Successfully built 3cb98c5c1baf