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应该就可以了。。

转载于:https://www.cnblogs.com/gaoze/p/5319665.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值