前言

I know, I know. Tomcat的安装非常简单,但是我还是想介绍一下Docker如何更简单的安装与使用Tomcat

提个小问题

  • 你是不是遇到过要一个8.x,9.x版本的tomcat,但是电脑里面居然只有7.x版本的tomcat
  • 你的tomcat是不是server.xml被你改的乱七八糟,以至于都无法运行了
  • 什么?我的tomcat居然运行还会报错,catalina error,,,什么鬼?

So, why not try Docker Tomcat?

一步搞定

docker run --name some-tomcat -d  -p 9999:8080 tomcat:8.0

依次解释各个参数

docker run : 用docker命令运行一个容器

    接下来测试一下

    打开浏览器访问 http://<your-host-machine-ip>:9999, 这里我的地址是:http://10.100.49.148:9999/
    你应该能看到一只汤姆猫

    部署你的应用

    其实你最希望做的事情肯定不只是运行一个tomcat而已
    你可能需要进入到容器的内部,然后部署你的应用
    在内网或者局域网中,你可以在容器的内部通过 wget 命令来下载外部的文件,

    或者你可以直接使用docker命令将宿主机器的文件传输到容器中,例如:

    docker cp ./.  some-tomcat:/home
    

    表示把当前目录的所有文件都传输给 some-tomcat容器中的 /home目录下

    或者你只希望传输一个war包\

    docker cp foo.war some-tomcat:/foo.war
    

    表示将当前路径下的foo.war传输到 some-tomcat容器中的根目录下,并且文件名叫foo.war

    总结

    这次不打算总结点什么。。:)

    常见问题

    1. 数据库连接不成功?容器内部的服务无法被外部访问?

      • 检查docker宿主机器是否开启了防火墙,如果有请关闭防火墙。或者将宿主机器的端口加入到防火墙白名单。容器的端口没有关系,不需要做什么。
      • docker运行容器时,千万不能忘记 -p 参数,这个参数决定了docker 容器内部的服务可以被外部访问
      • docker container ls检查你的容器是否启动成功了,很多情况不要忘记了 -d 参数,这个参数可以让容器后台运行。
    2. 几天之后再使用docker,找不到此命令?容器也不在了?

      • 很可能是你的宿主机器重启了,你需要重新启动docker服务,这很简单,尝试:
        service start docker
        或者
        systemctl start docker
        同理既然你的docker服务都重启了,那么你的容器也是需要被重启的,因为他们现在都处于stop状态,可以尝试:
        //查看所有的docker容器,包括运行中的、停止的。
        docker container ls -a
        // 输入你要启动的容器名称,它可以是一个名字也可以是一串字符串ID
        docker start <your container name>   
    3. 如果你怎么都尝试不成功,可以试试docker重启大法,这不是开玩笑,非常有效!

      systemctl stop docker
      systemctl start docker