首页 文章 精选 留言 我的

精选列表

搜索[学习],共10003篇文章
优秀的个人博客,低调大师

Docker安装Oracle12C,快速搭建Oracle学习环境

安装说明 1.操作系统CentOS7_x64 2.安装的数据库为Oracle12C 3.已经安装了Docker环境 4.需要检查是否有swap分区,如果没有请设置 安装 1.Docker安装 镜像准备 sh 复制代码 docker pull sath89/oracle-12c 启动镜像 sh 复制代码 docker run -d --name oracle12c -p 8080:8080 -p 1521:1521 -v $PWD/data:/mnt -e TZ=Asia/Shanghai sath89/oracle-12c 注: oracle12c为Docker容器名称 8080:8080为内...

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

学习JQuery

1. 重要基础 简写加载函数,事情必须在DOM加载之后,否则无法绑定对象 $(document).ready() $(function(){}); //推荐缩写 使用包括 JQuery 库外语法类似的 JavaScript 库时,注意命名冲突 Jquery.noConflict() var $$ = JQuery; //换成 $$ 调用Jquery函数 2. 基础选择器 (选择器使用css1,css2的全部选择器语法,以及部分css3语法。) 对 id 元素使用选择器: 默认对第一个元素外的其他元素"失明",返回第一个对象。 调用属性 .length 或函数 .size() 查看对象集合的数量 获取对象集合里的元素 .get(0) 或加下标 [0] 群组选择器: 逗号列举 $("label, #text, .blue") 后代选择器 $("#nav h4 span") $("#nav").find("h4").find("span") 子代选择器(只能是直接的父子关系) $("#nav > span") $("#nav").children("span") 获取 span 的下一个同级兄弟元素 p $("div span + p") $("div span").next() 获取 span 以下的所有同级兄弟元素 p $("div span ~ p") $("div span").nextAll("p") 同级向上(向下)选取元素,直到找到 label 元素为止(不包括 label 元素) .prevUntil("label") //向上 .nextUntil("label") //向下 寻找同级兄弟 .siblings("input") .prevAll() 加上 .nextAll() 3. 过滤选择器 第一个(最后一个)元素 :first :last 排除满足条件的元素 .not(.blue) 奇(偶)序元素 :odd :even 等于/大于/小于 :eq(2) :gt(3) :lt(5) 标题元素(h1 ~ h6) :header 正在执行动画的元素 :animated 正被聚焦的元素 :focus 包含指定文本的元素 :contains(".com") 不包含文本或者无子元素的元素 :empty 包含文本或子元素的元素 :parent 具有指定类的元素 :has(".blue") 不可见(可见)的元素 :hidden :visible 每个父元素的第一个(最后一个)子元素 :first-child :last-child 只有一个子元素的元素 :only-child 每个指定子元素的元素 :nth-child(odd) 匹配的元素 .is(".bule") .hasClass("blue") .filter(".blue") .slice(1, 4) //第二个到第四个元素 4. 表单选择器 选择指定元素 :input :button 选择不同类型的input元素 :text :password :radio :checkbox :submit :reset :image :button :file :hidden 选择不同属性的元素 :enabled :disabled :checked :selected 5. 基本 DOM 操作 获取(设置)元素html内容 .html() //加参数则设置 获取(设置)元素文本内容 .text() //加参数则设置 获取(设置)表单元素内容 .val() //加参数则设置 获取(设置)元素属性值 .attr() //加参数则设置 .attr({A: a, B: b}) //设置多个参数 获取(设置)css样式 .css() //加参数则设置,多参数设置同上 添加css样式 .addClass("blue") .addClass("blue red green") 移除css样式 .removeClass("blue") //移除多个类同上 切换css样式 .toggleClass("blue") //切换多个类同上 .toggleClass(function(){}, [rate]) //自定义切换规则,第二个为可选参数频率 获取(设置)高度(宽度) .height() //加参数则设置 .width() //加参数则设置 .height(function(object, value){}) //object指定元素、value指定元素的高度 获取内外边框高度宽度 .innerWidth() .innerHeight() .outerWidth() //包括边框和内边距 .outerHeight() //同上 .outerWidth(true) //同上并包括外边框 .outerHeight(true) //同上 相对偏移 .offset() //相对于视口 .position() //相对于父元素 滚动条相关(获取/设置) .scrollTop() //垂直 .scrollLeft() //水平 6. DOM节点操作 元素内部前面插入节点 .prepend(html) //插入节点html .prepend(function(new, parent)) //向parent元素内部前面插入节点new .prependTo(target) //将元素移至指定元素target 元素内部后面插入节点 .append(html) .append(function(new, parent){}) .appendTo(target) 元素外部前面插入节点 .before() .before(function(new, parent){}) .insertBefore(target) 元素外部后面插入节点 .after() .after(function(new, parent){}) .insertAfter(target) 包裹节点 .wrap(target) //参数可为html内容或者对象节点 .wrap(function(target){}) .unwrap() //解除一层包裹 批量包裹 .wrapAll(parent) //被元素parent包裹 .wrapInner(parent) //包裹元素parent的子元素 复制节点 .clone(true) //加上true表示同时复制绑定事件、不加则只复制元素和内容 删除节点 .remove(‘p’) //可选参数 保留事件行为的删除 .detach() 删除节点内容 .empty() 替换节点 .replaceWith('span') .replaceAll('p') 7. 基本事件 (以下函数均含匿名函数) 点击、双击 .click() .dbclick() 点击弹起瞬间、弹起后 .mouseup() .mousedown() 鼠标穿出入触发(包括子元素) .mouseenter() .mouseleave() 鼠标穿出入触发(不包括子元素) .mouseover() .mouseout() 鼠标移动 .mousemove() 键盘按下弹起瞬间、弹起后 .keyup() .keydown() .keypress() 焦点激活与丢失 .focus() .blur() .focusin() .focusout() 其他事件 .select() //文本选定 .change() //值被改变 .submit //表单提交 .scroll() //滚动条拖动 .unload() //卸载本页面 .hover(fun1, [fun2]) //鼠标移入(移出) 8. 事件对象 (function(event){}) 页面坐标(属性) pageX //相对于页面 pageY screenX //相对于显示屏 screenY clientX //相对于视口 clientY 9. 高级事件 模拟用户行为 .trigger("click", [param1, param2]) .trigger("click", [{paramA1 : a, paramA2 : b}, {paramB1, paramB2}]) 绑定(解绑)事件 .on("click dbclick", [function(){}]) .off("click") 仅触发一次事件 .one() //用法同.on 10. 动画 显示/隐藏 .show() //可选参数持续时间,如3000表示3秒,或者“slow” .hide() //添加第二参数闭包函数则动画完毕后执行 自定义动画 .animate({'top': '+=88px', 'height': '200px'}, 'slow') 队列动画 .queue([function([next]){ ......; [next()[]}]) .dequeue() //两个函数都是执行下一个函数 上下卷动 .slideUp() .slideDown() .slidToggle() 动画操作 .delay() .stop() 动画属性 .fx.interval //运行帧数 .fx.off = ture //关闭动画效果 11. AJAX .load() 第一个参数:目的 url 或者带选择器的 url (可带get的参数) 第二个参数:不为空则为post方式 第三个参数:闭包函数(返回数据,状态,XMLHttpRequest对象) .get() .post() .AJAX() //底层函数 (以下为传入参数的属性) url type timeout data dataType beforeSend complete success error global cache content contentType async processData dataFilter ifModified jsonp username password scriptCharset xhr traditional $.ajaxStart() $.ajaxStop() $.ajaxError() $.ajaxSuccess() $.ajaxComplete() $.ajaxSend() $.ajaxSetup() //请求默认值来初始化参数 $('form').serialize() //获取表单所有值 $('form').serializeArray() //返回键值对的Json对象 12. 工具函數 除去字符串两边空格 $.trim(str) 遍历数组(对象) $.each(arr, function(index, value){}) 数据筛选 $.grep(arr, function(element, index){}) 修改数据 $.map(arr, function(element, index){}) 合并数组 $.merge(arr1, arr2) 6.测试类型函数 $.isArray(obj) $.isFunction(obj) $.isEmptyObject(obj) $.isPlainObject(obj) //纯粹对象 $.isNumeric(data) $.isWindow(data) //window对象 $.contains(obj) //包含其他节点 判断类型函数 $.type(data) 将对象键值对转换为URL字符串键值对 $.param(obj) 调用内部函数 $.proxy(obj, 'objFunc') //返回obj对象里的objFunc函数 13. 插件 1.Validate.js (jquery.validata.js 、 jquery.validate.messages_zh.js) 相关代码 $('form').validate() 必填项 class = “required” 邮箱 class = "email" 不得少于两位 minlength = "2" 网址 class = "url" 2. 自动完成插件 (jquery.autocomplete.js 、 jquery-migrate-1.2.1.js) var name = ['John', 'Jack', 'Tom', 'Kitty']; $('form input[name=name]').autocomplete(name, {minChars: 0}) //0表示不需要输入一个字符即可显示所有备选数据 3. 自定义插件 分类 封装对象方法的插件 封装全局函数的插件 选择器插件 插件规范 名字: jquery.[name].js 局部对象附加 jquery.fn 对象上,全局函数附加在 jquery 上 插件内部,this 指向的是当前的局部对象 可以通过 this.each 来遍历所有元素 所有的方法或插件,必须用分号结尾,避免出现问题 插件应该返回的是 JQuery 对象,以保证可链式连缀 避免插件内部使用 $ ,如果要使用,请传递 JQuery 进去

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

JSP学习

JSP的静态包含和动态包含区别 静态包含语句:<%@ include file="路径" %> 动态包含语句:<jsp:include page="路径"></jsp:include> 区别:两者的执行结果都是相同的,但是执行过程不同,静态包含先包含,后编译处理,而动态包含先编译处理,后包含,如果去执行这2个jsp页面命令看看生成的文件就知道了,静态包含对应只生成一个class文件,动态包含则不止生成一个class文件,那么这样当在包含的时候如果主文件包含其他文件时变量名相同就会导致冲突覆盖变量问题,而动态包含则不会,相当于调用不同的jsp,变量的空间都不同,自然不会覆盖,所以一律推荐使用动态包含语句 JSP的九大内置对象和四大作用域 九大对象:pageContext,request,response,session,application,config,out,page,exception 四大作用域:page范围:只在一个页面中保存数据(eg:pageContext.setAttribute(key,value)和pageContext.getAttribute(key)方法来测试) request范围:只在一个请求中保存数据(对应都有setAttribute和getAttribute方法设置和获取数据) session范围:在一次会话范围中保存数据,默认会话30分钟,只要不关掉浏览器保持单个用户访问就行了。 application范围:在整个服务器上保存数据,所有用户共享 cookie和session的区别:cookie的信息是存放在客户端的,session的信息是存放在服务器端的 提交数据的get方式和post方式区别:① get方式提交的数据放在url后面,以?分割url和传输数据,参数之间以&相连,post方式提交的数据放在数据包中;② get方式提交数据对长度有限制,而post方式理论上对长度无限制; ③ get在浏览器回退是无害的,而post在浏览器回退会再次请求 ④ get的主要优点是效率高 Cookies功能:主要用于实现保存账号密码 cookies其实是一种服务器和浏览器交换数据的方式,cookies由服务器创建,发送给浏览器,浏览器把cookies保存在用户本地,当再次访问网站的时候,就把cookies发送给服务器。 cookies操作截图 Session,即会话,会话指的是从用户打开浏览器访问一个网站开始,无论在这个网站中访问了多少页面,点击了多少链接,都属于同一个会话。 直到该用户关闭浏览器为止,都属于同一个会话。采用键值对方式存储数据。比如登录一个网站,登录后,在短时间内,依然可以继续访问而不用重新登录。但是较长时间不登录,依然会要求重新登录,这是因为服务端的session在一段时间不使用后,就失效了。这个时间,在Tomcat默认配置下,是30分钟。可以通过 tomcat/conf/web.xml 中的session-config 配置进行保存时间调整 请求重定向(response.sendRedirect)和请求转发(request.getRequestDispatcher)只能适合jsp 截图 JSTL标准标签库 和 EL表达式 EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中脚本的编写。 foreach循环语句 格式化日期参数截图 EL表达式 JavaEE的三层架构 web层:与客户端交互 service层:复杂业务处理 dao层:与数据库进行交互 Web是一种典型的分布式应用架构,web架构的精华包括三个方面:HTML(超文本标记语言)技术是实现信息文档的表示,URL(统一资源定位)技术实现全球信息的精确定位,HTTP(超文本传输协议)实现分布式的信息传输。web的基本工作原理是请求与响应原理,用户通过浏览器向服务器发出请求,服务器对请求进行处理响应,把响应结果发给客户端,由浏览器解析显示所请求的结果信息。 架构图 浏览器中的GET请求和POST请求区别讲解: GET请求 向服务器请求数据 参数带在请求路径后面,意味着参数会暴露着,不安全,一般不用来提交数据,只是用来获取数据, 参数长度有限 POST请求 向服务器提交数据 比如注册 post请求无长度限制 可以提交敏感数据,常用于提交表单 常见HTTP状态码: 200 请求成功,一切正常 404 请求页面找不到 403 没有权限

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

学习python

Python循环嵌套 利用for、while语句的连用进行python的循环 For m in list1: Fornin list2: …… …… While experion: While expersion : Statement(s) Statement(s) Python break语句 break在python中的应用和C/C++中的应用是一样的,break用来终止循环语句。 Break用于while和for循环中,当使用嵌套循环时,break语句将停止执行最深层的循环,并开始执行下一行代码。 Python continue语句 Continue语句跳出本次循环,break跳出整个循环 Contiune语句用来告诉python跳出当前循环的剩余语句,然后继续进行下一轮循环。 Python pass语句 pass是空语句,是为了保持程序结构的完整性。 Python日期和时间 Python可以通过time和calender模组来处理时间,详细可以查看模组表 python函数 定义一个函数 函数代码块以def关键词开头,后接函数标识符名称和圆括号()。 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数内容以冒号起始,并且缩进。 Return[expression]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None。 语法 1 2 3 4 deffunctionname(parameters): "函数_文档字符串" function_suite return[expression] 所有的参数(自变量)在python里都是按引用传递,如果调用函数,修改参数,原始的参数也会被改变 参数在调用函数时使用的正式参数类型: 必备参数(参数必须以正确的顺序传入函数,调用的数量和声明时的一样)、命名参数(调用方式参数的命名确定传入的参数值,可以跳过不传参数或者乱传参数)、缺省参数(调用时缺省参数的值没有传入,则被认为时默认值)、不定长参数(处理比当初声明时更多的参数) 不定长参数: deffunctionname([formal_args,]*var_args_tuple): "函数_文档字符串" function_suite return[expression] 加了星号(*)的变量名会存放所有未命名的变量参数。 匿名函数 用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。 Lambda函数能接收任何数量的参数但只能返回一个表达式的值,同时只能不能包含命令或多个表达式。 匿名函数不能直接调用print,因为lambda需要一个表达式。 lambda函数拥有自己的名字空间,且不能访问自有参数列表之外或全局名字空间里的参数。 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目 的是调用小函数时不占用栈内存从而增加运行效率。 Return语句 函数的返回值:return语句【表达式】推出函数,向调用方返回一个表达式 变量的作用域:常用的全局变量和局部变量(C/C++中一样) 局部变量和全局变量定义的位置不同,局部变量定义在函数内部,全局变量定义在函数外 Python模块:模块让你更够更加有逻辑的去组织你的代码段 模块能定义函数、类、变量,也可以包含执行代码 模块通过import语句进行调用 一个模块只会被导入一次,不管你执行对少次import FromAimportB:要导入模块A的B函数

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

Laravel学习

Laravel是个很强大的PHP框架,它剔除了开发中Web开发中比较痛苦的过程,提供了验证(authentication),路由(routing),Session和缓存(caching)等开发过程中常用到的工具或者功能。 Laravel的配置都存放在app/config中。 里面所有的*.php都按照return的形式返回数据,那么就可以使用Config::get("key")来获取配置。使用Config::set("key", "value") 来赋值配置项 要想使用不同的环境配置,就需要在config下创建对应配置的文件夹。然后它会覆盖对应的配置项。 获取当前的环境是使用App::environment(),判断当前环境是什么是使用:App::environment("local") providers是用来配置对应的服务的,比如: Laravel的请求周期: 1 请求先从public/index.php中进入 2 bootstrap/start.php文件创建app并检测环境 3 内部的 /Illuminate/Foundation/start.php文件配置相关设置并加载服务器 4 加载app/start目录下的文件 5 加载app/routes.php的路由设置 6 request通过controller等转化为response 7 返回response 路由配置: 配置的格式是: Route::get('foo/bar', funciton(){return 'Hello World';}) 路由参数是可以有下面几种的: 可选路由参数: 带有默认的可选的路由参数: 用正则表达式限定的路由参数: 传递参数限定的数组: 定义全局模式: 不同的参数定位到不同的路由: 好,现在有个问题是某些路由必须要登录或者验证才能访问怎么办?这里就使用到了路由过滤器这个东西。 比如下面这个例子,当年龄小于200的时候就跳转到主页: Request中的操作: 获取用户提交的值:Input::get('name'); 获取用户提交的值并指定默认值:Input::get('name', 'Sally'); 用户提交的信息是否存在:Input::has('name') 获取所有用户提交的信息:Input::all() 获取其中几项指定的信息:Input::only('username', 'password'); 获取除几项之外的提交信息:Input::except('card'); 访问用户提交的数组:Input::get('products.0.name'); cookie操作: 获取Cookie中的值:Cookie::get('name') 添加一个Cookie: $response = Response::make('Hello World'); response−>withCookie(Cookie::make(′name′,′value′,response−>withCookie(Cookie::make(′name′,′value′,minutes)); 如果想在Response之前设置Cookie,使用Cookie::queue() Cookie::queue(name,name,value, $minute); Session操作: 存储一个变量:Session::put('key', 'value'); 读取一个变量:Session::get('key'); 读取一个变量或者返回默认值:Session::get('key', 'default'); 检查一个变量是否存在:Sesssion::has('key'); 删除一个变量:Session::forget('key'); 删除所有Session变量:Session::flush(); 文件上传操作: 获取用户上传文件:$file = Input::file('photo'); 判断是否有上传这个文件:Input::hasFile('photo'); 移动上传的文件: Input::file('photo')->move($destinationPath); Input::file('photo')->move(destinationPath,destinationPath,fileName); 获取上传文件大小: Input::file('photo')->getSize(); 获取上传文件类型: Input::file('photo')->getMimeType(); 获取用户请求路径:Request::path(); 获取用户请求URL:Request::url(); 获取Header中的信息:Request::header('Content-Type'); 获取SERVER中的信息:Request::server('PATH_INFO'); 重定向: 重定向: return Redirect::to('user/login'); 有参数的重定向: return Redirect::to('user/login')->with('message', 'Login Failed'); 重定向到路由:return Redirect::route('profile', array('user' => 1)); 返回重定向到Action:return Redirect::action('UserController@profile', array('user' => 1)); 视图层: 传递数据给视图:$view = View::make('greeting')->with('name', 'Steve'); 将一个视图传递给另一个视图:$view = View::make('greeting')->nest('child', 'child.view'); 返回json:return Response::json(array('name' => 'Steve', 'state' => 'CA')); 返回jsonp:return Response::json(array('name' => 'Steve', 'state' => 'CA'))->setCallback(Input::get('callback')); 返回下载文件: return Response::download($pathToFile); return Response::download(pathToFile,pathToFile,status, $headers); 一个基本的控制器: 路由就长这样: 默认中,app/start/global.php文件中包含了一个处理所有异常的处理器。 监听fatal error,可以使用App::fatal方法。 日志操作: Log::info Log::warning Log::error 本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/p/3830750.html,如需转载请自行联系原作者

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

mmap学习

内存页: Linux是以页为单位来管理物理内存的,一页大小一般等于4096字节。页容量越大,系统中可能存在的内存碎片就越多。 mmap将一个磁盘上的文件或者对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。 当使用mmap映射文件到进程后,就可以直接操作这段虚拟地址进行文件的读写等操作,不必再调用read,write等系统调用。 采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。比如像管道和消息队列,需要在内核和用户空间进行四次的数据拷贝。 mmap的系统操作有两个: 1 2 3 4 5 # include <sys/mman.h> void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset); int munmap(void *start, size_t length); 第一个函数mmap,将文件描述符fd中的内容放到内存start --- ( start+ length) 的空间中。 port: 期望的内存保护方式,比如内存可读/可写/可执行,但是不能与文件的打开模式冲突。就是只能是文件权限的子集。 flag: 指定映射对象的类型 fd: 被映射的文件描述符。 第二个函数munmap,解除一个映射关系。 这两个函数的说明文档在: http://man7.org/linux/man-pages/man2/mmap.2.html 例子 比如这个例子是php的apc使用了mmap: 1 2 3 4 5 6 7 8 9 10 11 #strace -p `cat / var /run/httpd.pid` open( "/var/www/html/apc_load.php" , O_RDONLY) = 13 ... mmap2(NULL, 31457280, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 1232, 0) = 0xb5ce7000 ... nanosleep({3600, 0}, mmap2() 系统调用执行的操作几乎与mmap(2) 一样,唯一的区别在于最后一个参数给出的在文件中的偏移是以4096-字节为单位。 这个mmap就在内存中空出30M的空间做内存映射 php的apc缓存加速 php的apc大致原理是将php的opcode(php的操作码)使用mmap映射(就是复制)到共享内存中,然后下次用户再访问调用php访问,就可以直接去共享内存中读取,而不需要再到磁盘上读取了。 当然当php文件更新的时候,opcode也会自动失效(有检测机制)。 本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/p/3171056.html,如需转载请自行联系原作者

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

Docker学习

1. 查看docker信息(version、info) #查看docker版本$dockerversion#显示docker系统的信息$dockerinfo 2. 对image的操作(search、pull、images、rmi、history) #检索image$dockersearchimage_name#下载image$dockerpullimage_name#列出镜像列表;-a,--all=falseShowallimages;--no-trunc=falseDon'ttruncateoutput;-q,--quiet=falseOnlyshownumericIDs$dockerimages#删除一个或者多个镜像;-f,--force=falseForce;--no-prune=falseDonotdeleteuntaggedparents$dockerrmiimage_name#显示一个镜像的历史;--no-trunc=falseDon'ttruncateoutput;-q,--quiet=falseOnlyshownumericIDs$dockerhistoryimage_name 3.启动容器(run) docker容器可以理解为在沙盒中运行的进程。这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell 环境等等。但这个沙盒默认是不会运行任何程序的。你需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止。 #在容器中运行"echo"命令,输出"helloword"$dockerrunimage_nameecho"helloword"#交互式进入容器中$dockerrun-i-timage_name/bin/bash#在容器中安装新的程序$dockerrunimage_nameapt-getinstall-yapp_name Note: 在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的。apt-get 命令执行完毕之后,容器就会停止,但对容器的改动不会丢失。 4. 查看容器(ps) #列出当前所有正在运行的container$dockerps#列出所有的container$dockerps-a#列出最近一次启动的container$dockerps-l 5. 保存对容器的修改(commit) 当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。 #保存对容器的修改;-a,--author=""Author;-m,--message=""Commitmessage$dockercommitIDnew_image_name Note:image相当于类,container相当于实例,不过可以动态给实例安装新软件,然后把这个container用commit命令固化成一个image。 6. 对容器的操作(rm、stop、start、kill、logs、diff、top、cp、restart、attach) #删除所有容器$dockerrm`dockerps-a-q`#删除单个容器;-f,--force=false;-l,--link=falseRemovethespecifiedlinkandnottheunderlyingcontainer;-v,--volumes=falseRemovethevolumesassociatedtothecontainer$dockerrmName/ID#停止、启动、杀死一个容器$dockerstopName/ID$dockerstartName/ID$dockerkillName/ID#从一个容器中取日志;-f,--follow=falseFollowlogoutput;-t,--timestamps=falseShowtimestamps$dockerlogsName/ID#列出一个容器里面被改变的文件或者目录,list列表会显示出三种事件,A增加的,D删除的,C被改变的$dockerdiffName/ID#显示一个运行的容器里面的进程信息$dockertopName/ID#从容器里面拷贝文件/目录到本地一个路径$dockercpName:/container_pathto_path$dockercpID:/container_pathto_path#重启一个正在运行的容器;-t,--time=10Numberofsecondstotrytostopforbeforekillingthecontainer,Default=10$dockerrestartName/ID#附加到一个运行的容器上面;--no-stdin=falseDonotattachstdin;--sig-proxy=trueProxifyallreceivedsignaltotheprocess$dockerattachID Note:attach命令允许你查看或者影响一个运行的容器。你可以在同一时间attach同一个容器。你也可以从一个容器中脱离出来,是从CTRL-C。 7. 保存和加载镜像(save、load) 当需要把一台机器上的镜像迁移到另一台机器的时候,需要保存镜像与加载镜像。 #保存镜像到一个tar包;-o,--output=""Writetoanfile$dockersaveimage_name-ofile_path#加载一个tar包格式的镜像;-i,--input=""Readfromatararchivefile$dockerload-ifile_path#机器a$dockersaveimage_name>/home/save.tar#使用scp将save.tar拷到机器b上,然后:$dockerload</home/save.tar 8、 登录registry server(login) #登陆registryserver;-e,--email=""Email;-p,--password=""Password;-u,--username=""Username$dockerlogin 9. 发布image(push) #发布docker镜像$dockerpushnew_image_name 10.根据Dockerfile 构建出一个容器 #build --no-cache=falseDonotusecachewhenbuildingtheimage -q,--quiet=falseSuppresstheverboseoutputgeneratedbythecontainers --rm=trueRemoveintermediatecontainersafterasuccessfulbuild -t,--tag=""Repositoryname(andoptionallyatag)tobeappliedtotheresultingimageincaseofsuccess$dockerbuild-timage_nameDockerfile_path 本文转自yzy121403725 51CTO博客,原文链接:http://blog.51cto.com/lookingdream/1836230,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

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

Apache Tomcat

Apache Tomcat

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

JDK

JDK

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text

Sublime Text

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