您的位置:首页 > 运维架构 > Docker

Docker部署Apache-tomcat

2018-01-30 15:53 176 查看

Docker部署Apache-tomcat

实验环境:
Centos 7
phpStudy(提供wget 下载以下的两个软件包到Centos)
所需软件包:
jdk-8u11-linux-x64.tar.gz
apache-tomcat-7.0.84.tar.gz
提供下载链接:https://pan.baidu.com/s/1miZh9wO 密码:8d5f

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

我们可开启多个 Docker 容器,而每个 Docker 容器中可运行自己所需的应用程序,Docker 容器之间也是相互隔离的,同样地,都是占用的宿主机的硬件与网络资源。

一、.配置好yum源
可参考:http://blog.51cto.com/12445563/2065914 配置好后进行以下代码

[root@cany ~]# setenforce 0                                       临时关闭selinux
[root@cany ~]# systemctl stop firewalld.service         关闭firewalld防火墙
[root@cany ~]# yum install docker -y                         安装docker
[root@cany ~]# systemctl start docker.service           启动docker服务

二、.下载镜像
搜索可用的docker镜像:docker search name
会从官方搜索匹配到的镜像 也可以去配置国内源 下载相对快些

[root@cany ~]# docker pull centos:latest  下载最新Centos镜像
Trying to pull repository docker.io/library/centos ...
latest: Pulling from docker.io/library/centos
af4b0a2388c6: Pull complete
Digest: sha256:2671f7a3eea36ce43609e9fe7435ade83094291055f1c96d9d1d1d7c0b986a5d
[root@cany ~]# docker images                   看本地所有的镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos       latest              ff426288ea90        2 weeks ago         207.2 MB
docker的镜像并不大 这个最新的才207.2MB

三、.下载两个软件包
先把两个软件包放到phpStudy网站根目录下



[root@cany ~]# mkdir /root/cany           创建存放目录 等等可以挂载到容器里面
[root@cany ~]# cd /root/cany/               把软件包放到这文件夹里面
[root@cany cany]# wget http://10.2.4.144/apache-tomcat-7.0.84.tar.gz --2018-01-29 04:47:43--  http://10.2.4.144/apache-tomcat-7.0.84.tar.gz Connecting to 10.2.4.144:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9032792 (8.6M) [application/x-gzip]
Saving to: ‘apache-tomcat-7.0.84.tar.gz’

100%[==============================================================================================================>] 9,032,792   --.-K/s   in 0.07s

2018-01-29 04:47:43 (125 MB/s) - ‘apache-tomcat-7.0.84.tar.gz’ saved [9032792/9032792]

[root@cany cany]# wget http://10.2.4.144/jdk-8u11-linux-x64.tar.gz --2018-01-29 04:47:58--  http://10.2.4.144/jdk-8u11-linux-x64.tar.gz Connecting to 10.2.4.144:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 159019376 (152M) [application/x-gzip]
Saving to: ‘jdk-8u11-linux-x64.tar.gz’

100%[==============================================================================================================>] 159,019,376 23.2MB/s   in 12s

2018-01-29 04:48:10 (12.5 MB/s) - ‘jdk-8u11-linux-x64.tar.gz’ saved [159019376/159019376]

四、.创建容器
用法:docker run <相关参数> <镜像 ID> <初始命令>

IMAGE ID
docker run -i -t -v /root/cany/:/mnt/cany/ ff426288ea90 /bin/bash

相关参数包括:

-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入其命令行
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
此时使用/bin/bash,表示什么也不做,只需进入命令行即可

五、.安装服务相关环境和软件
搭建apache-tomcat服务需要安装jdk和tomcat (我选择 /opt/目录作为安装目录)
下面的过程均在容器内部进行:

[root@c6a61597a46d /]# cd /mnt/cany/                                  进入挂载的目录
[root@c6a61597a46d cany]# tar -zxf                                      看到了我们下载的两个软件包
apache-tomcat-7.0.84.tar.gz  jdk-8u11-linux-x64.tar.gz
[root@c6a61597a46d cany]# tar -zxf apache-tomcat-7.0.84.tar.gz        进行解压
[root@c6a61597a46d cany]# tar -zxf jdk-8u11-linux-x64.tar.gz
[root@c6a61597a46d cany]# mv apache-tomcat-7.0.84/ /opt/tomcat/   把解压后的文件夹转移到我们选择的安装目录
[root@c6a61597a46d cany]# mv jdk1.8.0_11/ /opt/jdk/

设置环境变量
1.编辑.bashrc文件

[root@c6a61597a46d cany]# vi ~/.bashrc

然后,在该文件末尾添加如下配置:

export JAVA_HOME=/opt/jdk
export PATH=$PATH:$JAVA_HOME




[root@c6a61597a46d cany]# source ~/.bashrc   用source命令让环境变量生效

2.编写容器启动运行脚本
毕竟容器镜像比较小 原生 缺少很多环境 下面来编写脚本
当启动容器时,运行该脚本,启动 Tomcat 具体步骤如下:

[root@c6a61597a46d cany]# vi /root/cany.sh
#!/bin/bash
source ~/.bashrc                                    必须先加载环境变量
sh /opt/tomcat/bin/catalina.sh run          然后使用 Tomcat 的运行脚本来启动
[root@c6a61597a46d cany]# chmod u+x /root/cany.sh   对当前目录下的cany.sh文件的所有者增加可执行权限

以上步骤全部完成后,可使用exit命令,退出容器。

六、创建tomcat镜像
对于刚才的配置我们可以创建一个镜像 方便以后直接利用 或者转移到别的机器上也是可以使用的 具体操作如下:

[root@cany cany]# docker ps              查看正在运行的容器    怎么会没有呢  我们刚才不是已经创建了一个吗?
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@cany cany]# docker ps -a          查看所以容器看看究竟  发现还在
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
c6a61597a46d        ff426288ea90        "/bin/bash"         36 minutes ago      Exited (0) 41 seconds ago                       kickass_hopper

因为刚才使用exit命令退出的容器,此时容器处于停止状态 所以每次进入容器修改东西后出来一定要记得去开启容器

记住以上CONTAINER ID(容器 ID),等等我们通过该容器,创建一个可运行tomcat的镜像。

相关命令如下:

docker stop  <容器名or ID>          停止某个容器
docker start  <容器名or ID>          启动某个容器
docker kill    <容器名or ID>           杀掉某个容器
docker rm    <容器名or ID>           删除某个容器
docker rmi IMAGE                        删除镜像
docker ps -a -q                             查看所有容器ID
docker rm $(docker ps -a -q)        删除所有的容器:
docker attach <容器名or ID>        attach到运行中的容器

把我们刚才配置好的做一个新的镜像

[root@cany ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
c6a61597a46d        ff426288ea90        "/bin/bash"         58 minutes ago      Exited (0) 5 minutes ago                       kickass_hopper

[root@cany ~]# docker commit c6a61597a46d cany/tomcat:0.1
sha256:7cbbe3742372edc2a19ba37ea5684a573c92d2e08be437a9d6028688371b5152

[root@cany ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
cany/tomcat         0.1                 7cbbe3742372        18 seconds ago      544.9 MB
docker.io/centos    latest              ff426288ea90        2 weeks ago         207.2 MB

看到了吗? 镜像名为cany/tomcat

七、启动tomcat镜像容器
与上次启动容器不同的是,我们现在不再进入容器的命令行,而是直接启动容器内部的 Tomcat 服务

[root@cany ~]# docker run -d -p 80:8080 --name web cany/tomcat:0.1 /root/cany.sh
401ddf6c97128e377df9ae8f3992ef2b065d053475387e1fac6f49e2b7390414
[root@cany ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
401ddf6c9712        cany/tomcat:0.1     "/root/cany.sh"     32 seconds ago      Up 29 seconds       0.0.0.0:80->8080/tcp   web

-d:表示以“守护模式”执行/root/cany.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。
-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 80 端口,这样就向外界暴露了 80 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
--name:表示容器名称,用一个有意义的名称命名即可。

Docker网桥:通过宿主机 IP 地址与端口号来映射容器内部的 IP 地址与端口号

八、测试

http://10.2.4.88/   这里使用的是宿主机的 IP 地址 容器的8080端口映射到了80端口 因为http默认是80 所以不需要打端口 直接访问




怎么是hello cany ?
答:因为我去了/opt/tomcat/webapps/ROOT 目录 删掉了全部文件 创建了index.html 不过你们可以忽略此步 所以我就没写在上面了

总结:当我开始了解docker的时候就去网上查阅其他大神的文章 发现挺多讲的不是很全 也没有提供相关软件包 综合所查阅到的资料 终于做通了这个实验 并上传了我个人实验的软件包 希望此文章能帮助到刚入门docker的朋友们!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Docker linux apache