2015-06-04 1 views
2

Я использую lemonlatte/docker-webvirtmgr в качестве базового файла, но проблема в том, что для пользовательских www-данных нет ssh-ключей, поэтому я написал следующий сценарий оболочки:Запуск сценария оболочки внутри контейнера

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

UPDATE 2: Строить из dockerfile был успешным, и я положил заявление между:

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

могли бы вы поделиться своим dockerfile? – christian

+0

Вы получаете сообщение об ошибке, когда пытаетесь создать модифицированный файл Docker, где вы добавили эти две строки? –

+1

Просто попытался воссоздать ваш файл докеров с теми же двумя добавленными строками, и я смог запустить его без каких-либо проблем. Сначала я получил «/ bin/sh: 1: /webvirtmgr/setupssh.sh: Permission denied» -> изменение chmod, я смог вызвать скрипт оболочки внутри контейнера –

ответ

1

Адрес /var/local/webvirtmgr определяется как выпуск.

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 

 Смежные вопросы

  • Нет связанных вопросов^_^