ubuntu使用docker安装jdk和tomcat (一)

2023-11-10

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。 来自大多数文章的介绍。

系统环境:ubuntu

1.首先我们先在我们的系统安装docker

sudo apt-get update  先更新一下

sudo apt-get install docker.io  执行安装

安装完成后

sudo service docker start 启动服务

相当我们安装好了一个虚拟机咯。但是我们虚拟机需要安装操作系统吧,这就叫是镜像,用来安装操作系统文件系统。

这是我的个人定义。

所以我们查看我们docker的镜像

docker images 

我们刚安装完,是没有镜像的哈

接下来我们去找镜像吧。

镜像可以去找开源的,也可以我们自己制作哦。

我们可以去Docker Hub 下载公共镜像,或者去阿里云https://dev.aliyun.com/search.html

这是已经做好的镜像了。

docker pull java 我们下载一个包含java环境的镜像

下载完成后我们再看下docker images  列出系统的镜像文件


我们使用刚下载的镜像运行命令:

docker run -i -t java /bin/bash

这时我们就进入了容器系统了哦,这时候操作是容器里的系统文件哦。

当你输入 Exit 命令退出容器时,容器也是停止运行,如果你想容器在后台运行需要在命令后面添加 -d 参数。

常用命令:

查看所有的容器:

docker ps -a


查看所有在运行的容器:

docker ps


删除镜像
docker rmi [ID]


删除容器
docker rm [ID]


启动一个容器:

docker start 容器名或ID


停止一个在运行的容器:

docker stop 容器名或ID


重命名容器名称:

docker rename  原容器名  新容器名


登录指定容器

docker exec -it 容器名 /bin/bash

进入容器我们查入 java -version发现我们JAVA环境已经安装好了。因为我们这个镜像已经包含了JAVA的运行环境了。

我们一个假设发布一个网站到tomcat吧。

那我们还需要安装一个tomcat到容器里吧。

我们复制一个tomcat到我们的容器里,运行如下命令:

docker cp [宿主机路径] [容器名称]:[容器路径]

然后通过命令:
docker run -d -p 8080:8080 -v /root/webapps/:/data/apache-tomcat-7.0.77/webapps/ --name mytomcat_2 mytomcat /root/run.sh

我们来说下这些参数。。

docker run运行容器

-d 在后台运行容器并打印容器ID

-p 8080:8080向主机发布容器的端口,也就是将主机的8080端口跟容器的8080端口映射

-v /root/webapps/:/data/apache-tomcat-7.0.77/webapps/ 将主机的目录/root/webapps/ 挂载到容器的目录/root/webapps/: 我们可以把我们的网站目录放在主机的/root/webapps/目录下,就可以自动挂载到我们的容器tomcat目录的webapps下面了。

--name mytomcat_2 将名称分配给容器为mytomcat_2

mytomcat /root/run.sh 运行容器名称为mytomcat_2的目录为/root/run.sh的shell脚本。

run.sh的内容:

#!/bin/bash
sh /data/apache-tomcat-7.0.77/bin/catalina.sh run

就是运行我们的tomcat

至此我们的我们完成了一个包含java+tomcat环境的容器。

我们可以把打包成新的镜像,使用命令:

docker commit [原容器名称或ID] [新容器名称]

提交之后就生成新的一个镜像文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu使用docker安装jdk和tomcat (一) 的相关文章

  • OS X 对 /usr/local/lib 的权限被拒绝

    我正在寻找有关权限问题的任何建议 直觉 线索 答案 自从我切换到新的 Macbook Pro 以来 这个问题一直困扰着我 这就是困境 某些程序在安装期间复制 usr local lib 下的库 并且在运行这些程序时出现崩溃 我认为这与此文件
  • 如何修复 /usr/bin/env 参数处理?

    我遇到了一个奇怪的问题 usr bin env 我设计了一个简单的脚本来显示问题 该脚本使用 Ruby 编写 但使用 Python 编写的类似脚本也会发生同样的情况 这是脚本 usr bin env ruby p ARGV 还有一个没有 u
  • 选择多个模式的 awk 代码

    这是我的输入文件 比如modified txt r4544 n479826 2012 08 28 07 12 33 0400 Tue 28 Aug 2012 1 line Changed paths M branches 8 6 0 con
  • Linux shell 标题大小写

    我正在编写一个 shell 脚本并有一个如下所示的变量 something that is hyphenated 我需要在脚本中的各个点使用它 如下所示 something that is hyphenated somethingthati
  • 尝试编译 git 但在 linux 中找不到 libcurl

    我想编译支持 http https 的 git 我有 ls usr include curl curlbuild h curl h curlrules h curlver h easy h mprintf h multi h stdchea
  • Tk 初始化失败:无显示名称且无 $DISPLAY 环境变量

    我试图从 Ubuntu 终端调用 Centos 服务器上的工具 我收到以下错误 Tk 初始化失败 没有显示名称 也没有 DISPLAY 环境变量 请帮我解决这个问题 提前致谢 连接到你的 CentOS 机器ssh Y其中 每man ssh
  • bash.sh 运行 cron 的权限被拒绝

    如何在这里使用 bash 脚本运行 cron 我做了如下操作 这里有错误 我想知道如何在 ubuntu 中做到这一点 我现在对它感到震惊 bash sh 文件 bin bash cd var www Controller usr bin p
  • Python 线程与 Linux 中的多处理

    基于此question https stackoverflow com questions 807506 threads vs processes in linux我假设创建新流程应该几乎和创造新线程在Linux中 然而 很少的测试显示出截
  • 警告构建使用导出符号的内核模块

    我有两个内核模块 例如 modA 和 modB modA 导出一个符号EXPORT SYMBOL symA modB 使用它 我有标题modA h对于modA extern void symA int param and in modB c
  • 我如何知道 std::map 插入成功还是失败?

    我在多线程应用程序中有一个映射 将名为 uuid 的类映射到指针 我想知道插入操作是否成功或失败 e g mymap insert hint MyMap value type entry uuid itemptr 如果失败的话会抛出异常或者
  • 并发 I/O - 缓冲区损坏、块设备驱动程序

    我开发块分层设备驱动程序 所以 我拦截WRITE请求并加密数据 并解密数据end bio 例行程序 在处理和READ要求 所以在单流中一切正常 但是 如果尝试同时从两个或更多进程执行 I O 我会遇到缓冲区内容损坏的情况 我没有任何本地存储
  • 如何搭建qtwayland?

    我花了一整天的时间尝试使用QtWayland Compositor 1 0在 Qt 创建者中 我已经遵循了从那里开始的所有步骤https wiki qt io QtWayland https wiki qt io QtWayland但我收到
  • Git - 致命:无法获取当前工作目录?

    When I git clone从回购协议中 我得到 fatal Could not get current working directory No such file or directory 我该怎么办 我检查了服务器并发现 git文
  • Tomcat 中的 403 访问被拒绝

    我有以下内容tomcat users xml
  • Pthread互斥锁由不同线程解锁

    一个天真的问题 我之前读到过 MUTEX 只能由锁定它的线程解锁 但我写了一个程序THREAD1锁定 mutexVar 并进入睡眠状态 然后THREAD2可以直接解锁mutexVar做一些操作并返回 gt 我知道每个人都说我为什么要这样做
  • 导出多个 LD_LIBRARY_PATH 的正确方法

    对于linux的使用 我是一个新手 根据有关我的项目的指南 我必须多次导出 LD LIBRARY PATH 并且我不确定是否不覆盖它们 Cupti Tensorflow CUDAit export LD LIBRARY PATH LD LI
  • 主动\被动模式下 FTP 服务器的适当 iptables 规则

    我在 CentOS6 上安装了 ProFTPD 服务器 如果我使 ftp 本地主机 我可以正确连接 但如果我从外部尝试 我会收到消息 没有到主机的路由 但有一条到主机的路由 因为我是通过 SSH 连接的 我尝试添加以下 iptable 规则
  • Java 内存错误:无法创建新的本机线程

    运行 java 服务器时 我在 UNIX 服务器上收到此错误 Exception in thread Thread 0 java lang OutOfMemoryError unable to create new native threa
  • 如何使用 sed 交换两行?

    有谁知道如何更换line a with line b and line b with line a使用 sed 编辑器在文本文件中 我可以看到如何用保留空间中的一行替换模式空间中的一行 即 Paco x or Paco g 但是如果我想采取
  • copy_from_user() 错误:目标大小太小

    我正在为内核模块编写 ioctl 处理程序 我想从用户空间复制数据 当我编译禁用优化的代码时 O0 gflags 编译器返回以下错误 include linux thread info h 136 17 error call to bad

随机推荐

  • spring boot 启动流程

    计时器开始计时 headless模式赋值 发送ApplicationAStartingEvent 配置环境模块 发送ApplicationEnvironmentPreparedEvent 打印banner 创建上下文应用对象 初始化失败分析
  • PEST分析顺丰服务需求_快递行业宏观环境分析

    快递行业宏观环境分析 宏观环境 PEST 分析 PEST 分析又称大环境分析 是研究宏观环境的有效工具 通过 Pest 分析法 公司能够剖析出自身所处的外部大环境究竟对自己的发 展是有利还是有害 以及据此作出战略规划 趋利避害 其中每一个
  • 如何处理日志文件丢失

    select group members from v log 查看日志文件的状态 select group status from v log 有状态来决定执行步骤 status active alter system checkpoin
  • ssh连接服务器协议错误,SSH服务 packet_write_wait: Connection to xxx port 22: Broken pipe错误处理...

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 http www one3 cn p 306 昨晚通过scp把其中一台服务器上面的文件传输到另一台机器上面 因为文件比较多且大
  • Rockchip CAN FD 开发文档

    Rockchip CAN FD 开发文档 前言 概述 产品版本 芯片名称 内核版本 RK356X 4 19 5 10 RK3588 5 10 目录 文章目录 Rockchip CAN FD 开发文档 toc CAN FD 驱动 驱动文件 D
  • 22. 协程与Python中的多任务异步协程

    目录 前言 协程概念 示例代码 Python编写协程程序 要用到的库函数 尝试编写异步 尝试改进函数 尝试优化代码 在爬虫领域的应用 总结 前言 本节我们介绍一个新概念 协程 协程顾名思义 是协助执行程序的过程 我们将介绍协程的概念和其在P
  • 静态地址重定位 与 动态地址重定位

    静态地址重定位 即在程序装入内存的过程中完成 是指在程序开始运行前 程序中的各个地址有关的项均已完成重定位 地址变换通常是在装入时一次完成的 以后不再改变 故成为静态重定位 优点 无需硬件支持 缺点 1 程序重定位之后就不能在内存中搬动了
  • QT定时器的使用

    QT定时器的使用 使用QTimer定时器类 1 首先创建一个定时器类的对象 QTimer timer new QTimer this 2 timer 超时后会发出timeout 信号 所以在创建好定时器对象后给其建立信号与槽 connect
  • jenkins学习笔记第五篇使用参数化解决ant+jemeter生成报告问题

    jenkins插件还是很强大的 这里用到的插件是Date Parameter 在参数化构建过程中添加参数 这里具体使用如下 可以在项目构建里 添加shell 具体引入方式如 echo DateParameter 在windows下使用的是w
  • windows node.js二进制文件的下载与配置

    1 下载 下载地址 http nodejs cn download 根据自己的电脑下载 2 将压缩包解压到你想安装的位置 3 在解压之后的文件夹中创建两个文件夹 node global npm全局安装位置 和node cache npm 缓
  • 使用Aspose在C#中将PLT转换为PDF或JPEG图像

    PLT是用于绘图仪机器的基于矢量的格式 但是 只有少数应用程序支持此格式 因此可能需要根据需要转换为更兼容的格式 使用Aspose只需几个简单的步骤即可将PLT文件转换为PDF PNG或JPEG图像 让我们学习以下部分以获取更多详细信息 在
  • 微信支付报错:用户传入的appid不正确,请联系商户处理

    微信APP支付的时候 报用户传入的appid不正确 请联系商户处理错误 解决方案 1 确保所有配置正确 2 可以检查一下签名的大小写
  • Kali--MSF-永恒之蓝详解(复现、演示、远程、后门、加壳、修复)

    目录 一 永恒之蓝概述 二 SMB协议 三 准备工作 四 漏洞复现 1 主机发现 2 端口扫描 3 利用模块 五 演示功能 1 获取cmd 2 捕获屏幕 3 上传文件 4 下载文件 5 远程登录 6 上传后门 7 免杀加壳 8 运行wann
  • 开博说明

    新开博客 开博说明 开博说明 大家好 这是我个人第一个技术博客 由于本人工作涉及金融量化方面 我会在今后的博客中主要涉及如下内容 方便有志之士一起探讨学习 也方便我个人查漏补缺 谢谢 python pandas sklearn tensor
  • MATLAB生成 FPGA代码

    写作时间 2020 12 13 标题 使用 HDL Coder 将 MATLAB 转换为 FPGA 目录 1 从 MATLAB 生成 HDL 代码 2 MATLAB 到硬件工作流 3 MATLAB 算法示例 正文 1 从 MATLAB 生成
  • PyQt4编程之如何做菜单栏

    菜单栏是大部分软件都有的 菜单栏能提供便捷的帮助 记事本的菜单栏就是最简单的一个例子 等过几天我会写记事本的菜单栏了再另外发代码出来 下面的代码是Copy的 import sys from PyQt4 import QtGui QtCore
  • Python2,python3调用face++api

    由于官网给的api只能支持python2 然而自己改成3的话特别麻烦 花了两三天都没有改好 查阅各种资料都没有结果 今天偶遇一代码 非常感谢这位博主 现将其代码和我的使用样例献上 希望能够帮助到和我一样的小白 该博主的代码 Face API
  • 用Lex(flex)和yacc(bison)写的简单计算器

    Lex文件如下 include cal tab h option noyywrapinteger 0 9 dreal 0 9 0 9 ereal 0 9 0 9 EedD 0 9 real dreal ereal nl nplus minu
  • 使用ipv6内网穿透,实现私有云盘搭建,实现远程控制等功能

    文章目录 问题 获得计算机的ipv6地址 ipv6变化问题 解决 桌面远程控制 ipv6控制路由器 解决 私有云盘搭建 创建服务端B的环境配置 创建服务端可以访问的用户账户 配置服务器对ipv6地址访问的监听 创建ipv6访问客户端 NAT
  • ubuntu使用docker安装jdk和tomcat (一)

    Docker是一个开源的引擎 可以轻松的为任何应用创建一个轻量级的 可移植的 自给自足的容器 开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署 包括VMs 虚拟机 bare metal OpenStack 集群和其他的基础应用平