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. layui基础上的tree菜单动态渲染;

    var layout=[ { title:'脚本对象名称', treeNodes:true, headerClass:'value_col', colClass:'value_col', style: ...

  2. 接口测试脚本之Jsoup解析HTML

    第一次接触jsoup还是在处理收货地址的时候,当时在写一个下单流程,需要省市区id以及详细门牌号等等,因此同事介绍了jsoup,闲来无事,在此闲扯一番! 1.我们来看下,什么是jsoup,先来看看官方 ...

  3. 读CLR via C#笔记

    1.is 和 as 的区别 public class Employee { } a): object obj = new Employee(); if (obj is Employee) { Empl ...

  4. 玩黑客学校CTF

    关卡很简单就不细说.不懂的百度 第一关: 源码: 解密得出为JO 第二关: 很明白,表单问题. </script> <div style = "text-align: ce ...

  5. java模拟http请求上传文件,基于Apache的httpclient

    1.依赖 模拟http端的请求需要依赖Apache的httpclient,需要第三方JSON支持,项目中添加 <dependency> <groupId>org.apache& ...

  6. SWT将系统图标保存为本地文件

    public class SWTImage {     public static void main(String[] args) {         final Display display = ...

  7. Enterprise Architect UML建模

    UML建模 前言 UML建模资料已经很多了,有人想用有人不用,有人会用也有人不会用,本文只是作者的一篇UML建模总结,不想去写太细,因为真正的你去用下,去画下就基本都会了.工具毕竟是工具,设计和思想才 ...

  8. WPF之路——用户控件对比自定义控件UserControl VS CustomControl)

    将多个现有的控件组合成一个可重用的“组”. 由一个XAML文件和一个后台代码文件. 不能使用样式和模板. 继承自UserControl类. 自定义控件(扩展) 在现有的控件上进行扩展,增加一些新的属性 ...

  9. 图像特征点匹配C代码

    #include "opencv2/core/core.hpp" #include "highgui.h" #include "opencv2/img ...

  10. 【ASK】git使用中出现Permission denied (publickey).

    好久没有用git了,今天突然执行了一下 $git submodule update --init --recursive =============================== 结果出现如下提 ...