阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

133次阅读
没有评论

共计 2689 个字符,预计需要花费 7 分钟才能阅读完成。

前一阵试了试写 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

接下来使用 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) http://www.linuxidc.com/Linux/2014-07/104595.htm 

Ubuntu 16.04 服务器上配置使用 Docker  http://www.linuxidc.com/Linux/2017-06/145176.htm 

Ubuntu 15.04 下安装 Docker  http://www.linuxidc.com/Linux/2015-07/120444.htm 

Docker 安装实例 http://www.linuxidc.com/Linux/2017-04/142666.htm 

Docker 创建基础镜像  http://www.linuxidc.com/Linux/2017-05/144112.htm 

在 Ubuntu 15.04 上如何安装 Docker 及基本用法 http://www.linuxidc.com/Linux/2015-09/122885.htm 

Ubuntu 16.04 上 Docker 使用手记 http://www.linuxidc.com/Linux/2016-12/138490.htm 

使用 Docker 分分钟启动常用应用  http://www.linuxidc.com/Linux/2017-04/142649.htm 

Ubuntu 16.04 下 Docker 修改配置文件不生效解决办法  http://www.linuxidc.com/Linux/2017-05/143862.htm 

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

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149539.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计2689字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中