nohup sh./start.sh &与nohup ./start.sh &的区别: nohup,就是用nohup.out代替tty,避免挂起。sh xxx.sh是用sh 执行start.sh,start.sh可以没有执行标志,可以不用加./,可以不用在脚本第一行写上#/bin/sh(当然,bsh可以不写)。 ./start.sh是调用脚本第一行制定的shell去解释执行,缺省为sh,就是bsh &表示后台运行。
LZ你好:
下面是我根据一些经验来编写的java学习路线图
①入门肯定是先学习Java SE部分。其中主要包括java基础和java界面编程以及java高级知识
②其次就可以学习JDBD编程。其中包括SQL语句和JDBC基础
③DHTML编程。其中包括HTML基础和JavaScript知识以及DOM事件机制
④Java Web编程。其中包括Web编程基础和Ajax编程
⑤XML编程。其中包括XML基础
⑥轻量级Java EE和经典Java EE。其中包括Java EE框架初步
⑦接着就是正式工作的内容,也就是企业级应用了
谢谢LZ!!
0.起步
一本书或一个教程,一个开发工具,Hello World。
初识Java一般都会从某本教材、课程或者教程开始。完成第0部,首先需要掌握:
Java基本语法
开发工具的基本使用:建立Java项目,敲入代码,运行程序。当然,如何安装Java开发环境也是必备技能。
与其他语言一样,输入经典的hello world,然后看到输出。
起步没有什么特别之处,如果有过其他语言的编程经验这一关很容易通过。
推荐书籍
可以作为起步的书籍和教程很多,列举一下自己觉得比较合适的几本:
Java JDK 7学习笔记:这本书从基础的配置讲起,通俗易懂。
Head First Java(中文版):虽未读过,但是head first的系列以示例讲解非常形象著称,而且附带的示例代码也很好用。
开发工具
开发工具与编程语言一样,难分伯仲。所以这里不做比较,通常见到的会有Eclipse (MyEclipse),IntelliJ Idea,Netbeans。
Eclipse
这里指说一下自己常用的Eclipse。最新的Eclipse 4已支持Java8语法,下载地址。
Eclipse的版本众多,如果不涉及Eclipse插件开发,JavaEE版本(Eclipse IDE for Java EE Developers)就可以:支持J2EE和J2SE开发。
安装Eclipse也很简单:下载后解压缩,直接运行即可。当然,这里也有很多坑,比如各种千奇百怪的问题。接下来会单独写博客讨论。
总结
虽然只是路途中的第一步,但是好的开头就是成功的一半。任何问题都是好问题,一定要记录和总结。
1.新手
第一个程序,了解面向对象,学会看API,学会调试,学会问问题。
当你经历了第一步,把书上的例子都运行过一遍,接下来就会开始写自己的第一个程序。
无论是课程实践,还是工作安排的小任务,这些都会是一个好的开始。
那么必备的几项知识我认为是有用的(实际上不会限于以下几项):
了解面向对象:Java是面向对象语言,所以写程序遇到的第一个问题和以后一直需要解决的问题就是“用面向对象的思想,把问题抽象成Java程序”。
学会看API:现成的例子会跑,但毕竟涵盖的范围有限,那么学会看JavaDoc,调用函数就是重要的一步。
学会调试:学会调试,可以在问问题前解决一大半的问题。这里说的调试不仅是在Eclipse学会debug,还有如何用你的大脑在阅读代码时分析程序,找出问题。
学会问问题:这个不仅在写代码时很重要,在解决其他问题时一样适用。
推荐书籍
Java编程思想 (第4版):经典。对面向对象的讲解很到位。不足之处是中文的翻译,技术词语与现在通常的用法有所区别,需要注意。
JAVA核心技术(卷1),(卷2):对Java知识体系中常见的API和注意事项有讲解。可根据自己的实际开发进行查阅。
UML和模式应用:经典面向对象教材,还可以熟悉UML的基本概念。
常用资源
JDK7 Document下载,在线API Document:在Eclipse中如果有网络,可以直接看到API的说明,离线时也可以将下载后的文档关联。接下来会单独写博客讨论。
Java Debugging with Eclipse - Tutorial:Debugger是程序调试的重要工具,学会使用它会对开发中的问题进行有效的跟踪和分析。这篇优秀的教程是英文,接下来会单独写博客总结Eclipse开发debugger的常用技巧。
如何提问:《提问的智慧》,读完此文会对问题的质量和有效回复有很大提高。
总结
从第一个程序开始,就会遇到开发中的实际问题。所以,一些常用的概念和技能会在日后的开发过程中不断磨练和提高。
勤奋和总结始终是手中的必备法宝。
来看看2021年最新的Java学习路线图: 第一阶段:Javase基础 俗话说的好,基础打不牢学问攀不高,扎实的基础是成功的第一步,判断自己适不适合这个行业,就看你能不能在短期内将基础学牢并应用起来。 我们首先要接触的就是Java环境搭建,Java核心语法 重点学习:面向对象,集合、IO流、线程、并发、异常及网络编程等等 第二阶段:数据库 想要成为Java开发工程师,数据库这项课程就必不可少,当然你学习其它编程语言事这项技能也需要牢牢掌握。用于对交互过程中客户的数据进行存储,该板块包括关系型数据库和非关系型数据库。 重点学习:SQL精讲、MySQL、oracle、MySQL索引实现原理及优化、JDBC 这一部分学完可以通过SQL语言从数据库中查询数据,结合Java项目实现动态站点数据的保存 第三阶段:WEB前端 WBE前端可以说是互联网项目的入门课程了,是学习高阶课程的基础,想要熟练Java高阶编程语言,我们当然要懂一些软件前台框架和后台数据的一些交互对接。 重点学习:HTML4/H5、CSS、Javascript、JQuery、数据交换格式JSON等 学习前端技术后,可以完成类似京东、淘宝的前端工程的编写。 第四阶段:Javaweb JavaWeb用Java技术来解决相关web互联网领域的技术总和。Java提供了技术方案可以解决客户端和服务器端的实现,特别是服务器的应用,比如Servlet,JSP和第三方框架等等。 Javaweb初级的一般是用JSP(Java Server Pages)+servlet+Javabean来开发,对大型的网站一般是使用框架来开发的,例如struts,hibernate,spring,典型的struts框架结构。 重点学习:Tomcat服务器、Jsp、EL表达式、异步AJAX请求,MVC架构模式,线程池原理 第五阶段:Javaweb项目 检验Javaweb的学习成果,EGOA项目及电商平台项目都是Javaweb实现的 重点知识:主要类和接口设计、Maven构建工具的使用、版本控制工具GIT、连接池的原理及应用、Linux常用命令、logback负责日志输出、aliyun短信、itextPDF文档生成器 第六阶段:高级框架 使用Javaweb进行企业级开发效率比较低,对于日常的逻辑操作进行封装就用到了框架,因此框架也就成为了企业级开发的入门技能。 热门、主流框架有如下几个,也是我们重点所学:Spring框架,占据统治地位,其生态系统涉及各个方面解决方案;MyBatis框架,使用ORM思想对数据库进行操作。 第七阶段:框架项目 结合高级框架的学习内容,结合项目,是时候检验自己的学习成果,此番课程,含金量非常高,如何你能将这些课程融会贯通,运用自如,那么你会在现有的知识基础上更上一层。 第八阶段:互联网分布式 随着互联网的发展,业务的复杂性和用户的体验性都需要提高,所以分布式架构出现了。该板块主要讲解的是分布式架构的相关解决方案。 重点学习:Netty, 提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序;Spring WebFlux,一套全新的 ReactiveWeb栈技术,实现完全非阻塞,支持Reactive Streams 背压等特性; Dubbo,高性能的 RPC 服务发布和调用框架; SpringBoot,简化Spring应用的初始搭建以及开发过程; Spring Cloud,一系列框架的有序集合,如服务发现注册、配置中心、负载均衡、断路器、数据监控等。
2019年Java学习路线图如下: 随着Java工程师的薪酬的走高,越来越多的人开始Java学习,开始从事Java软件开发。但是Java学习往往是大学教育之外学习的实践技能,对于Java学习者来说,Java编程语言是一门纯面向对象的语言,和我们大学接触的C语言有很大的不同。 另外Java学习者一般都不太容易理解和接受Java编程语言中的面向对象、继承、多态、封装等特点,这给Java学习人员造成很大的困扰。通过图中的学习路线图,循序渐进的学习Java,能够提升编程能力。
几个常用的操作系统: 1、 DOS操作系统 DOS是英文Disk Operation System的简称,中文为磁盘操作系统,自1981年推出1.0版发展至今已升级到6.22版,DOS的界面用字符命令方式操作,只能运行单个任务。 2、 Windows 9x Windows 9x是一个窗口式图形界面的多任务操作系统,弥补了DOS的种种不足。此后推出的Windows ME(2000年)、Windows XP(2001年)与Windows 9x相比,着重增加和增强了网络互联、数字媒体、娱乐组件、硬件即插即用、系统还原等方面的功能。 3、Windows 98 是面向大众用户的版本,由于是从DOS发展过来的,在安装和运行了大型软件以后,系统会变得不太稳定,经常会死机。 4、windows xp 实在windows nt的技术上发展过来的,由于最初windows nt是为服务器设计的因此稳定性要比windows 98系列操作系统好很多。 5、 Windows NT/ Windows 2000 Windows NT是一个网络型操作系统,它在应用、管理、性能、内联网/互联网服务、通讯及网络集成服务等方面拥有多项其他操作系统无可比拟的优势。因此,它常用于要求严格的商用台式机、工作站和网络服务器。 Windows 2000是在Windows NT内核基础上构建起来的,同时吸收了Windows 9x的优点,因此,Windows 2000更易于使用和管理,可靠性更强,执行更迅速,更稳定和更安全,网络功能更齐全,娱乐效果更佳。 windows服务器最常用的是 windows 2003和windows 2008两种,这两款都被很多大小型企业所用。 6、 UNIX UNIX操作系统设计是从小型机开始的,从一开始就是一种多用户、多任务的通用操作系统,它为用户提供了一个交互、灵活的操作界面,支持用户之间共享数据,并提供众多的集成的工具以提高用户的工作效率,同时能够移植到不同的硬件平台。 UNIX操作系统的可靠性和稳定性是其他系统所无法比拟的,是公认的最好的Internet服务器操作系统。从某种意义上讲,整个因特网的主干几乎都是建立在运行UNIX的众多机器和网络设备之上的。 7、 Linux 准确的说,Linux应该是符合UNIX规范的一个操作系统,Linix是基于源代码的方式进行开发的。Linux是一套免费使用和自由传播的类似UNIX的操作系统,这个系统是由全世界各地的成千上万的程序员设计和实现的。 用户不用支付任何费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必要的修改,无偿对它使用,无约束地继续传播。 Linux以它的高效性和灵活性著称。它能够在PC计算机上实现全部的UNIX特性,具有多任务、多用户的能力。而且还包括了文本编辑器、高级语言编译器等应用软件。 它还包括带有多个窗口管理器的X—Windows图形用户界面,如同我们使用Windows NT一样,允许我们使用窗口、图标和菜单对系统进行操作。它是一个功能强大、性能出众、稳定可靠的操作系统。 8、 其他操作系统 如:Mac OS是苹果电脑Macintosh机器的专用操作系统,从本质上将,Mac OS 也是UNIX的一个变体。
前篇笔记中搞定了一个镜像并安装了jdk 本想着这tomcat会更简单,后来发现我错了。 且看下面过程: 我这个镜像原始的系统就有openssh,只需要进到镜像里 passwd一个新的密码。退出后commit一下就添加了一个ssh服务。 之后通过以下命令在后台启动镜像,执行ssh服务,开放22端口 1 docker run -d -p 22 ubuntu64:14.04 /usr/sbin/sshd -D 回车后打出容器的ID号就返回了 那我们怎么知道这容器当前什么情况呢? 1 docker ps 列出当前还在运行中的容器 能看到列表中的容器id。还有一条有用的信息是PORTS列,说明宿主机的49153映射到的容器22端口上了。 这时就可以通过putty或scp之类的连接上去进行操作了。 现在我已经把tomcat解压放到/usr/local/java目录下了。 并通过startup.sh启动测试正常. ok exit +commit 怎么能在镜像启动时就把tomcat启起来呢?? 学着之前的命令 1 docker run -it ubuntu_tomcat:7.0.55 /usr/local/java/apache-tomcat-7.0.55/bin/startup.sh 结果得到了如下的响应: 没有环境变量 进到镜像里,查看/etc/profile,明明是有的。之前通过ssh进去也是可以启动的,这是为什么呢? linux的启动过程里,/etc/profile是在用户登录的时候执行,在命令行run的时候可能是不会进行登录操作,所以没有相应的环境变量。但是我们启动了ssh服务,从远程是通过登录进的系统,这时候就会有环境变量了。 猜出了这原因,怎么解决呢? run命令是可以挂环境变量参数的。但是这样命令本身就会很复杂。 ok,这个时候就要Dockerfile出场了。 Dockerfile是一个用于创建镜像的工具,它的用法是这样。在当前目录建一个名为Dockerfile的文件。执行docker build: 1 docker build -t="tomcat:7.0.55" . 就会创建一个tomcat:7.0.55的镜像。 那么docker怎么知道这个镜像怎么建呢。需求要我们在Dockerfile文件中说明。 现在来看一下我这次用的Dockerfile文件的内容: 1 2 3 4 5 6 FROM ubuntu_tomcat:7.0.55 ENV JAVA_HOME /usr/local/java/jdk1.7.0_67 ENV JRE_HOME $JAVA_HOME/jre ENV CLASSPATH .:$JAVA_HOME/lib:$JRE_HOME/lib ENV PATH $PATH:$JAVA_HOME/bin CMD /usr/local/java/apache-tomcat-7.0.55/bin/catalina.sh run FROM 指源自哪个镜像创建 ENV 指定环境变量 CMD 镜像启动时默认执行的命令,在这里我们默认把tomcat跑起来。 执行完build以后用images看一下新的镜像 启动一下。 1 docker run -d -p 80:8080 tomcat:7.0.55 把宿主机的80端口映射给镜像的8080。 再用ps命令看一下当前容器: 镜像已经正常跑起来了,端口与已经映射好了。 访问宿主机IP,就可以看到大猫图了。 用logs命令可以看到tomcat的日志。 1 docker logs ff5533 ff5533就是容器的ID 还可以用stop指令关闭容器 1 docker stop ff5533 ok,一个tomcat的服务镜像就搞定了。
操作系统(Operating System,OS)是软件的一部分,它是硬件基础上的第一层软件,是硬件和其它软件沟通的桥梁(或者说接口、中间人、中介等)。 操作系统会控制其他程序运行,管理系统资源,提供最基本的计算功能,如管理及配置内存、决定系统资源供需的优先次序等,同时还提供一些基本的服务程序,例如: 1) 文件系统 提供计算机存储信息的结构,信息存储在文件中,文件主要存储在计算机的内部硬盘里,在目录的分层结构中组织文件。文件系统为操作系统提供了组织管理数据的方式。 2) 设备驱动程序 提供连接计算机的每个硬件设备的接口,设备驱动器使程序能够写入设备,而不需要了解执行每个硬件的细节。简单来说,就是让你能吃到鸡蛋,但不用养一只鸡。 3) 用户接口 操作系统需要为用户提供一种运行程序和访问文件系统的方法。如常用的 Windows 图形界面,可以理解为一种用户与操作系统交互的方式;智能手机的 Android 或 iOS 系统,也是一种操作系统的交互方式。 4) 系统服务程序 当计算机启动时,会自启动许多系统服务程序,执行安装文件系统、启动网络服务、运行预定任务等操作。 扩展资料 流行操作系统介绍: 1、服务器和 PC 端操作系统有 Linux、Windows、UNIX 等。 2、手机操作系统有 Android、iOS、Windows Phone(简称 WP)。 3、嵌入式操作系统有 Windows CE、PalmOS、eCos、uClinux 等。
1、先说如何在docker中部署tomcat
第一步:root用户登录在系统根目录下创建文件夹tomcat7,命令如:mkdir tomcat7,并且切换到该目录下:cd tomcat7;
第二步:创建Dockerfile,命令如:touch Dockerfile;
第三步:编写Dockerfile,命令如:vim Dockerfile,完成以下命令编写:
FROM ubuntu:14.04
MAINTAINER zhaichong
ENV REFRESHED_AT 2015-7-28
RUN apt-get -yqq update
RUN apt-get -yqq install tomcat7 default-jdk
ENV CATALINA_HOME /usr/share/tomcat7
ENV CATALINA_BASE /var/lib/tomcat7
ENV CATALINA_PID /var/run/tomcat7.pid
ENV CATALINA_SH /usr/share/tomcat7/bin/catali
简单得来说,Docker是一个由GO语言写的程序运行的“容器”(Linux containers, LXCs); 目前云服务的基石是操作系统级别的隔离,在同一台物理服务器上虚拟出多个主机。Docker则实现了一种应用程序级别的隔离; 它改变我们基本的开发、操作单元,由直接操作虚拟主机(VM),转换到操作程序运行的“容器”上来。
Docker是为开发者和系统管理员设计的,用来发布和运行分布式应用程序的一个开放性平台。由两部分组成:
Docker Engine: 一个便携式、轻量级的运行环境和包管理器。(注* 单OS vs 单线程,是不是跟NodeJS特别像?)
Docker Hub: 为创建自动化工作流和分享应用创建的云服务组成。(注* 云端镜像/包管理 vs npm包管理,是不是跟npm特别像?)
从2013年3月20日,第一个版本的Docker正式发布到 2014年6月Docker 1.0 正式发布,经历了15个月。 虽然发展历程很短,但Docker正在有越来越流行的趋势。
tomcat是服务器,是一种比较简单的中间件,用来把java web开发部署到tomcat中,此时tomcat是作为服务器的。 java的可移植性设计让java依赖class文件运行的。jdk就是java运行的环境,使用它能编译.java文件,运行java程序。 tomcat可以比作web容器,java应用发布在它上面然后通过它与浏览器进行交互,一种程序与浏览器适配的容器。 扩展资料: Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。 参考资料来源:百度百科-tomcat
Docker Engine
当人们提到 Docker,一般而言,大家说的是 Docker Engine,如下图:
它是一个 client-server application。
Docker Engine 由三个部分组成:
Docker 进程(Docker Daemon)
REST API:指定了和进程交互的接口
CLI(command line interface):通过 REST API 和 daemon 通信,诸如:docker run , docker ps...
Docker Machine
Docker Machine 是一种提供管理主机的 工具。常规,你会安装 Docker Machine 在你的本地机器上。
Docker Machine 有自己的命令client:docker-machine
Docker Engine 则有client:docker
我们可以使用 Docker Machine 来安装 Docker Engine 在一个或者多个虚拟系统上,这些虚拟系统可以是本地的(比如Virtualbox里),也可以是远程的(云)。
C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如ORACLE、SYBASE、InfORMix或 SQL Server。客户端需要安装专用的客户端软件。传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件, 加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高, 效率低。Client/Server结构是20世纪80年代末提出的。这种结构的系统把较复杂的计算和管理任务交给网络上的高档机器——服务器,而把一些频繁与用户打交道的任务交给前端较简单的计算机—客户机。通过这种方式,将任务合理分配到客户端和服务器端,既充分利用了两端硬件环境的优势,又实现了网络上信息资源的共享。由于这种结构比较适于局域网运行环境,因此逐渐得到了广泛的应用。在Client/Server结构的系统中,应用程序分为客户端和服务器端两大部分。客户端部分为每个用户所专有,而服务器端部分则由多个用户共享其信息与功能。客户端部分通常负责执行前台功能,如管理用户接口、数据处理和报告请求等;而服务器端部分执行后台服务,如管理共享外设、控制对共享数据库的操作等。这种体系结构由多台计算机构成,它们有机地结合在一起,协同完成整个系统的应用,从而达到系统中软、硬件资源最大限度的利用。任何一个应用系统,不管是简单的单机系统还是复杂的网络系统,都由3个部分组成:显示逻辑部分(表示层)、事务处理逻辑部分(功能层)和数据处理逻辑部分(数据层)。显示逻辑部分的功能是与用户进行交互;事务处理逻辑部分的功能是进行具体的运算和数据的处理;数据处理逻辑部分的功能是对数据库中的数据进行查询、修改和更新等。在两层模式的Client/Server结构中,显示逻辑部分和事务处理逻辑部分均被放在客户端,数据处理逻辑部分和数据库被放在服务器端。这样就使得客户端变得很“胖”,成为胖客户机,而服务器端的任务相对较轻,成为瘦服务器。这种传统的Client/Server结构比较适合于在小规模、用户数较少(≤100)、单一数据库且有安全性和快速性保障的局域网环境下运行,所以得到了广泛的应用。但随着应用系统的大型化,以及用户对系统性能要求的不断提高,两层模式(2-Tier)的Client/Server结构越来越满足不了用户需求。这主要体现在程序开发量大、系统维护困难、客户机负担过重、成本增加及系统的安全性难以保障等方面。
client/server表示客户端/服务器端模式,比如我们的杀毒软件就是这种结构
browser/server表示浏览器/服务器模式,比如我们的网站发布
两者区别:前者用户一般要安装客户端的软件或者程序,然后在服务器那边升级或者更新
后者一般只需要浏览器就可以工作,不需要安装其他软件,也是在服务器更新。
后者是近些年比较流行的软件开发模式。比如很多OA系统就是采用这种模式
Client/Server结构(C/S结构)是大家熟知的客户机和服务器结构。 它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。 目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件; 因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。 扩展资料 Client/Server的优点: 1、client/server由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度快。客户操作界面设计个性化,具有直观、简单、方便的特点,可以满足客户个性化的操作要求。 2、同时由于开发是针对性的,因此,操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求。 Client/Server的缺点: 1、由于是针对性开发,因此缺少通用性的特点,业务变更或改变不够灵活,需要重新设计和开发,增加了维护和管理的难度,进一步的业务拓展困难较多。 2、需要专门的客户端安装程序,分布功能弱,不能够实现快速部署安装和配置。兼容性差,对于不同的开发工具,相互之间很难兼容,具有较大的局限性。 3、若采用不同工具,需要重新改写程序。 开发成本较高,需要具有一定专业水准的技术员才能完成。 参考资料来源:百度百科-Client/Server
如果两个socket A、B 同时监听同一个端口。
只有A可以正常收发数据;B是不能收数据的。只有等待A关闭了后,B才能生效,才能正常收发数据。
listen这个函数 不知道你注意没,只要打开后,除非close socket 不然他是一直监听的。
所以要么你通过代码自动或手工实现close socket A,然后打开B,接收。 当要接收A时,又关闭B打开A。。 这样当然非常不理想。
所以最好把两个client绑定在不同的端口上。IP当然可以相同,你想象,一台计算机一个IP,却有那么多端口(0-65535)通信
mysql-server 与 mysql-client是DBMS的两个面向不同操作对象的工具。server是DBMS面向物理层次,包含存储数据的一系列机制、处理方法的集成;client是DBMS面向用户,提供一系列工具为用户所用,这些工具包括通常写的sql在内都要通过server的编译才能操作物理数据。
客户--client--server物理数据。
服务器--mysql-server是服务端。
docker镜像和操作系统没关系,docker最大的价值就是提出了镜像打包技术。首先你的明白什么是docker,什么是镜像,什么是容器,然后你就能明白镜像和操作系统之间的关系。docker是一个引擎,是基于内核的一种技术。比如Linux内核,那么它就关心是不是Linux内核,它不关心你是Ubuntu还是CentOS。所以docker也实现了和操作系统的解耦。镜像呢是把服务的运行环境打成了一个包,比如tomcat,镜像里面是把除操作系统的内核以外,然后再加上tomcat的二进制包。然后通过docker引擎构建出来一个tomcat的镜像。容器呢,比如我们想创建一个tomcat服务,之前的方式是在服务器中通过tar或者是rpm安装一个tomcat,然后在start tomcat;如果我们要安装多台的话我们需要多次手动去操作部署。现在有了tomcat镜像以后,我们可以直接利用镜像创建出多个tomcat来(关系是一个tomcat镜像可以创建出多个tomcat容器-即tomcat服务),把容器看成是tomcat的进程就行。
简单来说,一个程序运行,需要操作系统的支持,并且需要访问自己的私有的数据和软件。
docker是容器,它将所有的访问文件和操作系统的api重新定向了,让应用内感觉自己在一>个独立的操作系统上运行,而docker拦截了api调用,并且把那些全局的对操作系统的访问>进行了包装,使得程序不会真的访问它们。
因为docker程序访问的是容器包装的api,理论上说,只要在另一个操作系统上实现了这些>容器的api,就可以把程序移植上去,因为程序不直接和操作系统打交道,感觉不到不同系>统的不同。