zoukankan      html  css  js  c++  java
  • 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应该就可以了。。

  • 相关阅读:
    [Taro] 解决 使用 Taro UI 小程序下 Iconfont 图标 不显示问题
    [Taro] Taro 环境安装 (一)
    [RN] react-native FlatList 实现列表选中的最佳方式(刷新指定Item)
    [RN] React Native FlatList 选中后 状态没有立即发生改变,而在下一次生效的问题
    [RN] React Native 使用 Redux 比较详细和深刻的教程
    [Taro] taro 缓存
    个人总结第十五周
    个人总结第十四周
    个人总结第十三周
    个人总结第十二周
  • 原文地址:https://www.cnblogs.com/gaoze/p/5319665.html
Copyright © 2011-2022 走看看