Docker 概述:

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

常用参数:

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

基于 dockerfile 制作 tomcat 镜像

  • 首先建一个目录构建我们的环境。
1
2
[root@localhost ~]# mkdir tomcat_centos
[root@localhost ~]# cd tomcat_centos
  • 上传 tomcat 和 jdk 到该目录下。
1
2
[root@localhost tomcat_centos]# ls
apache-tomcat-7.0.54.tar.gz jdk-7u65-linux-x64.tar.gz
  • 编辑 Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost tomcat_centos]# vim Dockerfile
FROM centos:1
MAINTAINER from bistros <bistros@163.com>
#copy jdk and tomcat into image
ADD ./apache-tomcat-7.0.54.tar.gz /root
ADD ./jdk-7u65-linux-x64.tar.gz /root
#set environment variable
ENV JAVA_HOME /root/jdk1.7.0_65
ENV PATH $JAVA_HOME/bin:$PATH
#define entry point which will be run first when the container starts up
ENTRYPOINT /root/apache-tomcat-7.0.54/bin/startup.sh && tail -F /root/apache-tomcat-
7.0.54/logs/catalina.out
  • 构建镜像
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@localhost tomcat_centos]# docker build -t bistros/tomcat:centos .
Sending build context to Docker daemon 151.3 MB
Step 1 : FROM centos:1
---> 4a7667a30862
Step 2 : MAINTAINER from b 大专栏  基于Dockerfile制作tomcat镜像istros <bistros@163.com>
---> Running in 68bf1a959d26
---> fcf74efba621
Removing intermediate container 68bf1a959d26
Step 3 : ADD ./apache-tomcat-7.0.54.tar.gz /root
---> 66cddab1de86
Removing intermediate container f0b727f5be51
Step 4 : ADD ./jdk-7u65-linux-x64.tar.gz /root
---> e5bb29fe10f6
Removing intermediate container b26f642c67ac
Step 5 : ENV JAVA_HOME /root/jdk1.7.0_65
---> Running in dfd83d97c8ed
---> e434fbfdf162
Removing intermediate container dfd83d97c8ed
Step 6 : ENV PATH $JAVA_HOME/bin:$PATH
---> Running in 2233e413bb0d
---> 6a2c544ad3c2
Removing intermediate container 2233e413bb0d
Step 7 : ENTRYPOINT /root/apache-tomcat-7.0.54/bin/startup.sh && tail -F /root/apache-tomcat-
7.0.54/logs/catalina.out
---> Running in 8d58b19e8ad7
---> c0c55ad98c79
Removing intermediate container 8d58b19e8ad7
Successfully built c0c55ad98c79
  • -t 选择指定生成镜像的用户名,仓库名和 tag
  • –rm=true 指定在生成镜像过程中删除中间产生的临时容器。

查看新产生的镜像

1
2
3
[root@localhost tomcat_centos]# docker images bistros/tomcat:centos
REPOSITORY TAG IMAGE ID CREATED SIZE
bistros/tomcat centos c0c55ad98c79 About a minute ago 502.7 MB

运行镜像

  • 手动映射主机端口启动
1
2
3
4
5
6
7
8
[root@localhost tomcat_centos]# docker run -d -p 8090:8080 bistros/tomcat:centos
65a0f0910f174132e009ca686b283c0dc58df0dd3000c144cd4c175f2078de37
[root@localhost tomcat_centos]# docker ps -a
CONTAINER ID IMAGE COMMAND
CREATED STATUS PORTS
NAMES5 / 5
65a0f0910f17 bistros/tomcat:centos "/bin/sh -c '/root/ap" 50 seconds ago
Up 48 seconds 0.0.0.0:8090->8080/tcp pensive_kare
  • -p 指定主机 80 端口与容器 8080 端口进行绑定
  • -d 指定容器运行后与当前 tty 分离,后台运行
  • 65a0 是镜像的 ID 前 4 位。

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

  • 自动映射主机端口的启动
1
2
3
4
5
6
7
8
9
[root@localhost tomcat_centos]# docker run -d -p 8080 --name tomcat
bistros/tomcat:centos
2f20477608f8d335a3424acd6f54ad5900db86bdbf48af2ea2777159a7646566
[root@localhost tomcat_centos]# docker ps -a
CONTAINER ID IMAGE COMMAND
CREATED STATUS PORTS
NAMES
2f20477608f8 bistros/tomcat:centos "/bin/sh -c '/root/ap" 8 seconds ago
Up 6 seconds 0.0.0.0:32768->8080/tcp tomcat

这样就要通过 http://宿主机 IP:32768 访问了。

基于Dockerfile制作tomcat镜像的更多相关文章

  1. Docker系列(24)- 实战:DockerFile制作tomcat镜像

    实战:DockerFile制作tomcat镜像 step-1 准备镜像文件 tomcat压缩包,jdk压缩包! step-2 编写dockerfile文件,官方命名Dockerfile,build会自 ...

  2. dockerfile:制作tomcat镜像+javaweb

    FROM ubuntu:14.10 MAINTAINER linx #把java与tomcat添加到容器中,Add会解压 ADD jdk-8u151-linux-x64.tar.gz /usr/loc ...

  3. Docker之dockerfile制作jdk镜像

    目的: Dockerfile简介 Dockerfile制作jdk镜像 Dockerfile简介 了解dockerfile之前要先了解Docker基本概念和使用可参考:https://www.cnblo ...

  4. dockerfile构建Tomcat镜像

    dockerfile构建Tomcat镜像 一.镜像分层概念 二.制作tomcat镜像 2.1.创建分层目录 [root@node2 ~]# mkdir /app/{web/{nginx,tomcat, ...

  5. 实战docker,编写Dockerfile定制tomcat镜像,实现web应用在线部署

    最初在tomcat上部署web应用的方式,是通过maven的maven-compiler-plugin插件先打成war包,再将war包复制到tomcat的webapps目录下,后来用上了tomcat7 ...

  6. Docker | 制作tomcat镜像并部署项目

    本文讲解如何制作自己的tomcat镜像,并使用tomcat部署项目 原料准备: tomcat.jdk安装包,dockerfile文件 步骤 1.准备压缩包 jdk-8u301-linux-x64.ta ...

  7. Dockerfile制作自定义镜像

    本文介绍最精简的Dockerfile文件构建镜像,Docker启动的时候可以启动一个shell脚本 1.首先编写Dockerfile文件 说明 1.启动的这个shell脚本一定是不退出的,比如服务器的 ...

  8. Docker 使用Dockerfile构建tomcat镜像

    Dockerfile概念: 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么之前提及的无法重复的问题. ...

  9. 如何使用Dockerfile构建Tomcat镜像并部署war

    我们都知道Docker构建一个镜像有两种方式: 使用`docker commit`命令 使用`Dockerfile`文件和`docker build`命令 那么这两种方式有何区别呢? 相同点:底层实现 ...

随机推荐

  1. 生产事故(MongoDB数据分布不均解决方案)

    可以很明显可以看到我们这个集合的数据严重分布不均匀. 一共有8个分片,面对这个情况我首先想到的是手动拆分数据块,但这不是解决此问题的根本办法. 造成此次生产事故的首要原因就是片键选择上的问题,由于片键 ...

  2. 第3章 ZooKeeper基本数据模型

    第3章 ZooKeeper基本数据模型 3-1 zk数据模型介绍 3-2 zk客户端连接关闭服务端,查看znode ./zkCli.sh Ctrl + C 退出 =================== ...

  3. UML-如何画SSD?

    1.SSD来自哪里?答:用例文本 2.如何为系统事件和操作命名? 3.SSD中的哪些需要放到词汇表中? SSD元素包含 1).操作名称 2).参数 3).返回数据 这些元素,必须要简洁.但别人可能不太 ...

  4. SaltStack中状态间关系unless、onlyif、require、require_in、watch、watch_in

    1.unless 检查的命令,仅当unless选项指向的命令返回值为false时才执行name定义的命令 cmd.run: {% "] %} - name: 'nohup sh /alida ...

  5. epoll——IO多路复用选择器

    上上篇博客讲的套接字,由于其阻塞性而导致一个服务端同一时间只能与一个客户端连接.基于这个缺点,在上篇博客我们将其设置为非阻塞实现了一个服务端同一时间可以与多个客户端相连,即实现了并发,但其同样留下了一 ...

  6. nginx出现No input file specified.

    在lnmp上调试php项目,之前已经在上面测试过tp5框架,可以正常访问.但新项目由于项目中有些路径是写固定路径的.为了不去修改代码.配置新项目的时候,为新项目设置新的目录.问题就出现了,网页提示   ...

  7. 小白学习之pytorch框架(2)-动手学深度学习(begin-random.shuffle()、torch.index_select()、nn.Module、nn.Sequential())

    在这向大家推荐一本书-花书-动手学深度学习pytorch版,原书用的深度学习框架是MXNet,这个框架经过Gluon重新再封装,使用风格非常接近pytorch,但是由于pytorch越来越火,个人又比 ...

  8. Java创建文件夹、创建文件、上传文件,下载文件

    1.创建文件夹 /** * 判断文件夹是否存在 * @param myPath */ public static void judeDirExists(File myPath) { if (!myPa ...

  9. PAT甲级——1108.Finding Average (20分)

    The basic task is simple: given N real numbers, you are supposed to calculate their average. But wha ...

  10. random mating

    随机交配种群 孟德尔分离(基于diploid and sexual)和随机交配(1.不因突变而改变的规律2.可计算的)是群体遗传学的基础. 随机交配(random mating)指群体中每一个成员与另 ...