1. 安装docker

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

yum -y install docker-io​

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

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

service docker start

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

2. 下载镜像​

我们不妨还是以 CentOS 为例,通过以下步骤,下载一个 CentOS 的镜像。

首先,访问 Docker 中文网,在首页中搜索名为“centos”的镜像,在搜索的结果中,有一个“官方镜像”,它就是我们所需的。

然后,进入 CentOS 官方镜像页面,在“Pull this repository”输入框中,有一段命令,把它复制下来,在自己的命令行上运行该命令,随后将立即下载该镜像。​

[root@host-10-1-251-62 ~]# docker pull centos:6

最后,使用以下命令查看本地所有的镜像:​

[root@host-10-1-251-62 ~]# docker images

可以查看到如下信息:

如果看到以上输出,说明您可以使用“centos”这个镜像了,或将其称为仓库(Repository),该镜像有一个名为“6”的标签(Tag),此外还有一个名为“2f96ee8baf17”的镜像 ID(可能您所看到的镜像 ID 与此处的不一致,那是正常现象,因为这个数字是随机生成的)。现在镜像已经有了,我们下面就需要使用该镜像,来制作(jdk+tomcat)基础镜像。

3. 准备JDK+TOMCAT软件

​​我下载了apache-tomcat-7.0.68.tar.gz和jdk-7u79-linux-x64.tar.gz,存储于宿主机(Linux机器的本地目录/home/crmtest/MCC/ljj/下)。为了制作时更加快捷,我直接在本地解压了两个软件,并将目录名字吻别重命名为jdk和tomcat。

4. 编写Dockerfile文件​​

#---------------------------------------------------------------------

#This is a comment注释

#使用基础镜像centos:6

FROM centos:6
#指定镜像创建者信息

MAINTAINER lijj3 <<A href="mailto:lijj3@asiainfo.com">lijj3@asiainfo.com>

#切换镜像的目录,进入/usr目录(基础镜像是一个linux系统,可参照linux查看相应目录)
WORKDIR /usr

#在/usr/下创建java目录,用来存放jdk
RUN mkdir java

#切换镜像的目录至/usr/java
WORKDIR /usr/java

#在/usr/java下创建jdk目录,用来存放jdk文件
RUN mkdir jdk

#切换镜像的目录至/usr/java/jdk
WORKDIR /usr/java/jdk

#将宿主机的jdk目录下的全部文件考入至镜像的/usr/java/jdk目录下
ADD jdk /usr/java/jdk

#切换镜像的目录至/opt
WORKDIR /opt

#在/opt下创建tomcat目录,用来存放tomcat文件
RUN mkdir tomcat

#将宿主机的tomcat目录下的全部文件考入至镜像的/opt/tomcat目录下
ADD tomcat /opt/tomcat

#设置环境变量

ENV JAVA_HOME=/usr/java/jdk
ENV JAVA_BIN=/usr/java/jdk/bin
ENV PATH=$PATH:$JAVA_HOME/bin
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

#设置容器启动时执行的操作

CMD /opt/tomcat/bin/catalina.sh run

#---------------------------------------------------------------------

以上就是Dockerfile文件的内容,将该文件存入宿主机当前目录/home/crmtest/MCC/ljj/下,与jdk,tomcat同目录。

5. 制作镜像

使用命令:docker build -t centos_jdk7_tomcat7_ljj:latest .

其中centos_jdk7_tomcat7_ljj为镜像名称,latest为镜像tag。

[root@host-10-1-251-62 ~]# docker build -t centos_jdk7_tomcat7_ljj:latest .

制作成功后,查看镜像:docker images

6.启动容器

使用命令:docker run -d -p 5050:8080 centos_jdk7_tomcat7_ljj:latest

[root@host-10-1-251-62 ~]# docker run -d -p 5050:8080 centos_jdk7_tomcat7_ljj:latest

注意:这里使用的是宿主机的 IP 地址,与对外暴露的端口号 5050,它映射容器内部的端口号 8080。

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

7. 登录tomcat网站

在浏览器中,输入以下地址,即可访问 Tomcat 首页:
http://10.1.251.62:5050/

docker镜像制作---jdk7+tomcat7基础镜像的更多相关文章

  1. 使用Dockerfile文件制作centos6.8基础镜像,基于centos基础镜像的ssh远程登录镜像,jdk1.8镜像,tomcat镜像,elasticsearch镜像等等

    一.首先制作一个centos6.8的裸机镜像 创建一个干净的目录: [root@docker centos6.]# ls c68-docker.tar.xz Dockerfile Dockerfile ...

  2. docker中如何制作自己的基础镜像

    一.本地镜像 举个例子:现在把自己的开发环境打包,取名为centos6-base.tar,然后在docker中,以centos6-base.tar作为基准镜像. 1.创建自己的镜像,放置于/root目 ...

  3. Docker制作私有的基础镜像

    debootstrap是debian/ubuntu下的一个工具,用来构建一套基本的系统(根文件系统).生成的目录符合Linux文件系统标准(FHS),即包含了/boot./etc./bin./usr等 ...

  4. 从零开始构建一个centos+jdk7+tomcat7的docker镜像文件

    从零开始构建一个centos+jdk7+tomcat7的镜像文件 centos7系统下docker运行环境的搭建 准备centos基础镜像 docker pull centos 或者直接下载我准备好的 ...

  5. Docker制作基础镜像

    Docker镜像制作 方式一:手动运行一个容器,做好所有配置,然后把容器提交成一个镜像 方式二:使用DockerFile 示例1:做一个yum安装的nginx镜像 - 运行并进入一个centos容器: ...

  6. Docker 镜像制作教程:针对不同语言的精简策略

    本系列文章将分为三个部分: 第一部分着重介绍多阶段构建(multi-stage builds),因为这是镜像精简之路至关重要的一环.在这部分内容中,我会解释静态链接和动态链接的区别,它们对镜像带来的影 ...

  7. Docker如何制作镜像-Dockerfile的使用

    1:什么是Dockerfile Dockerfile是一个文本文档,可以通过docker build 命令构建成一个镜像. 我们可以在Dockerfile中定义一系列的命令,构建出我们想要的镜像. 想 ...

  8. 使用 febootstrap 制作自定义基础镜像

    转载自:https://cloud.tencent.com/developer/article/1454524 文章目录1.febootstrap 介绍2.环境.软件准备3.febootstrap 安 ...

  9. alpine制作jdk、jre镜像、自定义镜像上传阿里云

    alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBo ...

随机推荐

  1. AdapterView 和 RecyclerView 的连续滚动

    AdapterView 和 RecyclerView 的连续滚动 android RecyclerView tutorial 概述 ListView 和 GridView 的实现方式 Recycler ...

  2. hdu6038 Function 函数映射

    /** 题目:hdu6038 Function 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6038 题意:给定一个a排列[0,n-1],一个b排列[0, ...

  3. MapReduce实战(一)自定义类型

    需求: 处理以下流量数据,第1列是手机号,第7列是上行流量,第8列是下行流量.将手机号一样的用户进行合并,上行流量汇总,下行流量也汇总,并相加求得总流量. 1363157985066 13726230 ...

  4. 微信小程序动态显示项目倒计时效果

    效果: wxml代码: <view class='spellNum'> <view> <text style='color: #fff;'>团长</text& ...

  5. 【Python】分享使用的插件文件链接(实时更新)

    链接:https://pan.baidu.com/s/1o7AgHtw Python工具实时更新.

  6. Linux上创建SSH隧道

    Win上有好用的Xshell,可以做SSH隧道,但是Linux没有很好用的工具,本来gSTM还可以,但是死活装不上,也很久没更新了. 但其实,Linux上直接使用ssh命令就可以创建SSH隧道,非常方 ...

  7. 11 jsp脚本调用java代码

    大多数情况下, jsp 文档的大部分由静态文本(html)构成, 为处理该页面而创建的 servlet 只是将它们原封不动的传递给客户端, 原封不动的传送给客户端有两个小例外: 1. 如果想传送 &l ...

  8. Android将指定的.class打包到mainDex中

    1️⃣ 我们分包的时候会遇到一个问题,因为加载和初始化的问题,如果某个类不在mainDex中,那么程序就会报错,java.lang.NoClassDefFoundError. 2️⃣ 在gradle中 ...

  9. vue-cli 打包(npm run build) 出现 ERROR in xx..js from UglifyJs Unexpected token: punc (()

    之前打包还没问题,这次就报错了,后来发现原来是少了 .babelrc 文件, 网上找了好多方法都不行,后来看了之前的项目,原来是少了 .babelrc  文件, 只要在根目录下建立这个文件, 文件内容 ...

  10. 【SR】论文资源相关

    1. Anchored Neighborhood Regression for Fast Example-Based Super-Resolution Radu Timofte, Vincent De ...