慧9建 发表于 2018-5-26 10:37:17

Docker部署Apache

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 配置好后进行以下代码

# setenforce 0                                       临时关闭selinux
# systemctl stop firewalld.service         关闭firewalld防火墙
# yum install docker -y                         安装docker
# systemctl start docker.service         启动docker服务
  二、.下载镜像
搜索可用的docker镜像:docker search name
会从官方搜索匹配到的镜像 也可以去配置国内源 下载相对快些

# 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
# docker images                   看本地所有的镜像
REPOSITORY          TAG               IMAGE ID            CREATED             SIZE
docker.io/centos       latest            ff426288ea90      2 weeks ago         207.2 MB
docker的镜像并不大 这个最新的才207.2MB
  三、.下载两个软件包
先把两个软件包放到phpStudy网站根目录下


# mkdir /root/cany         创建存放目录 等等可以挂载到容器里面
# cd /root/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)
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
# 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)
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
  四、.创建容器
用法: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/目录作为安装目录)
下面的过程均在容器内部进行:

# cd /mnt/cany/                                  进入挂载的目录
# tar -zxf                                    看到了我们下载的两个软件包
apache-tomcat-7.0.84.tar.gzjdk-8u11-linux-x64.tar.gz         
# tar -zxf apache-tomcat-7.0.84.tar.gz      进行解压
# tar -zxf jdk-8u11-linux-x64.tar.gz         
# mv apache-tomcat-7.0.84/ /opt/tomcat/   把解压后的文件夹转移到我们选择的安装目录
# mv jdk1.8.0_11/ /opt/jdk/
  设置环境变量
1.编辑.bashrc文件

# vi ~/.bashrc
  然后,在该文件末尾添加如下配置:

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


# source ~/.bashrc   用source命令让环境变量生效
  2.编写容器启动运行脚本
毕竟容器镜像比较小 原生 缺少很多环境 下面来编写脚本
当启动容器时,运行该脚本,启动 Tomcat具体步骤如下:

# vi /root/cany.sh
#!/bin/bash
source ~/.bashrc                                    必须先加载环境变量
sh /opt/tomcat/bin/catalina.sh run          然后使用 Tomcat 的运行脚本来启动
# chmod u+x /root/cany.sh   对当前目录下的cany.sh文件的所有者增加可执行权限
  以上步骤全部完成后,可使用exit命令,退出容器。
  六、创建tomcat镜像
对于刚才的配置我们可以创建一个镜像 方便以后直接利用 或者转移到别的机器上也是可以使用的 具体操作如下:

# docker ps            查看正在运行的容器    怎么会没有呢我们刚才不是已经创建了一个吗?
CONTAINER ID      IMAGE               COMMAND             CREATED             STATUS            PORTS               NAMES
# 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到运行中的容器
  把我们刚才配置好的做一个新的镜像

# 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
# docker commit c6a61597a46d cany/tomcat:0.1
sha256:7cbbe3742372edc2a19ba37ea5684a573c92d2e08be437a9d6028688371b5152
# 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 服务

# docker run -d -p 80:8080 --name web cany/tomcat:0.1 /root/cany.sh
401ddf6c97128e377df9ae8f3992ef2b065d053475387e1fac6f49e2b7390414
# 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的朋友们!!!
页: [1]
查看完整版本: Docker部署Apache