2016-05-11 3 views
0

Я настраиваю в настоящее время Apache karaf внутри контейнера докера. Я использовал следующий код для создания изображения докеров.Как выполнить команды на работе Karaf внутри Docker?

FROM java:8-jdk 
MAINTAINER mkroli 
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64 
ENV KARAF_VERSION=4.0.5 

RUN wget http://apache.openmirror.de/karaf/${KARAF_VERSION}/apache-karaf-${KARAF_VERSION}.tar.gz; \ 
mkdir /opt/karaf; \ 
tar --strip-components=1 -C /opt/karaf -xzf apache-karaf-${KARAF_VERSION}.tar.gz; \ 
rm apache-karaf-${KARAF_VERSION}.tar.gz; \ 
mkdir /deploy; \ 
sed -i 's/^\(felix\.fileinstall\.dir\s*=\s*\).*$/\1\/deploy/' /opt/karaf/etc/org.apache.felix.fileinstall-deploy.cfg 

VOLUME ["/deploy"] 
EXPOSE 1099 8101 44444 
ENTRYPOINT ["/opt/karaf/bin/karaf"] 

В моем контейнере-докере работает Karaf. После запуска Karaf мне нужно запустить основные команды внутри karaf (пример: список, функция: установить), чтобы я мог установить мои функции/пакеты и перечислить их.

  1. Я попытался запустить команды в интерактивной оболочке, но проблема в том, что я не могу вернуться к оболочке докера, если я вернусь, контейнер Karaf будет остановлен.

Как я могу выполнять команды по работе с Karaf внутри Docker?

+0

Вы попробовали 'docker exec -it container_id bash', а затем запустили свои команды? doc https://docs.docker.com/engine/reference/commandline/exec/ – user2915097

+0

и имейте в виду, что 'docker run Karaf bash' запускает новый контейнер, он не попадает в ваш контейнер Karaf – user2915097

+0

Если я это сделаю поэтому с помощью exec или run я могу попасть в оболочку karaf, но если я попытаюсь добраться до оболочки докера, мне нужно выйти из системы (что останавливает сервер Karaf), и дескриптор попадает в контейнер докеров. – mnsndr

ответ

0

Как насчет того, чтобы ssh'ing в ваше изображение докеры-Karaf и выпустить команды оболочки оттуда? Но убедитесь, что у вас есть, что порт для SSH экспортироваться:

EXPOSE 8081 
0

вы должны получить доступ к karaf от хост-машины 8101 порт используется внутри контейнера. попробовать эту команду, чтобы запустить контейнер в интерактивном режиме

docker run -it -p 8101:8080 mkroli/karaf 

вы можете запустить этот контейнер в Backgroud с помощью опции -d.