创建Docker镜像

[info]构建Docker镜像的一般过程是首先创建一个容器,

并在容器里修改镜像,配置相关环境等,最后将修改提交为一个新镜像。

下载制作镜像的系统

root@ubuntu:/home/guanfuchang# docker pull ubuntu

下载完成后,本地多了一个ubuntu系统镜像如下:

root@ubuntu:/home/guanfuchang# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest ea4c82dcd15a 4 weeks ago 85.8MB
...

启动容器并修改镜像

创建启动容器ubuntu:latest,并将本地目录挂载到容器中

docker run -i -t -v /data/software/:/data/software ubuntu:latest /bin/bash

参数说明:

-i:表示以“交互模式”运行容器

-t:表示容器启动后会进入其命令行

-v:表示需要将本地哪个目录挂载到容器中

在容器中安装JDK,Tomcat

  1. 将安装介质上传到宿主主机目录/data/software 中,然后进入容器

    安装介质JDK链接:https://pan.baidu.com/s/1nXiJ18HUBbnPC3IdMNi46g 密码:2phd

    安装介质Tomcat链接:https://pan.baidu.com/s/1GVJria7QjzvwSCZHBFdloQ 密码:q3c0

    启动容器,然后进入容器(进入容器前,需先将容器运行起来)
root@ubuntu:/data/software# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ddeb33467e9e ubuntu:latest "/bin/bash" 2 hours ago Exited (127) 24 minutes ago xenodochial_keller
root@ubuntu:/data/software#
root@ubuntu:/data/software# docker start ddeb33467e9e
ddeb33467e9e
root@ubuntu:/data/software# docker attach ddeb33467e9e
root@ddeb33467e9e:/#

查看/data/software中是否已经同步了安装介质。

root@ddeb33467e9e:/# cd /data/software/
root@ddeb33467e9e:/data/software# ls
apache-tomcat-9.0.13.tar.gz jdk-8u191-linux-x64.tar.gz
  1. 将JDK和Tomcat 安装到/data 目录下
root@ddeb33467e9e:/data/software# tar -zxvf jdk-8u191-linux-x64.tar.gz -C /data/
root@ddeb33467e9e:/data/software# tar -zxvf apache-tomcat-9.0.13.tar.gz -C /data/
root@ddeb33467e9e:/data/software#
root@ddeb33467e9e:/data/software# cd ..
root@ddeb33467e9e:/data# mv jdk1.8.0_191 jdk
root@ddeb33467e9e:/data# mv apache-tomcat-9.0.13 tomcat
root@ddeb33467e9e:/data# ls
jdk software tomcat
  1. 修改环境变量,将下面的配置添加到 /etc/profile 的最后面
#set java environment
export JAVA_HOME=/data/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:{JRE_HOME}/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH export CATALINA_HOME=/data/tomcat
export CATALINA_BASE=/data/tomcat

[warning]容器内如果vim命令无法使用,需先安装,安装如下:

root@ddeb33467e9e:/data# apt update

root@ddeb33467e9e:/data# apt install vim

修改后,使配置立即生效

root@ddeb33467e9e:/data# source /etc/profile

检查java配置是否生效

root@ddeb33467e9e:/# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

编写启动脚本

root@ddeb33467e9e:/# vim /data/start.sh

脚本如下:

#!/bin/bash
# Export environment variable
source /etc/profile
# Start tomcat
bash /data/tomcat/bin/catalina.sh run

授权启动脚本

root@ddeb33467e9e:/# chmod u+x /data/start.sh

制作镜像

查看容器,获取容器ID

root@ubuntu:/data/software# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ddeb33467e9e ubuntu:latest "/bin/bash" About an hour ago Exited (127) 6 seconds ago xenodochial_keller

制作镜像

root@ubuntu:/data/software# docker commit ddeb33467e9e mt/mytomcatdemo:1.0

查看镜像是否已经安装成功

root@ubuntu:/data/software# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mt/mytomcatdemo 1.0 a65637693626 41 seconds ago 580MB

创建并运行容器,指定宿主端口18080

root@ubuntu:/data/software# docker run -d -p 18080:8080 --name tomcatdemo mt/mytomcatdemo:1.0 /data/start.sh
96f03a0e009e706b213583a1408153f8c26314a1d6776204f9b1a6798ed313a7

查看容器是否已经在运行

root@ubuntu:/data/software# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
96f03a0e009e mt/mytomcatdemo:1.0 "/data/start.sh" 10 seconds ago Up 10 seconds 0.0.0.0:18080->8080/tcp tomcatdemo

访问宿主ip:端口,如:http://192.168.147.128:18080/ 访问如下即说明镜像制作成功,成功运行。


:-:

微信扫一扫,关注“python测试开发圈”,了解更多测试教程!

Docker10-实战-构建Java Web运行环境的更多相关文章

  1. 使用Eclipse+Maven+Jetty构建Java Web开发环境(几个教程综合集成2014发行)

    工作需要使用Jetty由于web集装箱,得知Eclipse+Maven+Jetty该组合是非常好的,因此,要在网上找了很多教程,但不写或多或少特定的或过时的内容而导致最终的配置失败,易于配置为未来的同 ...

  2. Docker搭建Java Web运行环境

    1. 前提条件 安装了Docker的64位Linux 操作系统 Linux操作系统镜像 Linux版本的JDK压缩包 Linux版本的Tomcat压缩包 2. 启动容器 容器是在镜像的基础上来运行的, ...

  3. 使用 Docker 搭建 Java Web 运行环境

    黄勇的博客 Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种“轻量级”容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公司开始逐 ...

  4. 转:使用 Docker 搭建 Java Web 运行环境

    原文来自于:http://www.codeceo.com/article/docker-java-web-runtime.html Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都 ...

  5. 使用 Docker 搭建 Java Web 运行环境(转)

    原文 http://www.importnew.com/21798.html Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种“轻量级”容器技术,它几 ...

  6. 用Eclipse+Maven+Jetty构建Java Web开发环境(详细笔记)

    (软件环境) 『系统』Windows 10 x64 『JAVA』JDK 1.8.0_91 『Eclipse』 Eclipse-oxygen 『Maven』 apache-maven-3.6.3 『Je ...

  7. 使用Docker搭建Java Web运行环境

    这周末体验了一下挺火的Docker技术,记录学习笔记. >Docker是干什么的 Docker 是一个基于Linux容器(LXC-linux container)的高级容器引擎,基于go语言开发 ...

  8. Ubuntu14.04环境下java web运行环境搭建

    1.jdk安装 将下载好的安装包上传至/home目录解压 tar -zxvf jdk-8u71-linux-x64.tar.gz 执行 vim /etc/profile 在末尾添加java环境变量(J ...

  9. docker 搭建 Java Web 运行环境

    安装环境:jdk,tomcat,mysql,nginx

随机推荐

  1. C++各大有名库的介绍——网络通信

    ACE是C++库的代表,超重量级的网络通信开发框架.ACE自适配通信环境(Adaptive Communication Environment)是可以自由使用.开放源代码的面向对象框架,在其中实现了许 ...

  2. 第10组 Beta冲刺(3/4)

    队名:凹凸曼 组长博客 作业博客 组员实践情况 童景霖 过去两天完成了哪些任务 文字/口头描述 继续学习Android studio和Java 制作剩余界面前端 展示GitHub当日代码/文档签入记录 ...

  3. 【BigData】Java基础_switch语句

    语法 switch(表达式) { case x: // 代码块 break; case y: // 代码块 break; default: // 代码块 } switch语句是这样工作的: switc ...

  4. 使用dozer将DTO转化为DO

    DTO,就是Data Transfer Object,数据传输对象,可以简单理解成请求中的对象. PO,就是Persistant Object,持久化对象,它跟持久层(通常是关系型数据库)的数据结构形 ...

  5. 【技术博客】移动端的点击事件与Sticky Hover问题

    目录 移动端的点击事件与Sticky Hover问题 TL;DR 前言 问题描述 背景 实现方式 问题 关于移动端浏览器的点击事件 初次发现问题后各种解决尝试:从点击事件本身下手 cursor: po ...

  6. python 字典转成对象

    database = { "key1": { 'period':999, "data": { 'a':1, 'b':2, } }, "key2&quo ...

  7. Union 与 Union All 区别(抄的W3C School的,抄一遍就记住了!)

    Union ,UnionAll 俩都是用来合并两个或以上的查询结果集: Union操作符 :select语句中必须有相同的数列 (相等数量的列,不同结果集同一列的数据类型一致,列的顺序必须相同): u ...

  8. 前端与算法 leetcode 242. 有效的字母异位词

    目录 # 前端与算法 leetcode 242. 有效的字母异位词 题目描述 概要 提示 解析 解法一:哈希表 解法二:数组判断字符出现次数 解法三:转换字符串 算法 传入测试用例的运行结果 执行结果 ...

  9. ElasticSearch 线程池类型分析之SizeBlockingQueue

    ElasticSearch 线程池类型分析之SizeBlockingQueue 尽管前面写好几篇ES线程池分析的文章(见文末参考链接),但都不太满意.但从ES的线程池中了解到了不少JAVA线程池的使用 ...

  10. Effective.Java第67-77条(异常相关)

    67.  明智审慎地进行优化 有三条优化的格言是每个人都应该知道的: (1)比起其他任何单一的原因(包括盲目的愚钝),很多计算上的过失都被归咎于效率(不一定能实现) (2)不要去计算效率上的一些小小的 ...