2015-03-31 2 views
0

У меня возникла проблема с CentOS 7 при попытке сопоставить том с хостом в контейнере tomcat. Это происходит с общедоступными изображениями tomcat, а также с изображением, которое я создал (на основе centos вместо debian).Объемы докеров на CentOS 7

инстанцирования контейнера следующим образом удастся: Docker бега -это -d кот: 8

инстанцирования контейнера следующим будет успешным, но с ошибками в журнале и журналах не записывается на хост: докер запустить -IT -d -v/USR/местные/кота:/USR/местные/кот кот: 8

[wpack[email protected] tomcat]$ dkr run -it -d -v 

/usr/local/tomcat:/usr/local/tomcat tomcat:8 
34075701b1436f83a24212170b4d2113ae698df244c449203b1c9af9814485c9 
[[email protected] tomcat]$ dkr ps 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES 
34075701b143  tomcat:8   "catalina.sh run" 5 seconds ago  Up 4 seconds  8080/tcp   sharp_einstein 
[[email protected] tomcat]$ dkr logs sharp_einstein 
Using CATALINA_BASE: /usr/local/tomcat 
Using CATALINA_HOME: /usr/local/tomcat 
Using CATALINA_TMPDIR: /usr/local/tomcat/temp 
Using JRE_HOME:  /usr 
Using CLASSPATH:  /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar 
java.util.logging.ErrorManager: 4 
java.io.FileNotFoundException: /usr/local/tomcat/logs/catalina.2015-03-31.log (Permission denied) 

... 

31-Mar-2015 15:32:04.088 SEVERE [Catalina-startStop-1] org.apache.catalina.startup.HostConfig.start Unable to create directory for deployment: /usr/local/tomcat/conf/Catalina/localhost 
31-Mar-2015 15:32:04.097 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat/webapps/ROOT 
31-Mar-2015 15:32:04.468 WARNING [localhost-startStop-1] org.apache.catalina.core.StandardContext.postWorkDirectory Failed to create work directory [/usr/local/tomcat/work/Catalina/localhost/ROOT] for context [] 
31-Mar-2015 15:32:05.966 SEVERE [localhost-startStop-1] org.apache.jasper.EmbeddedServletOptions.<init> The scratchDir you specified: /usr/local/tomcat/work/Catalina/localhost/ROOT is unusable. 
31-Mar-2015 15:32:06.042 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat/webapps/ROOT has finished in 1,929 ms 
31-Mar-2015 15:32:06.043 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat/webapps/docs 
31-Mar-2015 15:32:06.093 WARNING [localhost-startStop-1] org.apache.catalina.core.StandardContext.postWorkDirectory Failed to create work directory [/usr/local/tomcat/work/Catalina/localhost/docs] for context [/docs] 
31-Mar-2015 15:32:06.216 SEVERE [localhost-startStop-1] org.apache.jasper.EmbeddedServletOptions.<init> The scratchDir you specified: /usr/local/tomcat/work/Catalina/localhost/docs is unusable. 
31-Mar-2015 15:32:06.219 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat/webapps/docs has finished in 176 ms 
31-Mar-2015 15:32:06.220 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat/webapps/examples 
31-Mar-2015 15:32:06.272 WARNING [localhost-startStop-1] org.apache.catalina.core.StandardContext.postWorkDirectory Failed to create work directory [/usr/local/tomcat/work/Catalina/localhost/examples] for context [/examples] 
31-Mar-2015 15:32:07.952 SEVERE [localhost-startStop-1] org.apache.jasper.EmbeddedServletOptions.<init> The scratchDir you specified: /usr/local/tomcat/work/Catalina/localhost/examples is unusable. 
[[email protected] tomcat]$ 

Exec'ing в контейнер и попытки записать также терпит неудачу.

[[email protected] tomcat]$ dkr ps 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES 
34075701b143  tomcat:8   "catalina.sh run" 5 minutes ago  Up 5 minutes  8080/tcp   sharp_einstein 
[[email protected] tomcat]$ dkr exec -it sharp_einstein /bin/bash 
[email protected]:/usr/local/tomcat# ls -l 
total 96 
-rw-rw-r--. 1 root root 56977 Jan 23 11:59 LICENSE 
-rw-rw-r--. 1 root root 1397 Jan 23 11:59 NOTICE 
-rw-rw-r--. 1 root root 6779 Jan 23 11:59 RELEASE-NOTES 
-rw-rw-r--. 1 root root 16204 Jan 23 11:59 RUNNING.txt 
drwxrwxr-x. 2 root root 4096 Mar 31 12:14 bin 
drwxrwxr-x. 2 root root 4096 Jan 23 11:59 conf 
drwxrwxr-x. 2 root root 4096 Mar 31 12:14 lib 
drwxrwxr-x. 2 root root  6 Jan 23 11:56 logs 
drwxrwxr-x. 2 root root 29 Mar 31 12:14 temp 
drwxrwxr-x. 7 root root 76 Jan 23 11:57 webapps 
drwxrwxr-x. 2 root root  6 Jan 23 11:56 work 
[email protected]:/usr/local/tomcat# cd logs 
[email protected]:/usr/local/tomcat/logs# echo "test" > test.log 
bash: test.log: Permission denied 

Я создал экземпляр контейнера PostGreSQL на CentOS и успешно отображает и использует объем, подтвержденный путем создания БД, останавливая экземпляр, а затем повторно запустить контейнер.

[[email protected] ~]$ uname --all 
Linux eagle2 3.10.0-123.20.1.el7.x86_64 #1 SMP Thu Jan 29 18:05:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 
[[email protected] ~]$ 

ДКР является псевдонимом докер, я создал группу Докер и добавил себя в группу, чтобы устранить необходимость в Судо.

Отображение томов, похоже, работает правильно на ubuntu. На CentOS я попробовал как версию пакета (как показано ниже), так и обновил его до 1.5.

[[email protected] ~]$ dkr --version 
Docker version 1.3.2, build 39fa2fa/1.3.2 
[[email protected] ~]$ 

Как сделать тома для работы с CentOS?

ответ

0

Я думаю, что ваши тома : working :-) У вас есть проблема с разрешением. Я сталкиваюсь с этим довольно часто с отображением идентификатора пользователя между хостом и контейнером. На вашем хосте, если вы посмотрите/usr/local/tomcat (ls -ld), вы увидите владельца, группу и разрешения. Вероятно, у вас есть что-то вроде 0755 (чтение/запись/exec от владельца, чтение/exec по группе, чтение/exec по миру. Вы можете легко проверить эту теорию, просто запомнить текущие настройки для/usr/local/tomcat/logs, затем делать:.

chmod 777 /usr/local/tomcat/logs 

из Docker хозяина (не контейнер) Затем запустите тест на контейнере, Разрешение отказано должно испариться

Это не хороший исправить, хотя я не.. не знаю, что сообщество говорит о сопоставлении идентификаторов пользователей для докеров. Одна вещь, которую вы можете сделать, - это выяснить пользователя и группу на вашем хосте для этого каталога. Затем, когда вы создаете свой образ (или во время выполнения), создайте пользователя с тот же идентификатор d группа с тем же идентификатором в контейнере. Затем запустите службу tomcat, используя этого пользователя в контейнере.

+0

Грег, спасибо - и я думаю, что вы правы в том, что у меня есть проблема разрешения, не проблема объема. Тем не менее, исправление, которое вы предложили, не работает. '$ ll/usr/local/tomcat drwxrwxrwx.2 корень корень 6 6 апреля 9:23 журналы $ ДКР пробег -IT -d -v/USR/местные/Tomcat/журналы:/USR/местные/журналы/Tomcat Tomcat: 8 5661653ac2 журналы $ DKR 5661653ac2 Использование CATALINA_BASE :/usr/local/tomcat ... java.io.FileNotFoundException: /usr/local/tomcat/logs/catalina.2015-04-06.log (Permission denied) ' Мне интересно, есть ли вопрос с файлом: xfs? –

+0

У меня было много проблем с сопоставлением идентификаторов пользователей и разрешениями между файловыми системами хоста и идентификатором контейнера. Я думаю, это то, что вы здесь делаете. трудно прочитать выход комментария ... извините ... в контейнере вы можете коснуться /usr/local/tomcat/logs/catalina.2015-04-06.log '? Этот файл уже существует с неправильным разрешением? Или, java создает его с неправильным разрешением ??? (umask установлен неправильно) ??? – Greg

+0

Извините за искажение, с форматированием форматирования в блоке комментариев. На хосте ничего не существует в папке журналов, я могу прикоснуться или создать там файл. В контейнере ничего не существует в этой папке, и я ничего не могу создать. попытка прикосновения возвращает «Permission denied». Разрешения, указанные для этой папки (журналы) в контейнере, - 777, владелец и группа - оба пользователя root. Umask - 0022. –

0

Это связано с SELinux.

Вы должны приложить правильный тип для размещения каталога:

host$ chcon -Rt svirt_sandbox_file_t /usr/local/tomcat 
Смежные вопросы