首页 文章 精选 留言 我的

精选列表

搜索[生成列],共10010篇文章
优秀的个人博客,低调大师

docker生成tomcat镜像

应用场景 有时候docker公共镜像库中下载下来的镜像,可能不是自己想要的,没办法,自己也可以制作一个自己想要的镜像,然后发布到公共资源镜像中,也可以保存到私有仓库中,以防后期自己也需要使用。 操作步骤 试验环境为:windows7系统,内存8G,固态硬盘120G,硬盘450G,ip为192.168.117.66,在windows7系统上,安装VMware,创建两个虚拟机,安装centos7.1系统,两个虚拟机内存2G,硬盘30G,ip分别为192.168.199.31(docker1),192.168.199.32(docker2)。 在此试验中,只需要一个虚拟机就ok了,在此取192.168.199.32(docker2),在虚拟机上配置网络,安装docker。 1. 下载镜像 在docker部署tomcat应用试验中,需要下载一个虚拟机镜像,可以是ubuntu、centos、redhat,这里选取centos。 先搜索,centos有哪些镜像: # docker search centos 下载星级最多排名第一的docker镜像: # docker pull docker.io/centos 注:如果根据前面文档,配置了加速器,命令改为dao pull docker.io/centos,可能会出现网络问题,一次不能成功,多尝试几次。 查看下载的镜像: # docker images 可以看出一个centos镜像只有172.3M,完全不像centos虚拟机有几个G,镜像非常小巧,现在下载完镜像,可以使用镜像,启动容器了。此时记住镜像ID为ce20c473cd8a。 2. 启动容器 容器是在镜像的基础上来运行的,一旦容器启动了,我们就可以登录到容器中,安装自己所需的软件或应用程序。既然镜像已经下载到本地,那么如何才能启动容器呢? 只需使用以下命令即可启动容器: # docker run -i -t -v /root/software/:/mnt/software/ ce20c473cd8a /bin/bash 这条命令比较长,我们稍微分解一下,其实包含以下三个部分: docker run <相关参数> <镜像ID> <初始命令> 其中,相关参数包括: -i:表示以“交互模式”运行容器 -t:表示容器启动后会进入其命令行 -v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录> 假设我们的所有安装程序都放在了宿主机的/root/software/目录下,现在需要将其挂载到容器的/mnt/software/目录下。 在这其中挂载,书面的解释是数据卷,通俗的来说就是宿主机的/root/software/目录下的文件,文件夹,在容器的/mnt/software/目录下都能显示,并且实时更新。 需要说明的是,不一定要使用“镜像 ID”,也可以使用“仓库名:标签名”,例如:docker.cn/docker/centos:centos,这只是描述一下,这里对应的就是centos。 初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。 3. 安装相关软件 为了搭建 Java Web 运行环境,我们需要安装 JDK 与 Tomcat,下面的过程均在容器内部进行。我们不妨选择/opt/目录作为安装软件的目录,首先需要通过cd /opt/命令进入该目录。 在安装之前,我们需要把JDK安装包和Tomcat安装包,分别拷贝到虚拟机的/root/software/目录下,没有software文件夹的自行创建。 3.1 安装 JDK 首先,此时已在容器的/opt/目录下,解压 JDK 程序包: # tar -xzvf /mnt/software/jdk-7u79-linux-x64.tar.gz 然后,重命名 JDK 目录: # mv /mnt/software/jdk1.7.0_79/ jdk/ 3.2 安装 Tomcat 首先,解压 Tomcat 程序包: 把我们的应用放到tomcat目录下的,webapps目录中。这里,采用了以前本地的一个应用。 然后,重命名 Tomcat 目录: # mv /mnt/software/apache-tomcat-7.0.57_Linux_64bit/ tomcat/ 3.3 设置环境变量 首先,编辑.bashrc文件 # vi ~/.bashrc 然后,在该文件末尾添加如下配置: export JAVA_HOME=/opt/jdk export PATH=$PATH:$JAVA_HOME 最后,需要使用source命令,让环境变量生效: # source ~/.bashrc 3.4 编写运行脚本 我们需要编写一个运行脚本,当启动容器时,运行该脚本,启动 Tomcat,具体过程如下: 首先,创建运行脚本: # vi /root/run.sh 然后,编辑脚本内容如下: #!/bin/bash source ~/.bashrc sh /opt/tomcat/bin/catalina.sh run 注意:这里必须先加载环境变量,然后使用 Tomcat 的运行脚本来启动 Tomcat 服务,并且必须采用catalina.sh启动,如果用startup.sh启动,容器退出后tomcat会停掉。 最后,为运行脚本添加执行权限: # chmod u+x /root/run.sh 4. 退出容器 当以上步骤全部完成后,可使用exit命令,或者按ctrl+D退出容器。 随后,可使用如下命令查看正在运行的容器: # docker ps 此时,您应该看不到任何正在运行的程序,因为刚才已经使用exit命令退出的容器,此时容器处于停止状态,可使用如下命令查看所有容器: # docker ps -a 输出如下内容: 记住以上CONTAINER ID(容器 ID),随后我们将通过该容器,创建一个可运行 Java Web 的镜像。从上图中可以看出,此处容器ID为b4856714dc81。 5. 创建Java Web镜像 使用以下命令,根据某个“容器 ID”来创建一个新的“镜像”: # docker commit b4856714dc81 xubin/javaweb:03 该容器的 ID 是“b4856714dc81”,所创建的镜像名是“xubin/javaweb:03”,随后可使用镜像来启动 Java Web 容器。 6. 启动Java Web容器 可以使用docker images命令,查看当前所有的镜像,此时可以看到最新创建的镜像“xubin/javaweb:03”,当然也可以观察它的镜像ID。正如上面所描述的那样,我们可以通过“镜像名”或“镜像 ID”来启动容器,与上次启动容器不同的是,我们现在不再进入容器的命令行,而是直接启动容器内部的 Tomcat 服务。此时,需要使用以下命令: # docker run -d -p 8083:8080 --name javaweb3 xubin/javaweb:03 /root/run.sh 稍作解释: -d:表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。 -p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 8083 端口,这样就向外界暴露了 8083 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。 –name:表示容器名称,用一个有意义的名称命名即可。 关于 Docker 网桥的内容,需要补充说明一下。实际上 Docker 在宿主机与容器之间,搭建了一座网络通信的桥梁,我们可通过宿主机 IP 地址与端口号来映射容器内部的 IP 地址与端口号, 在一系列参数后面的是“镜像名”或“镜像 ID”,怎么方便就怎么来。最后是“初始命令”,它是上面编写的运行脚本,里面封装了加载环境变量并启动 Tomcat 服务的命令。 当运行以上命令后,会立即输出一长串“容器 ID”,我们可通过docker ps命令来查看当前正在运行的容器。如下如所示: 在浏览器中,输入以下地址,即可访问应用: http://192.168.199.32:8083/BBS/article.jsp/ 注意:这里使用的是宿主机的 IP 地址,与对外暴露的端口号 8083,它映射容器内部的端口号 8080。

优秀的个人博客,低调大师

安全公司发现38款手机预装恶意软件,三星、小米、OPPO等悉数在

国外安全公司 Check Point 最近发布了一篇报告,称在其调查的两家企业中,发现了38部被预装恶意软件的 Android 手机。报告并未透露被调查企业的名字,但雷锋网 (公众号:雷锋网) 惊讶地发现, 报告中赫然出现了三星、小米、红米、中兴、Oppo、Vivo 、联想、LG 等国内外众多知名品牌。 研究人员称,他们并不清楚攻击者只是专门针对这两家公司,还是这种预装恶意软件的行为广泛存在,目前仍在调查之中。 报告中表示,手机厂商提供的官方ROM固件中并没有包含恶意软件,但设备到达用户的手中时已经被加入了恶意软件,因此判断恶意软件是在设备供应链的某一环节被加入到设备中的。 在这些预装的恶意软件中,大部分主要是收集用户的信息和展示广告,但也发现其中六部手机中的恶意程序拥有系统级权限;其中一部手机中存在勒索软件,会通过AES加密算法

优秀的个人博客,低调大师

21 项缺陷

iOS、Android 系统哪一个比较好用?是许多网友相互笔战的热门话题,近期国外 Reddit 论坛一名 10 年资历的 Android 铁粉,主动尝试苹果 iPhone 11 Pro,却只用了一个多月就放弃,甚至一口气吐槽 iOS 多达 21 项缺陷,引发大量网友讨论。 该名网友总结,iPhone 拥有「绝佳的硬件、糟糕的软件」,认为 iOS 有许多让人无法忍受的怪僻,他相信 iOS 是不错的平台,但无法接受许多苹果的策略,建议有兴趣的网友,或许可以尝试看看在下定论。 例如,他在 App 部份也列出 4 点吐槽,像是苹果自家的软件没有 Google 服务好用,导致时常有同性质的 App 一起存在,无法更改默认开启的应用程序,强迫用户很多时候会自动进入 Apple Maps,但该软件却不如 Google Maps 好用,也无法透过应用程序开启链接,例如点选 Reddit 论坛的网址,Android 能让用户挑选是否以应用程序开启,iPhone 则无法。 其他被吐槽的点还包含手势只能向左滑,且没有专用的返回按钮,应用程序的实施方式也不一致;屏幕摆放 App 的方式缺乏弹性、没有应用程序抽屉;部分软件无法在后台进行备份;iMessage 功能有瑕疵;内建键盘不理想;通知中心的设计等等。 有许多网友响应表示认同,甚至加码指出要在 iPhone 换铃声,得特别转换音档,手续繁杂。却也有人反驳,认为 21 项缺陷有不少是原 Po 个人使用方式错误,其余也是习惯问题,不认同所有观点。也有人替 iOS 澄清,认为苹果生态优势在于 App 质量较高,拥有出色的开发者社群,能够提供质量一致的服务生态。 日前国外科技媒体《PCWorld》,也有一名 Android 铁粉编辑,在 10 年后首度体验 iPhone 11 Pro,当时他分别整理了 iOS 的六项优缺点,部分与该名 Reddit 相符,例如主画面 UI 设计、强制被迫使用内建 App、通知中心等等,但他也认为 iOS 也有许多优异之处胜过于 Android,像是 Taptic Engine 震动回馈、手势操作顺畅、续航表现优异、静音开关、True Tone 屏幕舒适、AirDrop 很方便。

优秀的个人博客,低调大师

Gary Marcus再发万字长文,14个Q&A回应机器学习批判言论

“所有的真理都经历了三个阶段:第一,被嘲笑; 第二,被强烈反对;第三,被不证自明地接受。“Gary Marcus引用叔本华的这段话为自己的另一篇万字长文进行了开篇,以回应他近期面对的“推特上的成千上万条质疑”。 1月初,一直对深度学习持质疑态度的纽约大学教授、人工智能创业者Gary Marcus在arxiv上发布了一篇长文,列举十大理由,质疑深度学习的局限性,在AI学术圈又掀起了一轮波澜。 Gary Marcus文章地址: https://arxiv.org/ftp/arxiv/papers/1801/1801.00631.pdf 今天凌晨,针对学术圈(推特圈)对这篇文章的质疑(查看大数据文摘相关报道《Marcus十大理由质疑深度学习?LeCun说大部分错了》), Marcus又发了一篇长文,他总结了这次论战中14个常见的问题,并一一给出

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册