Docker-利用Dockerfile来搭建tomcat服务

为什么要用Dockerfile?

我们知道下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低。所以就需要一种文件或脚本,我们把想执行的操作以命令的方式写入其中,然后让docker读取并分析、执行,那么重复构建、更新将变得很方便,所以Dockerfile就此诞生了。

常用参数:
FROM命令。用法,FROM <image>:<tag>。FROM命令告诉docker我们构建的镜像是以哪个(发行版)镜像为基础的
RUN命令。用法RUN <command>。RUN 后面接要执行的命令,比如,我们想在镜像中安装vim,只需在Dockfile中写入RUN yum install -y vim
ENV命令。用法,ENV <key> <value>。ENV命令主要用于设置容器运行时的环境变量
ADD命令。用法,ADD <src> <dest>。ADD主要用于将宿主机中的文件添加到镜像中

1.Docker与虚拟机

2.搭建过程

2.1准备宿主机

准备一个 CentOS 7操作系统,具体要求如下:

  • 必须是 64 位操作系统

  • 建议内核在 3.8 以上

通过以下命令查看您的 CentOS 内核:

 
  1. [root@mytest ~]# uname -r

  2. 3.10.0-693.11.1.el7.x86_64

2.2安装docker

[root@mytest ~]# yum install docker

可使用以下命令,查看 Docker 是否安装成功:

 
  1. [root@mytest ~]# docker version

  2. Client:

  3. Version: 1.12.6

  4. API version: 1.24

  5. Package version: docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64

  6. Go version: go1.8.3

  7. Git commit: 3e8e77d/1.12.6

  8. Built: Tue Jan 30 09:17:00 2018

  9. OS/Arch: linux/amd64

若输出了 Docker 的版本号,则说明安装成功了,可通过以下命令启动 Docker 服务:

[root@mytest ~]# systemctl start docker.service

一旦 Docker 服务启动完毕,就可以开始使用 Docker 了。

2.3 下载镜像

以 CentOS 为例,下载一个 CentOS 的镜像:

[root@mytest ~]# docker pull centos:7.3.1611

下载完成后,使用命令查看本地镜像列表:

 
  1. [root@mytest ~]# docker images

  2. REPOSITORY TAG IMAGE ID CREATED SIZE

  3. docker.io/centos 7.3.1611 66ee80d59a68 4 months ago 191.8 MB

2.4 准备我们的jdk和tomcat安装包

  • 创建工作目录:mkdir -p /usr/local

  • 将jdk和tomcat包上传到/usr/local下面,并解压。
  • 在/usr/local 目录下创建Dockerfile,添加如下内容:

 
  1. [root@mytest local]# pwd

  2. /usr/local

  3. [root@mytest local]# vi Dockerfile

  4.  
  5. #使用基础镜像

  6. FROM centos

  7. #作者信息

  8. MAINTAINER shiyu

  9. #创建目录

  10. RUN mkdir -p /usr/local/jdk1.7.0_79

  11. RUN mkdir -p /usr/local/tomcat

  12. #把当前目录下的jdk文件夹和tomcat文件夹添加到镜像

  13. ADD  jdk1.7.0_79 /usr/local/jdk1.7.0_79

  14. ADD  tomcat /usr/local/tomcat

  15. #添加环境变量

  16. ENV JAVA_HOME /usr/local/jdk1.7.0_79

  17. ENV CATALINA_HOME /usr/local/tomcat

  18. ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

  19. #暴露端口

  20. EXPOSE 8088

  21. #启动运行tomcat

  22. ENTRYPOINT /usr/local/tomcat/bin/startup.sh && tail -f /usr/local/tomcat/logs/catalina.out

2.5 开始构建镜像

Dockerfile文件保存之后,利用下面的命令进行构建镜像

 
  1. root@mytest local]# docker build -t shiyu/centos:tomcat-centos --rm=true .

  2. Sending build context to Docker daemon  1.79 GB

  3. Step 1 : FROM centos

  4.  ---> 2d194b392dd1

  5. Step 2 : MAINTAINER shiyu

  6.  ---> Running in d2cb90945542

  7.  ---> 73b98190bccf

  8. Removing intermediate container d2cb90945542

  9. Step 3 : RUN mkdir -p /usr/local/jdk1.7.0_79

  10.  ---> Running in 82a2ca78103f

  11.  ---> 13e0d9446aba

  12. Removing intermediate container 82a2ca78103f

  13. Step 4 : RUN mkdir -p /usr/local/tomcat

  14.  ---> Running in 9212b67923ab

  15.  ---> 2c3175985ba2

  16. Removing intermediate container 9212b67923ab

  17. Step 5 : ADD jdk1.7.0_79 /usr/local/jdk1.7.0_79

  18.  ---> 127ad557b492

  19. Removing intermediate container a76726aea89c

  20. Step 6 : ADD tomcat /usr/local/tomcat

  21.  ---> 077971565a12

  22. Removing intermediate container 3d683fb7d020

  23. Step 7 : ENV JAVA_HOME /usr/local/jdk1.7.0_79

  24.  ---> Running in d7b24f8ee544

  25.  ---> c20920d0d202

  26. Removing intermediate container d7b24f8ee544

  27. Step 8 : ENV CATALINA_HOME /usr/local/tomcat

  28.  ---> Running in a66ed6a00240

  29.  ---> 1b1c342c5b57

  30. Removing intermediate container a66ed6a00240

  31. Step 9 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

  32.  ---> Running in 898cffa7afb6

  33.  ---> 3d76679ed432

  34. Removing intermediate container 898cffa7afb6

  35. Step 10 : EXPOSE 8088

  36.  ---> Running in 7164b56a9ae4

  37.  ---> ef9813039027

  38. Removing intermediate container 7164b56a9ae4

  39. Step 11 : ENTRYPOINT /usr/local/tomcat/bin/startup.sh && tail -f /usr/local/tomcat/logs/catalina.out

  40.  ---> Running in 07a5cf4102cb

  41.  ---> b61b207a5809

  42. Removing intermediate container 07a5cf4102cb

  43. Successfully built b61b207a5809

-t选择指定生成镜像的用户名,仓库名和tag
--rm=true指定在生成镜像过程中删除中间产生的临时容器。

查看新产生的镜像

 
  1. [root@mytest local]# docker images

  2. REPOSITORY TAG IMAGE ID CREATED SIZE

  3. shiyu/centos tomcat-centos b61b207a5809 28 minutes ago 1.263 GB

  4. docker.io/centos latest 2d194b392dd1 7 hours ago 195.4 MB

  5. docker.io/centos 7.3.1611 66ee80d59a68 4 months ago 191.8 MB

运行镜像:

 
  1. [root@mytest local]# docker run -d -p 8090:8088 b61b

  2. 8578122af71494569649306731592f5e3d41148bbff3792bb94aa40117f5de5c

-p指定主机8090端口与容器8088端口进行绑定
-d 指定容器运行后与当前tty分离,后台运行
b61b是镜像的ID前4位


另外还有一种自动映射主机端口的启动方法

[root@mytest local]# docker run -d -p 8088 --name myweb b61

通过  http://宿主机IP:8090,即可看见我们部署的tomcat首页了。

2.6 查看container容器的运行状态

 
  1. [root@mytest local]# docker ps

  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

  3. 8578122af714 b61b "/bin/sh -c '/usr/loc" 6 minutes ago Up 6 minutes 0.0.0.0:8090->8088/tcp naughty_bartik

现在的容器状态为Up, 运行中, 如何停止一个运行中的容器? 运行docker stop命令

猜你喜欢

转载自blog.csdn.net/m18994118189/article/details/81942881