首页 文章 精选 留言 我的

精选列表

搜索[Emacs化],共10000篇文章
优秀的个人博客,低调大师

虚拟化技术—docker容器—安装篇

核心概念 1.镜像 是一个只读的模板类似于安装系统用到的那个iso文件我们通过镜像来完成各种应用的部署。 2. docker容器 镜像类似于操作系统而容器类似于虚拟机本身。它可以被启动、开始、停止、删除等操作每个容器都是相互隔离的。 3. docker仓库 存放镜像的一个场所仓库分为公开仓库和私有仓库。最大的公开仓库是Docker hubhub.docker.com国内公开仓库http://dockerpool.com/ 一、安装 centos6上安装(6.5之前版本需要升级一下yum update ) yum install -y epel-release yum install -y docker-io 如果是centos7 yum install -y docker 启动docker /etc/init.d/docker start 二、镜像管理 docker pullcentos//从docker.com获取centos镜像如果太慢直接做个加速 先到https://cr.console.aliyun.com/注册一下,登录成功后,在控制台,看左侧,有一个加速器按钮,点开找到自己的专属加速链接,我的是https://u6vpvkfn.mirror.aliyuncs.com 然后vi/etc/sysconfig/docker 最下面增加一行: other_args="--registry-mirror=https://u6vpvkfn.mirror.aliyuncs.com" centos7是:OPTIONS="--registry-mirror=https://u6vpvkfn.mirror.aliyuncs.com" docker images//查看本地都有哪些镜像 docker tag centos syk123//为centos镜像设置标签为syk123再使用docker images查看会多出来一行改行的image id和centos的一样 docker search (image-name)//从docker仓库搜索docker镜像后面是关键词 docker run -t -i centos/bin/bash//用下载到的镜像开启容器-i表示让容器的标准输入打开-t表示分配一个伪终端要把-i -t放到镜像名字前面 当该镜像发生修改后我们可以把该镜像提交重新生成一个新版本进行在本地。 docker ps//查看运行的容器 docker rmi centos//用来删除指定镜像其中后面的参数可以是tag如果是tag时实际上是删除该tag只要该镜像还有其他tag就不会删除该镜像。当后面的参数为镜像ID时则会彻底删除整个镜像连通所有标签一同删除 docker ps -a//查看所有容器包括已经退出的。 三、创建镜像基于已有镜像的容器创建 运行docker run后进入到该容器中我们做一些变更比如安装一些东西然后针对这个容器进行创建新的镜像 docker commit -m "change somth"-a "somebody info"image_id//通过docker images获取id新镜像名字 例如docker commit -m "install httpd" -a "syk" 2c74d574293f centos_net-tools 这个命令有点像svn的提交-m加一些改动信息-a指定作者相关信息2c74d这一串为容器id再后面为新镜像的名字 四、创建镜像基于本地模板导入 模块获取可以直接在网上下载一个模块http://openvz.org/Download/templates/precreated wget https://download.openvz.org/template/precreated/centos-6-x86-minimal.tar.gz cat centos-6-x86.tar.gz |docker import - centos-6-x86 把现有镜像导出为一个文件 docker save -o syk-centos.tarcentos-6-x86 我们还可以用该文件恢复本地镜像 docker load --input aming-centos.tar或者 docker load < aming-centos.tar docker push image_name//可以把自己的镜像传到dockerhub官方网站 本文转自 sykmiao 51CTO博客,原文链接:http://blog.51cto.com/syklinux/1860204,如需转载请自行联系原作者

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

虚拟化技术—docker容器—网络模式

Docker作为目前最火的轻量级容器技术,有很多令人称道的功能,如Docker的镜像管理。然而,Docker同样有着很多不完善的地方,网络方面就是Docker比较薄弱的部分。因此,我们有必要深入了解Docker的网络知识,以满足更高的网络需求。这里先介绍Docker自身的4种网络工作方式。 1、Docker的4种网络模式 我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: §host模式,使用--net=host指定。 §container模式,使用--net=container:NAME_or_ID指定。 §none模式,使用--net=none指定。 §bridge模式,使用--net=bridge指定,默认设置。 下面分别介绍一下Docker的各个网络模式。 1.1、host模式 Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。 例如,我们在192.168.137.100/24的机器上用host模式启动一个含有web应用的Docker容器,监听tcp80端口。当我们在容器中执行任何类似ifconfig命令查看网络环境时,看到的都是宿主机上的信息。而外界访问容器中的应用,则直接使用192.168.137.100/24即可,不用任何NAT转换,就如直接跑在宿主机中一样。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。 1.2、container模式 这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。 1.3、none模式 这个模式和前两个不同。在这种模式下,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。 1.4、bridge模式 bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上。 当Docker server启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。接下来就要为容器分配IP了,Docker会从RFC1918所定义的私有IP网段中,选择一个和宿主机不同的IP地址和子网分配给docker0,连接到docker0的容器就从这个子网中选择一个未占用的IP使用。如一般Docker会使用172.17.0.0/16这个网段,并将172.17.42.1/16分配给docker0网桥。下面是拓扑图: 本文转自 sykmiao 51CTO博客,原文链接:http://blog.51cto.com/syklinux/1873221,如需转载请自行联系原作者

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

虚拟化技术—docker容器—Dockerfile篇

什么是Dockerfile? 按照平时,我们都需要先让一个容器跑起来,然后进去搭建制定自己的服务,那有没有更简洁的方法呢?Dockerfile就是为了更方便的制定容器的。 首先先看Dockerfile里的一些定义,这里从网上截了个图,比较形象: 创建目录: 要先把需要的软件包放在同一个目录下 编写Dockerfile,这里要特别提醒,Dockerfile编写需要非常注意空格!!! vimDockerfile 添加: #ThisisMyfirstDockerfile #Version1.0 #Author:syk #Baseimages FROMcentos #MAINTAINER MAINTAINERyongkang.shi #ADD ADDpcre-8.38.tar.gz/usr/local/src ADDnginx-1.8.1.tar.gz/usr/local/src #RUN RUNyuminstall-ywgetgccgcc-c++makeopenssl-devel RUNuseradd-s/sbin/nologin-Mwww #WORKDIR WORKDIR/usr/local/src/nginx-1.8.1 RUN./configure--prefix=/usr/local/nginx--user=www--group=www--with-http_ssl_module--with-http_stub_status_module--with-pcre=/usr/local/src/pcre-8.38&&make&&makeinstall RUNecho"daemonoff;">>/usr/local/nginx/conf/nginx.conf ENVPATH/usr/local/nginx/sbin:$PATH #EXPOSE EXPOSE80 #CMD CMD["nginx"] 运行命令创建容器: dockerbuild-tnginx-file:v2 /opt/docker-file/nginx/ 最后会提示构建成功: docker ps -a查看一下: 本文转自 sykmiao 51CTO博客,原文链接:http://blog.51cto.com/syklinux/1860231,如需转载请自行联系原作者

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

虚拟化技术—docker容器—管理篇

一、我们怎么更方便的进去已经start的容器呢? nsenter:可以通过这个命令进去docker的images里 首先获取一个容器的id: docker inspect --format "``.`State`.`Pid`"centos_with_nettools 获取一个id 10592 nsenter --target10592 --mount --yts --ipc --net 这样就进去了,当然这样很麻烦,所以可以写一个脚本: cat in.sh CNAME=$1 CPID=$(docker inspect --format "``.`State`.`Pid`" $CNAME) nsenter --target $CPID--mount --uts --ipc --net 设置权限: chmod +x in.sh 使用:./in.shcentos_with_nettools 二、查看docker网络 brctlshow 查看docker的网桥 iptables -t nat -L -n 三、容器创建好了,怎么对外提供服务呢? 容器都是独立的,资源隔离的,一个容器最常见的是只跑一个服务,但凡服务都都是有端口的,那么我们就要把容器内的端口映射到本机的端口上,然后对外提供服务 第一种:随机映射 docker run -P -d --name nginx1 nginx 第二种:指定映射 docker run -d -p 91:80 --name nginx2 nginx 四、数据卷 什么是数据卷? 当然是存放数据的,那么我们用来做什么?打个比方,一个网站后端不可能只有一台服务器,那么多台服务器怎么保证一些需要的数据一致呢?这里就要用到数据卷了,一个容器只用来保存数据,其他后台服务器都到这个容器里取数据,这样就可以保证数据一致性了。 先创建一个容器: dockerrun-it--namevolume-test1-hnginx-v/datanginx docker ps -l查看一下: dockerinspect-f"``.`Volumes`"volume-test1查看卷: 挂载: dockerrun-it--namevolume-test2-hnginx1-v/opt:/optcentos 注意:/opt后面不能有/号 dockerrun-it--namevolume-test2-hnginx1-v/opt:/opt:ro centos ro:表示在容器里不能写 这时创建新容器时就可以指定了 新建容器,数据卷从volume-test1上取 dockerrun-it--namevolume-test34--volumes-fromvolume-test1centos 本文转自 sykmiao 51CTO博客,原文链接:http://blog.51cto.com/syklinux/1860219,如需转载请自行联系原作者

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

docker 制作最小化Java镜像

前提:目前大部分的java images都是根据centos和Ubuntu做的,结果是镜像非常大,基本上300-500m,太影响docker的使用了。 思路:换更加轻量级的linux系统,删除jdk中无关的东西 先下载jdk的tar包,然后删除jdk中无关的东西 将jdk1.6.0_33.tgz 解压到 /usr/java/jdk 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 rm-rf/usr/java/jdk/*src.zip\ /usr/java/jdk/lib/missioncontrol\ /usr/java/jdk/lib/visualvm\ /usr/java/jdk/lib/*javafx*\ /usr/java/jdk/jre/lib/plugin.jar\ /usr/java/jdk/jre/lib/ext/jfxrt.jar\ /usr/java/jdk/jre/bin/javaws\ /usr/java/jdk/jre/lib/javaws.jar\ /usr/java/jdk/jre/lib/desktop\ /usr/java/jdk/jre/plugin\ /usr/java/jdk/jre/lib/deploy*\ /usr/java/jdk/jre/lib/*javafx*\ /usr/java/jdk/jre/lib/*jfx*\ /usr/java/jdk/jre/lib/amd64/libdecora_sse.so\ /usr/java/jdk/jre/lib/amd64/libprism_*.so\ /usr/java/jdk/jre/lib/amd64/libfxplugins.so\ /usr/java/jdk/jre/lib/amd64/libglass.so\ /usr/java/jdk/jre/lib/amd64/libgstreamer-lite.so\ /usr/java/jdk/jre/lib/amd64/libjavafx*.so\ /usr/java/jdk/jre/lib/amd64/libjfx*.so 以下dockerfile 基于AlpineLinux 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #AlpineLinuxwithaglibc-2.21andOracleJava7 FROMdocker.io /jeanblanchard/alpine-glibc #MAINTAINERFoxChan #JavaVersion #ENVJAVA_VERSION_MAJOR7 #ENVJAVA_VERSION_MINOR60 #ENVJAVA_PACKAGEjdk #installjava ADDjdk /usr/java/jdk #Setenvironment ENVJAVA_HOME /usr/java/jdk ENVPATH${PATH}:${JAVA_HOME} /bin 才158.3 MB,太酷了! 本文转自银狐博客51CTO博客,原文链接http://blog.51cto.com/foxhound/1725221如需转载请自行联系原作者 战狐

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

Android组件化与插件化开发

https://www.cnblogs.com/android-blogs/p/5703355.html http://blog.csdn.net/guiying712/article/details/55213884 gradle插件开发 Groovy语法:http://www.groovy-lang.org/documentation.html https://www.jianshu.com/p/d53399cd507b(初级) 坑 1)Error:The 'java' plugin has been applied, but it is not compatible (plugins的grade里引用了com.android.libary,所有android libary的东西都要删除掉) 2) 看不到gradle的日志,message那一栏一般是没有gradle console,所以看不到gradle编译的的日志。 3) 点击提示的那个按钮才会有日志。https://www.jianshu.com/p/af2b0a43133f(插件有2种方式) **groovy语音里添加参数project.extensions.create('dellogExtension', DelLogExtension); 在build.gradle创建 dellogExtension{ //设置字段属性 } 组件化开发 https://www.jianshu.com/p/186fa07fc48a?from=groupmessage http://blog.csdn.net/guiying712/article/details/55213884(十分详细完整,真的!) activity路由: 1)https://github.com/mzule/ActivityRouter 2)https://github.com/alibaba/ARouter(阿里研发) https://github.com/luojilab/DDComponentForAndroid(DDComponent) 1)组件的加载与卸载方案 (组件的生命周期)https://www.jianshu.com/p/1b1d77f58e84 不采用“壳app依赖组件”的方式,还是采用接口的形式,在组件里声明自己提供的服务。 不得不说这种实现组件组装的方式比我之前看的博客http://blog.csdn.net/guiying712/article/details/55213884 直接依赖的方式要好:至少不用将变量修改来修改去 注意: 1.组件或者壳app里的资源除了清单文件之外,不要重复,否则会出现各种奇怪的问题。 2. 插件化开发 https://www.jianshu.com/p/353514d315a7(插件化开发最强合集) 1)自定义类加载器:http://blog.csdn.net/jearbilove/article/details/25538819http://blog.csdn.net/yangxin_blog/article/details/48214857(类加载器的类型) 2) Hook技术 1)http://blog.csdn.net/u013022222/article/details/51111814(良心博客,代理设计模式) 某些类as/eclipse不显示的问题http://blog.csdn.net/chun0801/article/details/56681010 本文转自屠夫章哥 51CTO博客,原文链接:http://blog.51cto.com/4259297/2065962,如需转载请自行联系原作者

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

InstantRun原理(1)——初始化逻辑

Android Studio 2.0开始支持 Instant Run 特性, 使得在开发过程中能快速将代码变化更新到设备上。之前,更新代码之后需要先编译一个完整的新Apk,卸载设备上已安装的这个 Apk (若有),再 push 到设备安装,再启动。有了 Instant Run 特性之后,只需要 push 一些增量到设备上,直接执行,可以为开发人员节省大量时间。当然 Instant Run 特征只在 debug 时有效,对发布 release 版没有任何影响。 对于InstantRun不了解的同学可以去查看官方文档 Instant Run 通过 hot swap, warm swap, code swap 三种 swap 来实现。Android Studio 会根据代码的改变自动决定 push 哪种 swap 到设备上,并根据不同的 s

资源下载

更多资源
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等操作系统。

用户登录
用户注册