Docker 通过commit方法创建镜像(Tomcat+Java+Scala)

前一阵试了试写Dockerfile创建docker image,但有时全靠Dockerfile写实在有些难度,退而求其次试一试使用commit来创建镜像:

想了想干脆创建一个Java+Scala+Tomcat的环境好了,首先创建一个拥有操作系统的container:

docker run -i -t Ubuntu /bin/bash

其中,-it的意思是这个:

-t, --tty                       Allocate a pseudo-TTY
-i, --interactive               Keep STDIN open even if not attached

然后使用docker cp命令将本地的tar包传入容器

cloud@cloud5:~/docker$ docker cp --help

Usage:    docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
    docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

Copy files/folders between a container and the local filesystem
Use '-' as the source to read a tar archive from stdin
and extract it to a directory destination in a container.
Use '-' as the destination to stream a tar archive of a
container source to stdout.

  --help               Print usage
  -L, --follow-link    Always follow symbol link in SRC_PATH

然后将这些包解压并删除:

tar -zxvf ......
rm ....

接下来配了/etc/profile和/etc/rc.local,设置了环境变量和开机自启动,并重启容易docker restart env。

然后问题来了,rc.local和/etc/profile都没有生效,docker container肯定不是完全启动,但是启动哪些我不是很清楚,只能通过迂回方式解决:手动启动/etc/rc.local。首先登录我们的container

docker exec -it env bash

使用docker自带的命令要远好于install ssh,如果在本地执行使用上面的命令就可以实现修改container的功能,我们将/etc/profile中配置好的环境变量写入rc.local,写之后的rc.local是这样的:

Docker 通过commit方法创建镜像(Tomcat+Java+Scala)
 
#--------------JAVA--------------------
JAVA_HOME=/usr/local/jdk/
PATH=${PATH}:${JAVA_HOME}/bin
CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export JAVA_HOME PATH CLASSPATH

#--------------SCALA------------------
SCALA_HOME=/usr/local/scala-2.10.5/
PATH=${PATH}:${SCALA_HOME}/bin
export SCALA_HOME PATH

#-------------TOMCAT------------------
CATALINA_HOME=/usr/local/tomcat
CATALINA_BASE=/usr/local/tomcat
PATH=${PATH}:${CATALINA_HOME}/bin

export CATALINA_HOME CATALINA_BASE PATH

/etc/init.d/ssh start
/usr/local/tomcat/bin/startup.sh

/bin/bash

exit 0
View Code

接下来使用docker commit env docker-env命令创建一个image。之后试试这个image是否可用

docker run --name tomcat -i -t -p 50016:22 -p 50017:8080 docker-env /etc/rc.local

访问 localhost:50017发现可以访问tomcat,设置成功。我在执行run的时候设置它的启动命令是/etc/rc.local,这样就可以将我们tomcat直接开机启动,并且将环境变量加入进来,由于在试用时走了一些弯路,所以我这里还装了vim和ssh,所以image略大,如果不装这两个会小一些。创建出来的tomcat打上war包可以部署web服务,这样在服务迁移时便会简单许多,至少只装一个docker应该就可以了。

更多Docker相关教程见以下内容: 

Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里

相关推荐