从一个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