博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker-利用Dockerfile来搭建tomcat服务
阅读量:4070 次
发布时间:2019-05-25

本文共 4679 字,大约阅读时间需要 15 分钟。

为什么要用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 内核:
[root@mytest ~]# uname -r3.10.0-693.11.1.el7.x86_64
2.2安装docker
[root@mytest ~]# yum install docker

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

[root@mytest ~]# docker versionClient: Version:         1.12.6 API version:     1.24 Package version: docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64 Go version:      go1.8.3 Git commit:      3e8e77d/1.12.6 Built:           Tue Jan 30 09:17:00 2018 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

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

[root@mytest ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEdocker.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,添加如下内容:

[root@mytest local]# pwd/usr/local[root@mytest local]# vi Dockerfile #使用基础镜像FROM centos#作者信息MAINTAINER shiyu#创建目录RUN mkdir -p /usr/local/jdk1.7.0_79RUN mkdir -p /usr/local/tomcat#把当前目录下的jdk文件夹和tomcat文件夹添加到镜像ADD  jdk1.7.0_79 /usr/local/jdk1.7.0_79ADD  tomcat /usr/local/tomcat#添加环境变量ENV JAVA_HOME /usr/local/jdk1.7.0_79ENV CATALINA_HOME /usr/local/tomcatENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin#暴露端口EXPOSE 8088#启动运行tomcatENTRYPOINT /usr/local/tomcat/bin/startup.sh && tail -f /usr/local/tomcat/logs/catalina.out

2.5 开始构建镜像

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

root@mytest local]# docker build -t shiyu/centos:tomcat-centos --rm=true .Sending build context to Docker daemon  1.79 GBStep 1 : FROM centos ---> 2d194b392dd1Step 2 : MAINTAINER shiyu ---> Running in d2cb90945542 ---> 73b98190bccfRemoving intermediate container d2cb90945542Step 3 : RUN mkdir -p /usr/local/jdk1.7.0_79 ---> Running in 82a2ca78103f ---> 13e0d9446abaRemoving intermediate container 82a2ca78103fStep 4 : RUN mkdir -p /usr/local/tomcat ---> Running in 9212b67923ab ---> 2c3175985ba2Removing intermediate container 9212b67923abStep 5 : ADD jdk1.7.0_79 /usr/local/jdk1.7.0_79 ---> 127ad557b492Removing intermediate container a76726aea89cStep 6 : ADD tomcat /usr/local/tomcat ---> 077971565a12Removing intermediate container 3d683fb7d020Step 7 : ENV JAVA_HOME /usr/local/jdk1.7.0_79 ---> Running in d7b24f8ee544 ---> c20920d0d202Removing intermediate container d7b24f8ee544Step 8 : ENV CATALINA_HOME /usr/local/tomcat ---> Running in a66ed6a00240 ---> 1b1c342c5b57Removing intermediate container a66ed6a00240Step 9 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin ---> Running in 898cffa7afb6 ---> 3d76679ed432Removing intermediate container 898cffa7afb6Step 10 : EXPOSE 8088 ---> Running in 7164b56a9ae4 ---> ef9813039027Removing intermediate container 7164b56a9ae4Step 11 : ENTRYPOINT /usr/local/tomcat/bin/startup.sh && tail -f /usr/local/tomcat/logs/catalina.out ---> Running in 07a5cf4102cb ---> b61b207a5809Removing intermediate container 07a5cf4102cbSuccessfully built b61b207a5809
-t选择指定生成镜像的用户名,仓库名和tag
--rm=true指定在生成镜像过程中删除中间产生的临时容器。

查看新产生的镜像

[root@mytest local]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEshiyu/centos        tomcat-centos       b61b207a5809        28 minutes ago      1.263 GBdocker.io/centos    latest              2d194b392dd1        7 hours ago         195.4 MBdocker.io/centos    7.3.1611            66ee80d59a68        4 months ago        191.8 MB

运行镜像:

[root@mytest local]# docker run -d -p 8090:8088 b61b8578122af71494569649306731592f5e3d41148bbff3792bb94aa40117f5de5c
-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容器的运行状态

[root@mytest local]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES8578122af714        b61b                "/bin/sh -c '/usr/loc"   6 minutes ago       Up 6 minutes        0.0.0.0:8090->8088/tcp   naughty_bartik

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

你可能感兴趣的文章
【leetcode】Candy(python)
查看>>
【leetcode】Sum Root to leaf Numbers
查看>>
【leetcode】Pascal's Triangle II (python)
查看>>
java自定义容器排序的两种方法
查看>>
如何成为编程高手
查看>>
本科生的编程水平到底有多高
查看>>
备忘:java中的递归
查看>>
Solr及Spring-Data-Solr入门学习
查看>>
python_time模块
查看>>
python_configparser(解析ini)
查看>>
selenium学习资料
查看>>
<转>文档视图指针互获
查看>>
从mysql中 导出/导入表及数据
查看>>
HQL语句大全(转)
查看>>
几个常用的Javascript字符串处理函数 spilt(),join(),substring()和indexof()
查看>>
javascript传参字符串 与引号的嵌套调用
查看>>
swiper插件的的使用
查看>>
layui插件的使用
查看>>
JS牛客网编译环境的使用
查看>>
9、VUE面经
查看>>