Docker容器服务_部署应用(三)

一、部署一个Tomcat容器并进行访问

【-运行一个 web 应用-】

前面我们运行的容器并没有一些什么特别的用处。

接下来让我们尝试使用 docker 构建一个 web 应用程序。

我们将在docker容器中运行一个 tomcat 应用来运行一个web应用。

看 Docker 支持哪些版本的 Tomcat

[root@bigdata ~]# docker search tomcat

在 Docker 里安装 Tomcat

获取tomcat镜像

[root@bigdata ~]# docker pull tomcat

查看镜像

[root@bigdata ~]# docker images

基于镜像新建一个 Tomcat 容器并启动

注意,命令后面的 6408fdc94212是前面拉取的 Tomcat 镜像ID!实践证明,如果用镜像名而不用镜像ID,那么就会自动拉取最新版的镜像使用,而不是刚才手动拉取的 8.5.35 版本的镜像。

[root@bigdata ~]# docker run --name tomcat8080 -v /etc/localtime:/etc/localtime:ro -d -p 8080:8080 6408fdc94212

其中 “-v /etc/localtime:/etc/localtime:ro” 表示让容器使用宿主机的时间时区。

-v 标签为容器添加 volume,后面的 :ro 指定该 volume 为只读。

注意:如果容器中指定的挂载目录存在相同的文件时,会被宿主机覆盖掉。

如果想把 Tomcat 的 webapps 目录也挂载到宿主机目录(比如挂载到 /data/webapps),那么就是下面这样,需要再写个 -v 选项:

# docker run --name tomcat8080 -v /etc/localtime:/etc/localtime:ro -v /data/webapps:/usr/local/tomcat/webapps:rw -d -p 8080:8080 6759d91a032b

这时查看宿主机目录(/data/webapps)是空的,进入容器查看 webapps 目录也是空的,放一个 WAR 包应用到宿主机目录(/data/webapps)下,一会 WAR 包解压生成一个同名的文件夹,说明挂载 webapps 目录成功。

查看容器

[root@bigdata ~]# docker ps

查看宿主机时间

[root@bigdata ~]# date

进入容器查看时间

[root@bigdata ~]# docker  exec -it  tomcat8080   /bin/bash

root@65f385f73a21:/usr/local/tomcat# date

Sun Nov 24 09:29:18 CST 2019

但是 Tomcat 使用的时区还需要单独设置一下,否则部署在 Tomcat 里的工程取到的时间可能不是 Docker 容器的时间。设置很简单,只需在 bin 目录下的 catalina.sh 文件里加上时区即可,如下。

进入容器:

# docker  exec -it  tomcat8080   /bin/bash

进入 bin 目录:

root@054f35167ec5:/usr/local/tomcat# cd bin/

root@054f35167ec5:/usr/local/tomcat/bin# ls

catalina.sh      ......

先备份一下文件 catalina.sh 文件。

因为在容器内不能修改文件,那就把容器文件拷贝到宿主机修改,修改后再拷贝到容器覆盖原文件。

退出容器,把 Tomcat 容器 bin 目录下的 catalina.sh 拷贝到宿主机:

# docker cp tomcat8080:/usr/local/tomcat/bin/catalina.sh ./

在宿主机里编辑 catalina.sh 文件:

打开文件,找到 JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS",在双引号后面加上 “-Duser.timezone=Asia/Shanghai”(当然要与前面内容用空格隔开),修改后是这样的 JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -Duser.timezone=Asia/Shanghai" 。

保存文件,然后再拷贝到容器内:
# docker cp ./catalina.sh tomcat8080:/usr/local/tomcat/bin/
这样就覆盖了容器的原文件,然后重启 Tomcat 或重启容器。

[root@bigdata ~]# docker restart 65f385f73a21

查看运行的 Tomcat 容器

不加 -a 参数只能查看到运行中的容器,加上 -a 参数可以查看所有的容器。举例,如果上面的 Tomcat 容器是退出(Exited)状态,那么就需要加 -a 参数才能看到,如下:

部署Web应用(WAR工程)

1.获取容器的长ID(tomcat8080 是容器名):
# docker inspect -f '{{.Id}}' tomcat8080

65f385f73a210853e4c46c9eba316721e69b89866748146c615ccd575cbd8f54

2.进入容器

进入容器(65f是容器ID的前三位数,当然也可以多写几位,只要 Docker 能唯一识别容器即可):

# docker  exec -it  65f   /bin/bash

执行后直接进入容器,命令提示符由系统的转为容器的了,root@ 后面的“65f385f73a21”是容器ID(短ID),冒号后面的“/usr/local/tomcat”是容器目录,这个目录是 Docker 内的目录不是系统目录。如下:

删除 Tomcat 的 webapps 目录下的所有内容:

退出容器用 exit 命令

开始部署Web应用,很简单就是拷贝WAR包文件到容器中

将要部署的WAR包拷贝到 Tomcat 容器的 webapps 目录下(命令格式是“docker cp 本地文件 容器ID:容器路径”,其中容器ID可以只写长ID的前面几位):

[root@bigdata ~]# docker cp index.html 65f:/usr/local/tomcat/webapps/

进入容器查看拷贝的index.html文件

[root@bigdata ~]# docker cp index.html 65f:/usr/local/tomcat/webapps/

用浏览器访问部署的Web应用

二、部署一个Centos容器并进行远程访问

【-docker开启远程访问-】

建立本机对应centos镜像端口映射

[root@bigdata ~]# docker run -it -d -p 192.168.109.128:5022:22 docker.io/centos:latest /bin/bash

ssh默认的端口为22,将docker中centos的22端口映射到宿主机的5022端口

-d,后台启动

启动并登陆下载好的docker镜像

[root@bigdata ~]# docker exec -it 5f19694acfc9 /bin/bash

安装常用工具

[root@5f19694acfc9 /]# yum install -y openssh-server vim lrzsz wget gcc-c++ pcre pcre-devel zlib zlib-devel ruby openssl openssl-devel patch bash-completion zlib.i686 libstdc++.i686 lsof unzip zip net-tools

service安装

[root@5f19694acfc9 /]# yum install initscripts

ifconfig安装

[root@5f19694acfc9 /]# yum install net-tools.x86_64

ssh安装

开启docker-centos ssh远程连接

需要在安全组打开 5022端口对外访问权限

1. 修改sshd_config 为密码登录

    vim /etc/ssh/sshd_config

    #打开注释 PermitRootLogin yes, 允许密码登录,保存退出

2. 设置root用户密码

passwd root

3. 换个服务器远程登录

    ssh root@宿主机ip -p 5022

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值