从一个debian镜像中定制和安装Apache Karaf服务。

从仓库中创建一个基于debian的容器

# docker run -i -t debian /bin/bash

安装、配置JDK和Karaf

# apt-get update
# apt-get install openjdk-7-jdk

# apt-get install wget
# wget http://apache.fayea.com/karaf/3.0.3/apache-karaf-3.0.3.tar.gz

# tar -zxvf apache-karaf-3.0.3.tar.gz -C /opt/
# ln -s /opt/apache-karaf-3.0.3 /opt/karaf

将服务启动加入bash初始化中,这样在容器run时使用/bin/bash就可以启动了,并且在start容器时也会被调用。

# apt-get install vim
# cat >> /etc/bash.bashrc << EOF
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
/opt/karaf/bin/start
EOF

注意:如果JAVA_HOME设置错误会引起bin/client不能正常登录!!!

将配置好的容器转换成image,以便以此为基础创建新的镜像/容器并加入所需的端口映射等参数

docker commit -m "Debian 8 with JDK1.7, Karaf 3.0.3" 8b74cef92451 xglabc/karaf:3.0.3

使用Dockerfile将建立的karaf镜像build成新的image并加入配置

# vi Dockerfile
FROM xglabc/karaf:3.0.3
MAINTAINER Lili Ji "jilili@aliyun.com"

# docker build -t xglabc/karaf:3.0.3 ./

对于普通应用在容器中可以配置访问的IP地址或者hosts文件,但是有些情况下提供公网服务就必须将公网的端口映射到容器端口。

# docker run --restart=always -t -i -p 20013:20013 xglabc/karaf:3.0.3 /bin/bash

也可以将本地目录挂在到docker中

# docker run --restart=always -t -i -p 20013:20013 -v /opt/release:/opt/release xglabc/karaf:3.0.3 /bin/bash

[ 编辑 | 历史 ]
最近由“jilili”在“2015-06-03 10:14:56”修改