资讯专栏INFORMATION COLUMN

Docker 实践 - 定制 tomcat8 镜像

Tecode / 2097人阅读

摘要:实践定制镜像准备文件下载安装包解压修改文件移动相关文件修改文件,在的节点增加属性。现在能用账号在对应的上进行在线部署操作。是一种推出的免费的公共镜像库服务。本地对镜像打提交镜像到仓库

Docker 实践 - 定制 tomcat8 镜像

准备文件

# CentOS
yum update && yum install -y wget curl unar
# Debain/Ubuntu
apt update && apt install -y wget curl unar
# 下载 tomcat8 安装包 https://tomcat.apache.org/download-80.cgi
wget -N https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.61/bin/apache-tomcat-8.5.61.zip
# 解压
unar apache-tomcat-8.5.61.zip && cd apache-tomcat-8.5.61

修改文件

  1. 移动相关文件

    mkdir tomcat8-docker
    cp tomcat-users.xml server.xml tomcat8-docker/
    cd tomcat8-docker
  2. 修改 server.xml文件,在 port="8080"Connector 节点增加属性URIEncoding="UTF-8"

    原因:将 get 请求中的参数做 UTF-8 编码,以后在浏览器的地址栏可以直接输入中文参数。

  3. 修改 tomcat-users.xml 文件,在tomcat-users节点中增加以下内容。

        
       
       
       
    
  4. 创建 manager.xml 文件。

    
        
    

    现在能用 tomcat 账号在对应的 tomcat 上进行在线部署操作。

构建镜像

  1. 新建文件 Dockerfile

    touch Dockerfile
    cat > Dockerfile << -EOF
    # First docker file from kongren
    # VERSION 0.0.1
    # Author: kongren
     
    # 基础镜像
    FROM tomcat
    
    # 作者
    MAINTAINER kongren 
     
    # 定义工作目录
    ENV WORK_PATH /usr/local/tomcat/conf
     
    # 定义manager.xml工作目录
    ENV MANAGER_PATH /usr/local/tomcat/conf/Catalina/localhost
     
    # 定义要替换的文件名
    ENV USER_CONF_FILE_NAME tomcat-users.xml
     
    # 定义要替换的server.xml文件名
    ENV SERVER_CONF_FILE_NAME server.xml
     
    # 定义要新增的manager.xml文件名
    ENV MANAGER_CONF_FILE_NAME manager.xml
     
    # 删除原文件tomcat-users.xml
    RUN rm $WORK_PATH/$USER_CONF_FILE_NAME
     
    # 复制文件tomcat-users.xml
    COPY  ./$USER_CONF_FILE_NAME $WORK_PATH/
     
    # 删除原文件server.xml
    RUN rm $WORK_PATH/$SERVER_CONF_FILE_NAME
     
    # 复制文件server.xml
    COPY  ./$SERVER_CONF_FILE_NAME $WORK_PATH/
     
    # 复制文件manager.xml
    COPY  ./$MANAGER_CONF_FILE_NAME $MANAGER_PATH/
    EOF

    以上就是Dockerfile的全部内容,每一行都有使用说明。几个关键点如下:

    1. FROM tomcat的意思是使用tomcat作为基础镜像;
    2. 使用了tomcat作为基础镜像后,通过RUN rm命令将原有的server.xmltomcat-users.xml文件删除;
    3. 将我们准备工作中准备的server.xmltomcat-users.xml文件复制到原来的conf目录下,这样就用取代了原有的文件;
  2. 构建 tomcat 镜像

    $ docker build -t kongren/tomcat:8.5.61 .
    Sending build context to Docker daemon  18.94kB
    Step 1/12 : FROM tomcat
     ---> 6fa48e047721
    Step 2/12 : MAINTAINER kongren 
     ---> Using cache
     ---> 3edb5058268f
    Step 3/12 : ENV WORK_PATH /usr/local/tomcat/conf
     ---> Using cache
     ---> 171752ea6f68
    Step 4/12 : ENV MANAGER_PATH /usr/local/tomcat/conf/Catalina/localhost
     ---> Using cache
     ---> f196a2426d3a
    Step 5/12 : ENV USER_CONF_FILE_NAME tomcat-users.xml
     ---> Using cache
     ---> 6fae9cc05145
    Step 6/12 : ENV SERVER_CONF_FILE_NAME server.xml
     ---> Using cache
     ---> ad86732af7c2
    Step 7/12 : ENV MANAGER_CONF_FILE_NAME manager.xml
     ---> Using cache
     ---> 2014bd71fe8d
    Step 8/12 : RUN rm $WORK_PATH/$USER_CONF_FILE_NAME
     ---> Using cache
     ---> 637698cb46e0
    Step 9/12 : COPY  ./$USER_CONF_FILE_NAME $WORK_PATH/
     ---> Using cache
     ---> 14a33261309b
    Step 10/12 : RUN rm $WORK_PATH/$SERVER_CONF_FILE_NAME
     ---> Using cache
     ---> c911d2047dd5
    Step 11/12 : COPY  ./$SERVER_CONF_FILE_NAME $WORK_PATH/
     ---> Using cache
     ---> 8290b98670d7
    Step 12/12 : COPY  ./$MANAGER_CONF_FILE_NAME $MANAGER_PATH/
     ---> Using cache
     ---> 141d73e3bc18
    Successfully built 141d73e3bc18
    Successfully tagged kongren/tomcat:8.5.61

    执行完毕后,输入docker images 命令可以查看当前本机的镜像。

    $ docker images
  3. 启动 tomcat

    $ docker run --name=tomcat8 -p 8080:8080 -e TOMCAT_SERVER_ID=tomcat_server_001 -idt tomcat:8.5.61

    执行docker ps命令,可以看到启动的容器:

    $ docker ps
  4. 用浏览器访问 http://:8080,可以看到熟悉的页面

    image.png

推送镜像

这里使用 Ucloud 的 公共镜像库 UHub。UHub 是一种 UCloud 推出的免费的公共镜像库服务。

  1. 登录镜像仓库。

    $ docker login uhub.service.ucloud.cn -u ren@outlook.pt
  2. 本地对镜像打 tag:

    $ docker tag kongren/tomcat:8.5.61 uhub.service.ucloud.cn/kongren/tomcat:8.5.61
  3. 提交镜像到仓库:

    $ docker push uhub.service.ucloud.cn/kongren/tomcat:8.5.61

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/125936.html

相关文章

  • Docker技术之构建镜像和网络模式解析

    Docker技术之构建镜像和网络模式解析 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ...

    不知名网友 评论0 收藏3004
  • docker入门实战笔记

    摘要:创建用户组并添加用户。默认情况下是过滤掉所有的入站规则。初始命令表示一旦容器启动,需要运行的命令,此时使用,表示什么也不做,只需进入命令行即可。1.什么是docker  docker翻译为搬运工,在这里应该可以理解为搬运应用的工具,也就是云.先了解其运用场景之后更容易对他形成深刻理解.  Docker提供了一种可移植的配置标准化机制,允许你一致性地在不同的机器上运行同一个Container;...

    Tecode 评论0 收藏0
  • Dockerfile 与 Compose 环境搭建学习笔记(一)

    摘要:的主要作用是自己根据基础镜像,重新定制镜像,而不是直接从官方仓库拿现成的使用。以接下来要构建的环境来说明下,下面我将要搭建一个的开发环境,需要进行配合。它的主要作用是持久化数据,避免容器销毁后内部数据丢失暴露到宿主机的端口。 以前一直使用 Vagrant 作为自己的开发环境,并且在上家公司也推行大家采用 Vagrant 作为开发环境,保障公司使用的是同一套开发环境。随着docker的流...

    TZLLOG 评论0 收藏0
  • Dockerfile 与 Compose 环境搭建学习笔记(一)

    摘要:的主要作用是自己根据基础镜像,重新定制镜像,而不是直接从官方仓库拿现成的使用。以接下来要构建的环境来说明下,下面我将要搭建一个的开发环境,需要进行配合。它的主要作用是持久化数据,避免容器销毁后内部数据丢失暴露到宿主机的端口。 以前一直使用 Vagrant 作为自己的开发环境,并且在上家公司也推行大家采用 Vagrant 作为开发环境,保障公司使用的是同一套开发环境。随着docker的流...

    ityouknow 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<