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是这样的:

 

#--------------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安装应用(CentOS 6.5_x64)  

Ubuntu 16.04 服务器上配置使用 Docker   

Ubuntu 15.04下安装Docker   

Docker 安装实例  

Docker 创建基础镜像   

在 Ubuntu 15.04 上如何安装Docker及基本用法  

Ubuntu 16.04上Docker使用手记  

使用Docker分分钟启动常用应用   

Ubuntu 16.04下Docker修改配置文件不生效解决办法   

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/85b0049808b10cf7ec87b95a6ec99824.html