我正在设置当前在docker容器中运行Apache 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"]
我的Docker容器启动并运行了Karaf。一旦启动了Karaf,我需要在karaf中运行基本命令(例如:feature:list,feature:install),这样我就可以安装我的功能/包并列出它们。
那么如何在Docker中运行的Karaf上执行命令?
答案 0 :(得分:1)
更改您的dockerfile并添加以下内容
ENTRYPOINT ["/opt/apache/karaf/bin/start"]
答案 1 :(得分:0)
如何ssh到你的docker-Karaf Image并从那里发出shell命令?但请确保您为ssh导出该端口:
EXPOSE 8081
答案 2 :(得分:0)
您应该从主机访问karaf 8101是容器内使用的端口。 尝试此命令以交互模式运行容器
docker run -it -p 8101:8080 mkroli/karaf
您可以使用-d选项在backgroud中运行此容器。
答案 3 :(得分:0)
在Jean-BaptisteOnofré的博客文章Apache Karaf & Docker中,他展示了如何在Docker容器中设置和运行Apache Karaf。
使用his build.sh script通过运行以下命令来创建容器:
build.sh --from-release --karaf-version 4.2.7 --image-name karaf
然后,您可以使用以下命令在容器中运行Karaf控制台:
docker-compose run karaf
Voila! :)