centos7之docker安装

news/2024/7/5 5:01:51

下午四点左右,我准备接触docker这个技术。之所以接触它,原因来自tomcat服务器老是挂,也不能说老是挂,一周一次吧,或者不定时,最初出现的问题,分为这么几类?

一类,java代码的问题,某个类导致线程阻塞导致内存泄露,使tomcat突然宕机和某个类找不到异常导致宕机;

二类,java运行环境内存不足,通过调tomcat内存解决该问题,不过这并不能解决这个问题,当然tomcat初始内存的确小,需求适当的调大,但是前提必须符合服务器的配置和内存;

三类,tomcat连接池和线程池的缘故,需要tomcat连接池和线程池优化,这一优化后,tomcat一天宕机或者三两天宕机,最后变为一周或者两周一次;

以上三类或许不是真正的原因,真正的原因我目前无法找到,真正的根源问题出在哪?我也不是十分明确。

针对解决这些问题,临时的做法可以参考:

1.参考我的 Jmeter之tomcat性能测试+性能改进措施 这篇文章 解决连接池和线程池的问题;

2.通过使用shell,定时任务监控tomcat,如果检测到宕机,就会自启;

目前只想到这两个。

不过回归话题,之所以接触docker,第一个是听一位开发的朋友说,可以解决tomcat问题,第二个是学习docker

引用知乎一位朋友的话,他的名字叫刘允鹏:

 

Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。

docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱。

1.不同的应用程序可能会有不同的应用环境,比如.net开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,而且很麻烦,还会造成一些冲突。比如IIS和Apache访问端口冲突。这个时候你就要隔离.net开发的网站和php开发的网站。常规来讲,我们可以在服务器上创建不同的虚拟机在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高。docker可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小,小就意味着省钱了。

2.你开发软件的时候用的是Ubuntu,但是运维管理的都是centos,运维在把你的软件从开发环境转移到生产环境的时候就会遇到一些Ubuntu转centos的问题,比如:有个特殊版本的数据库,只有Ubuntu支持,centos不支持,在转移的过程当中运维就得想办法解决这样的问题。这时候要是有docker你就可以把开发环境直接封装转移给运维,运维直接部署你给他的docker就可以了。而且部署速度快。

3.在服务器负载方面,如果你单独开一个虚拟机,那么虚拟机会占用空闲内存的,docker部署的话,这些内存就会利用起来。

总之docker就是集装箱原理。

谈谈安装遇到的问题,主要是关于镜像。

在我安装的时候出现了不少错误,主要是关于镜像问题
所以如果出现关于镜像的问题,可以采取以下的措施解决:
(1)首先备份原来的镜像
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

(2)获取阿里云的镜像并一移至到镜像目录下
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

 

安装措施和流程如下所示:

前提:注意linux环境是centos7

安装docker流程如下:

(1)安裝相关的依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

(2)添加阿里云的docker镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(3)将服务器的信息快速下载到本地缓存
yum makecache fast

(4)安装docker
yum -y install docker-ce

(5)启动docker
service docker start

(6)查看docker版本信息就和安装jdk查看版本信息一样
docker version

(7)开机自启动
systemctl enable docker

 

关于docker后期学习,我会不定时跟大家分享的。


http://www.niftyadmin.cn/n/3090020.html

相关文章

数据库CRUD操作以及MyBatis的配置使用

• 业务字段设计 • 数据库创建 • CRUD操作 • MyBatis集成• 注解和XML定义• ViewObject和DateTool • 首页开发• 业务字段设计实体: name:logub_ticket lable: id user_id ticket expired status • 数据库创建 GUI版本管理工具创建,然后通过GUI转…

java页面乱码_Java Web项目中解决中文乱码方法

Java Web项目中解决中文乱码方法Java具有简单性、面向对象、分布式、健壮性、安全性、平台的独立与可移植性、多线程、动态性等特点。下文是为大家精选的Java Web项目中解决中文乱码方法,欢迎大家阅读参考。第一种情况:调用jsp页面中文显示乱码问题描述&…

手动卸载windows服务

使用windows命令行工具:sc。大名鼎鼎的sc。欲知详细用法,请直接在cmd下键入sc,即显示用法。嘿嘿,很好用的!另外,MySql的服务注册其实很简单,即简单地 D:\mysql\bin>mysqld -install Service…

捷账宝常规操作

1.安装流程按“小房子”形状的按钮,进入设备桌面—>打开“拉卡拉应用商店”—>点击左上角搜索按钮,输入“捷账宝”(字不能错,必须一定是这三个字)—>点击右边搜索—>点击“捷账宝”后面的“下载”,下载完成后—>安…

java调用ruby_关于java调用ruby的问题。

java调用ruby脚本,发生错误:LoadError: load error: jopenssl/load -- java.lang.VerifyError: class org.bouncycastle.asn1.ASN1Primitive overrides final method equals.(Ljava/lang/Object;)Zrequire at org/jruby/RubyKernel.java:959require at /…

十五:值类型的装箱和拆箱(一)

简单的说装箱是将值类型转换为引用类型;拆箱是将引用类型转换为值类型,但其内部是怎么实现的,CLR又是如何工作的呢,看下面代码:using System;using System.Collections;struct Point{public Int32 x, y;} public sea…

SDN和互联网厂商与网络厂商之间的爱恨情仇

在上一篇博客中我提到SDN的产生与由来,以及SDN在云网一体化场景中的应用,这期我们来谈谈SDN和互联网厂商与网络厂商之间的情感纠葛。什么是SDN?维基百科中解释说到“是一种抽象控制平面和数据平面的计算机网络方法”,说白了就是可…

asp数据库连接语句

asp数据库连接语句2008-01-03 17:26<一>数据库的连接方法&#xff1a; 1.Access数据库的DSN-less连接方法: set adoconServer.Createobject("adodb.connection") adoconn.Open"Driver{Microsoft Access Driver(*.mdb)};DBQ"& Server.MapPath(&qu…