Merge pull request #2 from LCTT/master

更新 20150131
This commit is contained in:
Chang Liu 2015-01-31 11:11:50 +08:00
commit 2ec27ff00f
11 changed files with 481 additions and 420 deletions

View File

@ -0,0 +1,158 @@
Docker 的现状与未来
================================================================================
### Docker - 迄今为止发生的那些事情 ###
Docker 是一个专为 Linux 容器而设计的工具集,用于‘构建、交付和运行’分布式应用。它最初是 DotCloud 的一个开源项目于2013年3月发布。这个项目越来越受欢迎以至于 DotCloud 公司都更名为 Docker 公司(并最终[出售了原有的 PaaS 业务][1])。[Docker 1.0][2]是在2014年6月发布的而且延续了之前每月更新一个版本的传统。
Docker 1.0版本的发布标志着 Docker 公司认为该平台已经充分成熟,足以用于生产环境中(由该公司与合作伙伴提供付费支持选择)。每个月发布的更新表明该项目正在迅速发展,比如增添一些新特性、解决一些他们发现的问题。该项目已经成功地分离了‘运行’和‘交付’两件事,所以来自任何版本的 Docker 镜像源都可以与其它版本共同使用(具备向前和向后兼容的特性),这为 Docker 应对快速变化提供了稳定的保障。
Docker 之所以能够成为最受欢迎的开源项目之一可能会被很多人看做是炒作但是也是由其坚实的基础所决定的。Docker 的影响力已经得到整个行业许多大企业的支持,包括亚马逊, Canonical 公司, CenturyLink, 谷歌, IBM, 微软, New Relic, Pivotal, 红帽和 VMware。这使得只要有 Linux 的地方Docker 就可以无处不在。除了这些鼎鼎有名的大公司以外,许多初创公司也在围绕着 Docker 发展,或者改变他们的发展方向来与 Docker 更好地结合起来。这些合作伙伴们(无论大或小)都将帮助推动 Docker 核心项目及其周边生态环境的快速发展。
### Docker 技术简要综述 ###
Docker 利用 Linux 的一些内核机制例如 [cGroups][3]、命名空间和 [SElinux][4] 来实现容器之间的隔离。起初 Docker 只是 [LXC][5] 容器管理器子系统的前端,但是在 0.9 版本中引入了 [libcontainer][6],这是一个原生的 go 语言库,提供了用户空间和内核之间的接口。
容器是基于 [AUFS][7] 这样的联合文件系统的,它允许跨多个容器共享组件,如操作系统镜像和已安装的相关库。这种文件系统的分层方法也被 [Dockerfile][8] 的 DevOps 工具所利用,这些工具能够缓存成功完成的操作。这就省下了安装操作系统和相关应用程序依赖包的时间,极大地加速测试周期。另外,在容器之间的共享库也能够减少内存的占用。
一个容器是从一个镜像开始运行的它可以来自本地创建本地缓存或者从一个注册库registry下载。Docker 公司运营的 [Docker Hub 公有注册库][9],为各种操作系统、中间件和数据库提供了官方仓库存储。各个组织和个人都可以在 docker Hub 上发布的镜像的公有库,也可以注册成私有仓库。由于上传的镜像可以包含几乎任何内容,所以 Docker 提供了一种自动构建工具(以往称为“可信构建”),镜像可以从一种称之为 Dockerfile 的镜像内容清单构建而成。
### 容器 vs. 虚拟机 ###
容器会比虚拟机更高效,因为它们能够分享一个内核和分享应用程序库。相比虚拟机系统,这也将使得 Docker 使用的内存更小即便虚拟机利用了内存超量使用的技术。部署容器时共享底层的镜像层也可以减少存储占用。IBM 的 Boden Russel 已经做了一些[基准测试][10]来说明两者之间的不同。
相比虚拟机系统容器具有较低系统开销的优势所以在容器中应用程序的运行效率将会等效于在同样的应用程序在虚拟机中运行甚至效果更佳。IBM 的一个研究团队已经发表了一本名为[虚拟机与 Linux 容器的性能比较]的文章[11]。
容器只是在隔离特性上要比虚拟机逊色。虚拟机可以利用如 Intel 的 VT-d 和 VT-x 技术的 ring-1 [硬件隔离][12]技术。这种隔离可以防止虚拟机突破和彼此交互。而容器至今还没有任何形式的硬件隔离,这使它容易受到攻击。一个称为 [Shocker][13] 的概念攻击验证表明,在 Docker 1.0 之前的版本是存在这种脆弱性的。尽管 Docker 1.0 修复了许多由 Shocker 漏洞带来的较为严重的问题Docker 的 CTO Solomon Hykes 仍然[说][14],“当我们可以放心宣称 Docker 的开箱即用是安全的,即便是不可信的 uid0 程序超级用户权限程序我们将会很明确地告诉大家。”Hykes 的声明承认,其漏洞及相关的风险依旧存在,所以在容器成为受信任的工具之前将有更多的工作要做。
对于许多用户案例而言在容器和虚拟机之间二者选择其一是种错误的二分法。Docker 同样可以在虚拟机中工作的很好,这让它可以用在现有的虚拟基础措施、私有云或者公有云中。同样也可以在容器里跑虚拟机,这也类似于谷歌在其云平台的使用方式。像 IaaS 服务这样普遍可用的基础设施,能够即时提供所需的虚拟机,可以预期容器与虚拟机一起使用的情景将会在数年后出现。容器管理和虚拟机技术也有可能被集成到一起提供一个两全其美的方案;这样,一个硬件信任锚微虚拟化所支撑的 libcontainer 容器,可与前端 Docker 工具链和生态系统整合,而使用提供更好隔离性的不同后端。微虚拟化(例如 Bromium 的 [vSentry][15] 和 VMware 的 [Project Fargo][16])已经用于在桌面环境中以提供基于硬件的应用程序隔离,所以类似的方法也可以用于 libcontainer作为 Linux内核中的容器机制的替代技术。
### ‘容器化’ 的应用程序 ###
几乎所有 Linux 应用程序都可以在 Docker 容器中运行,并没有编程语言或框架的限制。唯一的实际限制是以操作系统的角度来允许容器做什么。即使如此,也可以在特权模式下运行容器,从而大大减少了限制(与之对应的是容器中的应用程序的风险增加,可能导致损坏主机操作系统)。
容器都是从镜像开始运行的,而镜像也可以从运行中的容器获取。本质上说,有两种方法可以将应用程序放到容器中,分别是手动构建和 Dockerfile。
#### 手动构建 ####
手动构建从启动一个基础的操作系统镜像开始,然后在交互式终端中用你所选的 Linux 提供的包管理器安装应用程序及其依赖项。Zef Hemel 在‘[使用 Linux 容器来支持便携式应用程序部署][17]的文章中讲述了他部署的过程。一旦应用程序被安装之后容器就可以被推送至注册库例如Docker Hub或者导出为一个tar文件。
#### Dockerfile ####
Dockerfile 是一个用于构建 Docker 容器的脚本化系统。每一个 Dockerfile 定义了开始的基础镜像以及一系列在容器中运行的命令或者一些被添加到容器中的文件。Dockerfile 也可以指定对外的端口和当前工作目录,以及容器启动时默认执行的命令。用 Dockerfile 构建的容器可以像手工构建的镜像一样推送或导出。Dockerfile 也可以用于 Docker Hub 的自动构建系统,即在 Docker 公司的控制下从头构建,并且该镜像的源代码是任何需要使用它的人可见的。
#### 单进程? ####
无论镜像是手动构建还是通过 Dockerfile 构建,有一个要考虑的关键因素是当容器启动时仅启动一个进程。对于一个单一用途的容器,例如运行一个应用服务器,运行一个单一的进程不是一个问题(有些关于容器应该只有一个单独的进程的争议)。对于一些容器需要启动多个进程的情况,必须先启动 [supervisor][18] 进程,才能生成其它内部所需的进程。由于容器内没有初始化系统,所以任何依赖于 systemd、upstart 或类似初始化系统的东西不修改是无法工作的。
### 容器和微服务 ###
全面介绍使用微服务结构体系的原理和好处已经超出了这篇文章的范畴(在 [InfoQ eMag: Microservices][19] 有全面阐述)。然而容器是绑定和部署微服务实例的捷径。
大规模微服务部署的多数案例都是部署在虚拟机上,容器只是用于较小规模的部署上。容器具有共享操作系统和公用库的的内存和硬盘存储的能力,这也意味着它可以非常有效的并行部署多个版本的服务。
### 连接容器 ###
一些小的应用程序适合放在单独的容器中但在许多案例中应用程序需要分布在多个容器中。Docker 的成功包括催生了一连串新的应用程序组合工具、编制工具及平台作为服务(PaaS)的实现。在这些努力的背后,是希望简化从一组相互连接的容器来创建应用的过程。很多工具也在扩展、容错、性能管理以及对已部署资产进行版本控制方面提供了帮助。
#### 连通性 ####
Docker 的网络功能是相当原始的。在同一主机,容器内的服务可以互相访问,而且 Docker 也可以通过端口映射到主机操作系统,使服务可以通过网络访问。官方支持的提供连接能力的库叫做 [libchan][20],这是一个提供给 Go 语言的网络服务库,类似于[channels][21]。在 libchan 找到进入应用的方法之前,第三方应用仍然有很大空间可提供配套的网络服务。例如,[Flocker][22] 已经采取了基于代理的方法使服务实现跨主机(以及底层存储)的移植。
#### 合成 ####
Docker 本身拥有把容器连接在一起的机制,与元数据相关的依赖项可以被传递到相依赖的容器中,并用于环境变量和主机入口。如 [Fig][23] 和 [geard][24] 这样的应用合成工具可以在单一文件中展示出这种依赖关系图这样多个容器就可以汇聚成一个连贯的系统。CenturyLink 公司的 [Panamax][25] 合成工具类似 Fig 和 geard 的底层实现方法,但新增了一些基于 web 的用户接口,并直接与 GitHub 相结合,以便于应用程序分享。
#### 编制 ####
像 [Decking][26]、New Relic 公司的 [Centurion][27] 和谷歌公司的 [Kubernetes][28] 这样的编制系统都是旨在协助容器的部署和管理其生命周期系统。也有许多 [Apache Mesos][30] (特别是 [Marathon马拉松式持续运行很久的框架])的案例(例如[Mesosphere][29])已经被用于配合 Docker 一起使用。通过为应用程序与底层基础架构之间(例如传递 CPU 核数和内存的需求)提供一个抽象的模型,编制工具提供了两者的解耦,简化了应用程序开发和数据中心操作。有很多各种各样的编制系统,因为许多来自内部系统的以前开发的用于大规模容器部署的工具浮现出来了;如 Kubernetes 是基于谷歌的 [Omega][32] 系统的,[Omega][32] 是用于管理遍布谷歌云环境中容器的系统。
虽然从某种程度上来说合成工具和编制工具的功能存在重叠,但这也是它们之间互补的一种方式。例如 Fig 可以被用于描述容器间如何实现功能交互,而 Kubernetes pods容器组可用于提供监控和扩展。
#### 平台(即服务)####
有一些 Docker 原生的 PaaS 服务实现,例如 [Deis][33] 和 [Flynn][34] 已经显现出 Linux 容器在开发上的的灵活性(而不是那些“自以为是”的给出一套语言和框架)。其它平台,例如 CloudFoundry、OpenShift 和 Apcera Continuum 都已经采取将 Docker 基础功能融入其现有的系统的技术路线,这样基于 Docker 镜像(或者基于 Dockerfile的应用程序也可以与之前用支持的语言和框架的开发的应用一同部署和管理。
### 所有的云 ###
由于 Docker 能够运行在任何正常更新内核的 Linux 虚拟机中,它几乎可以用在所有提供 IaaS 服务的云上。大多数的主流云厂商已经宣布提供对 Docker 及其生态系统的支持。
亚马逊已经把 Docker 引入它们的 Elastic Beanstalk 系统(这是在底层 IaaS 上的一个编制系统)。谷歌使 Docker 成为了“可管理的 VM”它提供了GAE PaaS 和GCE IaaS 之间的中转站。微软和 IBM 也都已经宣布了基于 Kubernetes 的服务,这样可以在它们的云上部署和管理多容器应用程序。
为了给现有种类繁多的后端提供可用的一致接口Docker 团队已经引进 [libswarm][35], 它可以集成于众多的云和资源管理系统。Libswarm 所阐明的目标之一是“通过切换服务来源避免被特定供应商套牢”。这是通过呈现一组一致的服务与API相关联的来完成的该服务会通过特定的后端服务所实现。例如 Docker 服务器将支持本地 Docker 命令行工具的 Docker 远程 API 调用,这样就可以管理一组服务供应商的容器了。
基于 Docker 的新服务类型仍在起步阶段。总部位于伦敦的 Orchard 实验室提供了 Docker 的托管服务,但是 Docker 公司表示,收购 Orchard 后其相关服务不会置于优先位置。Docker 公司也出售了之前 DotCloud 的PaaS 业务给 cloudControl。基于更早的容器管理系统的服务例如 [OpenVZ][36] 已经司空见惯了,所以在一定程度上 Docker 需要向主机托管商们证明其价值。
### Docker 及其发行版 ###
Docker 已经成为大多数 Linux 发行版例如 Ubuntu、Red Hat 企业版RHEL)和 CentOS 的一个标准功能。遗憾的是这些发行版的步调和 Docker 项目并不一致,所以在发布版中找到的版本总是远远落后于最新版本。例如 Ubuntu 14.04 版本中的版本是 Docker 0.9.1,而当 Ubuntu 升级至 14.04.1 时 Docker 版本并没有随之升级(此时 Docker 已经升至 1.1.2 版本)。在发行版的软件仓库中还有一个名字空间的冲突,因为 “Docker” 也是 KDE 系统托盘的名字;所以在 Ubuntu 14.04 版本中相关安装包的名字和命令行工具都是使用“Docker.io”的名字。
在企业级 Linux 的世界中情况也并没有因此而不同。CentOS 7 中的 Docker 版本是 0.11.1,这是 Docker 公司宣布准备发行 Docker 1.0 产品版本之前的开发版。Linux 发行版用户如果希望使用最新版本以保障其稳定、性能和安全,那么最好地按照 Docker 的[安装说明][37]进行,使用 Docker 公司的所提供的软件库而不是采用发行版的。
Docker 的到来也催生了新的 Linux 发行版,如 [CoreOS][38] 和红帽的 [Project Atomic][39],它们被设计为能运行容器的最小环境。这些发布版相比传统的发行版,带着更新的内核及 Docker 版本,对内存的使用和硬盘占用率也更低。新发行版也配备了用于大型部署的新工具,例如 [fleet][40](一个分布式初始化系统)和[etcd][41](用于元数据管理)。这些发行版也有新的自我更新机制,以便可以使用最新的内核和 Docker。这也意味着使用 Docker 的影响之一是它抛开了对发行版和相关的包管理解决方案的关注,而对 Linux 内核(及使用它的 Docker 子系统)更加关注。
这些新发行版也许是运行 Docker 的最好方式但是传统的发行版和它们的包管理器对容器来说仍然是非常重要的。Docker Hub 托管的官方镜像有 Debian、Ubuntu 和 CentOS以及一个半官方的 Fedora 镜像库。RHEL 镜像在Docker Hub 中不可用,因为它是 Red Hat 直接发布的。这意味着在 Docker Hub 的自动构建机制仅仅用于那些纯开源发行版下(并愿意信任那些源于 Docker 公司团队提供的基础镜像)。
Docker Hub 集成了如 Git Hub 和 Bitbucket 这样源代码控制系统来自动构建包管理器用于管理构建过程中创建的构建规范在Dockerfile中和生成的镜像之间的复杂关系。构建过程的不确定结果并非是 Docker 的特定问题——而与软件包管理器如何工作有关。今天构建完成的是一个版本,明天构建的可能就是更新的版本,这就是为什么软件包管理器需要升级的原因。容器抽象(较少关注容器中的内容)以及容器扩展(因为轻量级资源利用率)有可能让这种不确定性成为 Docker 的痛点。
### Docker 的未来 ###
Docker 公司对核心功能libcontainer跨服务管理(libswarm) 和容器间的信息传递libchan的发展上提出了明确的路线。与此同时该公司已经表明愿意收购 Orchard 实验室,将其纳入自身生态系统。然而 Docker 不仅仅是 Docker 公司的这个项目的贡献者也来自许多大牌贡献者其中不乏像谷歌、IBM 和 Red Hat 这样的大公司。在仁慈独裁者、CTO Solomon Hykes 掌舵的形势下为公司和项目明确了技术领导关系。在前18个月的项目中通过成果输出展现了其快速行动的能力而且这种趋势并没有减弱的迹象。
许多投资者正在寻找10年前 VMware 公司的 ESX/vSphere 平台的特征矩阵,并试图找出虚拟机的普及而带动的企业预期和当前 Docker 生态系统两者的距离(和机会)。目前 Docker 生态系统正缺乏类似网络、存储和(对于容器的内容的)细粒度版本管理,这些都为初创企业和创业者提供了机会。
随着时间的推移在虚拟机和容器Docker 的“运行”部分之间的区别将变得没那么重要了而关注点将会转移到“构建”和“交付”方面。这些变化将会使“Docker发生什么”变得不如“Docker将会给IT产业带来什么”那么重要了。
--------------------------------------------------------------------------------
via: http://www.infoq.com/articles/docker-future
作者:[Chris Swan][a]
译者:[disylee](https://github.com/disylee)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.infoq.com/author/Chris-Swan
[1]:http://blog.dotcloud.com/dotcloud-paas-joins-cloudcontrol
[2]:http://www.infoq.com/news/2014/06/docker_1.0
[3]:https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt
[4]:http://selinuxproject.org/page/Main_Page
[5]:https://linuxcontainers.org/
[6]:http://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer/
[7]:http://aufs.sourceforge.net/aufs.html
[8]:https://docs.docker.com/reference/builder/
[9]:https://registry.hub.docker.com/
[10]:http://bodenr.blogspot.co.uk/2014/05/kvm-and-docker-lxc-benchmarking-with.html?m=1
[11]:http://domino.research.ibm.com/library/cyberdig.nsf/papers/0929052195DD819C85257D2300681E7B/$File/rc25482.pdf
[12]:https://en.wikipedia.org/wiki/X86_virtualization#Hardware-assisted_virtualization
[13]:http://stealth.openwall.net/xSports/shocker.c
[14]:https://news.ycombinator.com/item?id=7910117
[15]:http://www.bromium.com/products/vsentry.html
[16]:http://cto.vmware.com/vmware-docker-better-together/
[17]:http://www.infoq.com/articles/docker-containers
[18]:http://docs.docker.com/articles/using_supervisord/
[19]:http://www.infoq.com/minibooks/emag-microservices
[20]:https://github.com/docker/libchan
[21]:https://gobyexample.com/channels
[22]:http://www.infoq.com/news/2014/08/clusterhq-launch-flocker
[23]:http://www.fig.sh/
[24]:http://openshift.github.io/geard/
[25]:http://panamax.io/
[26]:http://decking.io/
[27]:https://github.com/newrelic/centurion
[28]:https://github.com/GoogleCloudPlatform/kubernetes
[29]:https://mesosphere.io/2013/09/26/docker-on-mesos/
[30]:http://mesos.apache.org/
[31]:https://github.com/mesosphere/marathon
[32]:http://static.googleusercontent.com/media/research.google.com/en/us/pubs/archive/41684.pdf
[33]:http://deis.io/
[34]:https://flynn.io/
[35]:https://github.com/docker/libswarm
[36]:http://openvz.org/Main_Page
[37]:https://docs.docker.com/installation/#installation
[38]:https://coreos.com/
[39]:http://www.projectatomic.io/
[40]:https://github.com/coreos/fleet
[41]:https://github.com/coreos/etcd

View File

@ -1,33 +0,0 @@
Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon
----
*A new kernel branch is being tracked by Ubuntu*
![Ubuntu 15.04 shortcuts](http://i1-news.softpedia-static.com/images/news2/Ubuntu-15-04-to-Integrate-Linux-Kernel-3-19-Branch-Soon-471121-2.jpg)
#The Linux kernel is one of the most important components in a distribution and Ubuntu users are interested to know what will be used in the stable edition for the 15.04 branch, which is scheduled to arrive in a couple of months.
The Ubuntu and the Linux kernel development cycles are not in sync and it's hard to anticipate what version will eventually land in Ubuntu 15.04. For now, Ubuntu 15.04 (Vivid Vervet) is using Linux kernel 3.18, but the developers are already looking to implement the 3.19 branch.
"Our Vivid kernel remains based on the v3.18.2 upstream stable kernel, but we'll be rebasing to v3.18.3 shortly. We'll also be re-basing our unstable branch to v3.19-rc5 and get that uploaded to our team PPA soon," [said](1) Canonical's Joseph Salisbury.
Linux kernel 3.19 is still under development and it will take a few weeks to see a stable version, but it's enough time to implement it in Ubuntu and test it properly. It won't be possible to get the 3.20 branch, for example, even if it launches before the April 23.
You can [download Ubuntu 15.04](2) right now from Softpedia and give it a spin. It's a daily build and it contains all the improvements made so far to the distribution.
--------------------------------------------------------------------------------
via:http://news.softpedia.com/news/Data-of-20-Million-Users-Stolen-from-Dating-Website-471179.shtml
本文发布时间:25 Jan 2015, 20:39 GMT
作者:[Silviu Stahie][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://news.softpedia.com/editors/browse/silviu-stahie
[1]:https://lists.ubuntu.com/archives/ubuntu-devel/2015-January/038644.html
[2]:http://linux.softpedia.com/get/Linux-Distributions/Ubuntu-Vivid-Vervet-103651.shtml

View File

@ -1,49 +0,0 @@
Bug in Wi-Fi Direct Android Implementation Causes Denial of Service
----
*Google marks the issue as having low severity, is not in a hurry to fix it*
![Wi-Fi Direct glitch crashes Android](http://i1-news.softpedia-static.com/images/news2/Bug-In-Wi-Fi-Direct-Android-Implementation-Causes-Denial-of-Service-471299-2.jpg)
#A vulnerability in the way Android handles Wi-Fi Direct connections leads to rebooting the device when searching for peers to connect to, which can be anything from other phones, cameras, gaming devices, computers, or printers.
The Wi-Fi Direct technology allows devices capable of wireless connection to establish communication directly, without the need to join a local network.
##Security company insisted on proper coordination for a fix
The vulnerability allows an attacker to send a specially crafted 802.11 Probe Response frame to the device and crashes it due to an unhandled exception occurring on the WiFi monitoring class.
Core Security discovered the flaw (CVE-2014-0997) through its CoreLabs team, and reported it to Google back in September 2014. The vendor acknowledged it but classified the glitch as having low severity, with no timeline for a fix being provided.
The same answer was received by Core Security each time they contacted the Android security team to inform of a timeframe for rolling out a fix. The last reply of this kind was received on January 20, meaning that there is no patch for the time being. On Monday, the security company made their findings public.
The security company created a (proof-of-concept)[1] to demonstrate the validity of the results obtained during their research.
According to the technical details of the vulnerability, some Android devices can be induced a denial-of-service condition if they receive a malformed wpa_supplicant event, which makes available the interface between the wireless driver and the Android platform framework.
##Google is not in a hurry to eliminate the problem
The relaxed stance from the Android security team regarding the issue may be on account of the fact that denial-of-service condition occurs only for a short period of time, when scanning for peers.
More than this, the result is not severe in nature as it consists in rebooting the device. There is no risk of data exfiltration or an attack that could lead to this, which would make it unappealing to a threat actor. On the other hand, a patch should be provided regardless, in order to mitigate any potential future risks.
Core Security says that the issue was not detected on Android 5.0.1 and above, and among the devices affected they found Nexus 5 and 4 running version 4.4.4 of the mobile operating system, LG D806 and Samsung SM-T310 with Android 4.2.2, and Motorola RAZR HD with build 4.1.2 of the OS.
For the time being, mitigation consists in refraining from using Wi-Fi Direct or updating to a non-vulnerable version of Android.
--------------------------------------------------------------------------------
via:http://news.softpedia.com/news/Bug-In-Wi-Fi-Direct-Android-Implementation-Causes-Denial-of-Service-471299.shtml
本文发布时间:27 Jan 2015, 09:11 GMT
作者:[Ionut Ilascu][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://news.softpedia.com/editors/browse/ionut-ilascu
[1]:http://www.coresecurity.com/advisories/android-wifi-direct-denial-service

View File

@ -0,0 +1,38 @@
LibreOffice 4.4 Released as the Most Beautiful LibreOffice Ever
----
*The developer has made a lot of UI improvements*
![LibreOffice 4.4](http://i1-news.softpedia-static.com/images/news2/LibreOffice-4-4-Releases-As-the-Most-Beautiful-LibreOffice-Ever-471575-2.jpg)
The Document Foundation has just announced that a new major update has been released for LibreOffice and it brings important UI improvements, enough for them to call this the most beautiful version ever.
The Document Foundation doesn't usually make the UI the main focus of an update, but now the developers are saying that this is the most beautiful release made so far and that says a lot. Fortunately, this version is not just about interface fixes and there are plenty of other major improvements that should really provide a very good reason to get LibreOffice 4.4.
LibreOffice has been gaining quite a lot of fans and users, and the past couple of years have been very successful. The office suite is implemented by default in most of the important Linux distributions out there and it was adopted by numerous administrations and companies across the world. LibreOffice is proving to be a difficult adversary for Microsoft's Office and each new version makes it even better.
LibreOffice 4.4 brings a lot of new features
If we move aside all the improvements made to the interface, we're still left with a ton of fixes and changes. The Document Foundation takes its job very seriously and all upgrades really improve the users' experience tremendously.
"LibreOffice 4.4 has got a lot of UX and design love, and in my opinion is the most beautiful ever. We have completed the dialog conversion, redesigned menu bars, context menus, toolbars, status bars and rulers to make them much more useful. The Sifr monochrome icon theme is extended and now the default on OS X. We also developed a new Color Selector, improved the Sidebar to integrate more smoothly with menus, and reworked many user interface details to follow todays UX trends," [says Jan "Kendy" Holesovsky](1), a member of the Membership Committee and the leader of the design team.
Some of the other improvements include much better support for OOXML file formats, the source code has been "groomed" and cleaned after a Coverity Scan analysis, digital signatures for exported PDF files, improved import filters for Microsoft Visio, Microsoft Publisher and AbiWord files, and Microsoft Works spreadsheets, and much more.
For now, the PPA doesn't have the latest version, but that should change soon. For the time being, you can download the [LibreOffice 4.4](2) source packages from Softpedia, if you want to compile them yourself.
--------------------------------------------------------------------------------
via:http://news.softpedia.com/news/LibreOffice-4-4-Releases-As-the-Most-Beautiful-LibreOffice-Ever-471575.shtml
本文发布时间:29 Jan 2015, 14:16 GMT
作者:[Silviu Stahie][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://news.softpedia.com/editors/browse/silviu-stahie
[1]:http://blog.documentfoundation.org/2015/01/29/libreoffice-4-4-the-most-beautiful-libreoffice-ever/
[2]:http://linux.softpedia.com/get/Office/Office-Suites/LibreOffice-60713.shtml

View File

@ -0,0 +1,33 @@
OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10
----
*Users have been advised to upgrade as soon as possible*
##Canonical published details about a new OpenJDK 7 version has been pushed to the Ubuntu 14.04 LTS and Ubuntu 14.10 repositories. This update fixes a number of problems and various vulnerabilities.
The Ubuntu maintainers have upgraded the OpenJDK packages in the repositories and numerous fixes have been implemented. This is an important update and it covers a few libraries.
"Several vulnerabilities were discovered in the OpenJDK JRE related to information disclosure, data integrity and availability. An attacker could
exploit these to cause a denial of service or expose sensitive data over the network,” reads the security notice.
Also, "a vulnerability was discovered in the OpenJDK JRE related to information disclosure and integrity. An attacker could exploit this to
expose sensitive data over the network."
These are just a couple of the vulnerabilities identified and corrected by the developer and implemented by the maintainers/., and for a more detailed description of the problems, you can see Canonical's security notification. Users have been advised to upgrade their systems as soon as possible.
The flaws can be fixed if you upgrade your system to the latest openjdk-7-related packages specific to each distribution. To apply the patch, users will have to run the Update Manager application. In general, a standard system update will make all the necessary changes. All Java-related applications will have to be restarted.
--------------------------------------------------------------------------------
via:http://linux.softpedia.com/blog/OpenJDK-7-Vulnerabilities-Closed-in-Ubuntu-14-04-and-Ubuntu-14-10-471605.shtml
本文发布时间:29 Jan 2015, 16:53 GMT
作者:[Silviu Stahie][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://news.softpedia.com/editors/browse/silviu-stahie

View File

@ -1,3 +1,4 @@
zpl1025
Test drive Linux with nothing but a flash drive
================================================================================
![Penguins gathered together: Linux for the win](https://opensource.com/sites/default/files/styles/image-full-size/public/images/life/OSDC_Penguin_Image_520x292_12324207_0714_mm_v1a.png)
@ -72,4 +73,4 @@ via: https://opensource.com/life/14/10/test-drive-linux-nothing-flash-drive
[a]:https://opensource.com/users/scottnesbitt
[1]:http://en.wikipedia.org/wiki/ISO_image
[2]:http://unetbootin.sourceforge.net/
[3]:http://en.wikipedia.org/wiki/BIOS
[3]:http://en.wikipedia.org/wiki/BIOS

View File

@ -1,3 +1,4 @@
[bazz2222222]
How to Configure Chroot Environment in Ubuntu 14.04
================================================================================
There are many instances when you may wish to isolate certain applications, user, or environments within a Linux system. Different operating systems have different methods of achieving isolation, and in Linux, a classic way is through a `chroot` environment.
@ -143,4 +144,4 @@ via: http://linoxide.com/ubuntu-how-to/configure-chroot-environment-ubuntu-14-04
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://linoxide.com/author/arunp/
[1]:https://launchpad.net/ubuntu/+archivemirrors
[1]:https://launchpad.net/ubuntu/+archivemirrors

View File

@ -0,0 +1,33 @@
Ubuntu 15.04即将整合Linux内核3.19分支
----
*Ubuntu已经开始跟踪一个新的内核分支*
![Ubuntu 15.04 shortcuts](http://i1-news.softpedia-static.com/images/news2/Ubuntu-15-04-to-Integrate-Linux-Kernel-3-19-Branch-Soon-471121-2.jpg)
#Linux内核是一个发行版中最重要的组成部分Ubuntu用户很想知道哪个版本将用于15.04分支的稳定版中,预计几个月后就会发布。
Ubuntu和Linux内核开发周期并不同步所以很难预测最终哪个版本将应用在Ubuntu 15.04中。目前Ubuntu 15.04长尾黑颚猴使用的是Linux内核3.18但是开发者们已经准备应用3.19分支了。
“我们的Vivid内核仍然基于v3.18.2的稳定内核上游但是我们很快将基础变更到v3.18.3。我们也将把我们的非稳定版分支的基础变更到v3.19-rc5然后上传到我们的团队PPA。”Canonical的Joseph Salisbury[说](1)。
Linux内核3.19仍然处于开发阶段预计还要几个星期才会出稳定版本但是有充足的时间将它加入到Ubuntu中并测试。不可能等到3.20分支了举个例子即使它能在4月23日前发布。
你现在就可以从Softpedia[下载Ubuntu 15.04](2),试用一下。这是一个每日构建版本,会包含发行版中目前已经做出的所有改善。
--------------------------------------------------------------------------------
via:http://news.softpedia.com/news/Data-of-20-Million-Users-Stolen-from-Dating-Website-471179.shtml
本文发布时间:25 Jan 2015, 20:39 GMT
作者:[Silviu Stahie][a]
译者:[zpl1025](https://github.com/zpl1025)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://news.softpedia.com/editors/browse/silviu-stahie
[1]:https://lists.ubuntu.com/archives/ubuntu-devel/2015-January/038644.html
[2]:http://linux.softpedia.com/get/Linux-Distributions/Ubuntu-Vivid-Vervet-103651.shtml

View File

@ -0,0 +1,49 @@
Wi-Fi直连的Android实现中的Bug导致拒绝服务
----
*Google标记这个问题为低严重性并不急着修复*
![Wi-Fi Direct glitch crashes Android](http://i1-news.softpedia-static.com/images/news2/Bug-In-Wi-Fi-Direct-Android-Implementation-Causes-Denial-of-Service-471299-2.jpg)
#Android处理Wi-Fi直连连接的方式中的一个漏洞会导致在搜索连接节点的时候设备重启这个节点可能是其他手机摄像头游戏设备电脑或是打印机等任何设备。
Wi-Fi直连技术允许无线设备之间直接建立通信而不用加入到本地网络中。
##安全公司致力于协调修复这个问题
这个漏洞允许攻击者发送一个特定的修改过的802.11侦测响应帧给设备从而因为WiFi监控类中的一个未处理的异常导致设备重启。
Core Security通过自己的CoreLabs团队发现了这个下次CVE-2014-0997早在2014年9月就汇报给了Google。这家供应商确认了这个问题却把它列为低严重性并不提供修复时间表。
每次Core Security联系Android安全组要求提供修复时间表的时候都会收到同样的答复。最后一次答复是1月20日意味着这么段时间中都没有补丁。在星期一的时候这家安全公司公布了他们的发现。
这家安全公司建立了一个(概念证明)[1]来展示他们研究结果的有效性。
根据这个漏洞的技术细节一些Android设备在收到一个错误的wpa_supplicant事件后可能会进入拒绝服务状态这些事件让无线驱动和Android平台框架之间的接口有效。
##Google并不着急结束这个问题
Android安全组对于这个问题的放松态度可能是基于这个原因这种拒绝服务状态只发生在扫描节点这一小段时间。
不仅如此,实际上结果也并不严重,因为它会导致设备重启。不存在数据泄漏的风险或是能引起这个问题的攻击,不会吸引攻击者。另一方面,不管怎样都应该提供一个补丁,以减轻任何未来的潜在风险。
Core Security声称在Android 5.0.1及以上版本中没有测试到这个问题他们发现的受影响的设备有运行移动操作系统版本4.4.4的Nexus 5和4运行Android 4.2.2的LG D806和Samsung SM-T310以及4.1.2版本系统的Motorola RAZR HD。
目前减轻影响的方式是尽量不用Wi-Fi直连或者升级到没有漏洞的Android版本。
--------------------------------------------------------------------------------
via:http://news.softpedia.com/news/Bug-In-Wi-Fi-Direct-Android-Implementation-Causes-Denial-of-Service-471299.shtml
本文发布时间:27 Jan 2015, 09:11 GMT
作者:[Ionut Ilascu][a]
译者:[zpl1025](https://github.com/zpl1025)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://news.softpedia.com/editors/browse/ionut-ilascu
[1]:http://www.coresecurity.com/advisories/android-wifi-direct-denial-service

View File

@ -1,168 +0,0 @@
Docker的现状与未来
================================================================================
### Docker - 故事渊源流长 ###
Docker是一个专为Linux容器而设计的工具集用于构建交付和运行分布式应用。它最初是通过DotCloud作为一个开源项目在2013年3月的时候发布的。这个项目越来越受欢迎这使得DotCloud更名为Docker公司并最终 [出售了原有的PaaS业务][1]).[Docker 1.0][2]是在2014年6月发布的而且延续了之前每月更新一个版本的习惯。
1.0版本的发布标志着Docker公司认为这个平台的充分成熟已经足以用于生产环境中由本公司与合作伙伴提供付费支持选项.每个月发布的更新显示该项目正在迅速发展增添一些新特性、解决一些他们发现的问题。然而该项目已经成功地从运行交付实现分离所以任何版本的Docker镜像源都可以与其它版本共同使用具备向前和向后兼容的特性这为Docker使用的快速变化提供了稳定的保障。
Docker之所以能够成为最受欢迎的开源项目之一除了很多人会认为是的炒作成分也是由坚实的物质基础奠定的。Docker的影响力已经得到整个行业许多品牌的支持包括亚马逊, Canonical公司, 世纪互联, 谷歌, IBM, 微软, New Relic, Pivotal, 红帽和VMware. 这使只要Linux可使用的地方Docker的使用便无处不在。除了这些鼎鼎有名的大公司以外许多初创公司也在围绕着Docker在成长或者改变他们的发展方向来与Docker更好地结合起来。这些合作关系无论大于小都将帮助推动Docker核心项目及其周边生态环境的快速发展。
### Docker技术的简要综述 ###
Docker利用Linux的一些内核工具例如[cGroups][3],命名空间和[SElinux][4]来实现容器之间的隔离。起初Docker只是[LXC][5]容器管理器子系统的前端但是在0.9版本中引入了[libcontainer][6],这是原生go语言库用于提供用户空间和内核之间的接口。
容器位于联合文件系统的顶部,例如[AUFS][7],它允许跨多个容器共享例如操作系统镜和安装相关库的组件。在文件系统中的分层方法也利用[ Dockerfile ] [8]中的DevOps工具这些工具能够成功地完成高速缓存的操作。利用等待时间来安装操作系统和相关应用程序依赖包将会极大地加速测试周期。容器之间的共享库也能够减少内存的占用。
一个容器是从一个镜像开始运行的它可以本地创建本地缓存或者通过注册表来下载。Docker公司经营的 [Docker 公有注册库][9],这为各种操作系统、中间件和数据库提供了主机官方仓库。组织和个人可以在docker公司的为镜像创建公有库并且也有举办私人仓库的订阅服务。由于上传的镜像会包含几乎所有Docker提供的自动化构建工具以往称为“受信任的构建”它的镜像是从Dockerfile创建的而Dockerfile是镜像内容的清单。
### 容器 vs 虚拟机 ###
容器会比虚拟机更高效因为它们能够分享一个内核和分享共享应用程序库。相比虚拟机系统这也将使得Docker使用的内存空间很小即使虚拟机利用了内存超量使用的技术。部署容器时共享底层的镜像层也可以减少内存的占用。IBM的Boden Russel已经做了一些[基准测试][10]说明两者的不同。
相比虚拟机系统容器呈现出较低系统开销的优势所以在容器中应用程序的运行效率将会等效于在同样的应用程序在虚拟机中运行甚至效果更佳。IBM的一个研究团队已经发表了一本名为[虚拟机与Linux容器的性能比较]的文章[11].
容器在隔离特性上要比虚拟机逊色。虚拟机可以利用ring-1[硬件隔离][12]例如Intel的VT-d和VT-x技术。这种隔离可以防止虚拟机爆发和彼此交互。而容器至今还没有任何形式的硬件隔离这使它容易受到攻击。一个命名为[Shocker][13]的概念攻击验证表明在之前的1.0版本中Docker是存在这种脆弱性的。尽管Docker1.0修复了许多由于Shocker漏洞引发较为的严重问题Docker的CTO Solomon Hykes仍然[表态][14],“当我们自然而然地说Docker的开箱即用是安全的即便包含了不收信任的uid0程序我们将会很明确地这样表述。”Hykes的声明承认其它的漏洞及相关的风险依旧存在所以在容器成为受信任的工具之前将有更多的工作需要被完成。
对于许多用户案例而言在容器和虚拟机两者之间选择一种是一种错误的二分法。Docker同样可以在虚拟机中很好工作它可以被用于现有的虚拟基础措施、私有云或者公有云。同样也可以在容器里跑虚拟机这也是谷歌使用云平台的一部分。给予一个广泛可利用的基础设施例如IaaS服务可以为虚拟机提供合理的预期需求这个合理的预期即容器与虚拟机一起使用的情景将会在数年后出现。容器管理和虚拟机技术有可能被集成到一起提供一个两全其美的方案所以位于libcontainer 容器后面的硬件信任锚微虚拟化实施例,可与前端 Docker 工具链和生态系统整合而不同于后端使用的是能够提供更好绝缘性。微虚拟化例如Bromium的[vSentry][15]和VMware的 [Project Fargo][16])已经在桌面环境中使用以提供应用程序之间基于硬件的隔离所以类似的方法可以用于连接libcontainer代替Linux内核中的容器机制。
### Dockerizing 应用程序 ###
几乎所有Linux应用程序都可以在Docker容器中运行。它们不受任何语言的选择或框架的限制。唯一在实践中受限的是从操作系统的角度来允许容器做什么。即使如此bar可以在特权模式下通过运行容器从而大大减少了控制并相应地增加了容器中的应用程序这将会导致损坏主机操作系统存在的风险
容器都是从镜像开始运行的而镜像也可以从运行中的容器获取。通常使用2中方法从容器中获取应用程序分别是手动获取和Dockerfile..
#### 手动构建 ####
手动构建首先通过基础操作系统镜像启动一个基本操作。交互式的终端可以安装应用程序和用于包管理的依赖项来选择所需要的Linux风格。Zef Hemel在[使用Linux容器来支持便携式应用程序部署][17]的文章中讲述了他部署的过程。一旦应用程序被安装之后容器可以被推送至注册中心例如Docker Hub或者导出一个tar文件。
#### Dockerfile ####
Dockerfile是一个用于构建Docker容器的脚本化系统。每一个Dockerfile定义了开始的基础镜像从一系列的命令在容器中运行或者一些列的文件被添加到容器中。当容器启动时默认命令会在启动时被执行Dockerfile也可以指定对外的端口和当前工作目录。容器类似手工构建一样可以通过可推送或导出的Dockerfiles来构建。Dockerfiles也可以被用于Docker Hub的自动构建系统使用的镜像受Docker公司的控制并且该镜像源代码是任何人可视的。
####仅仅一个进程? ####
无论镜像是手动构建还是通过Dockerfile构建有一个关键的考虑因素是当容器启动时只有一个进程进程被启动。对于一个容器一对一服务的目的例如运行一个应用服务器运行一个单一的进程不是一个问题有些关于容器应该只有一个单独的进程的争议。对于一些容器需要启动多个进程的情况必须先启动 [supervisor][18]进程,才能生成其它内部所需的进程。
### 容器和微服务 ###
一个完整的关于使用微服务结构体系的原理和好处已经远远超出了这篇文章(并已经覆盖了[InfoQ eMag: Microservices][19])的范围).然而容器是微服务捆绑和部署实例的捷径。
尽管大多数实际案例表明大量的微服务目前还是大多数部署在虚拟机,容器相对拥有较小的部署机会。容器具备位操作系统共享内存和硬盘占用量的能力,库常见的应用程序代码也意味着并排部署多个办法的服务是非常高效的。
### 连接容器 ###
一些小的应用程序适合放在单独的容器中但在许多案例中应用程序将遍布多个容器。Docker的成功包括催生了一连串的新应用程序组合工具、业务流程工具和实现平台作为服务(PaaS)过程。许多工具还帮助实现缩放、容错、业务管理以及对已部署资产进行版本控制。
#### 连接 ####
Docker的网络功能是相当原始的。在同一主机容器内的服务和一互相访问而且Docker也可以通过端口映射到主机操作系统使服务可以通过网络服务被调用。官方的赞助方式是连接到[libchan][20],这是一个提供给Go语言的网络服务库类似于[channels][21]。直至libcan找到方法进入应用程序第三方应用仍然有很大空间可提供配套的网络服务。例如[Flocker][22]已经采取了基于代理的方法使服务实现跨主机(以及底层存储)移植。
#### 合成 ####
Docker本身拥有把容器连接在一起的机制与元数据相关的依赖项可以被传递到相依赖的容器并用于环境变量和主机入口的消耗。应用合成工具例如[Fig][23]和[geard][24]展示出其依赖关系图在一个独立的文件中,于是多个容器可以汇聚成一个连贯的系统。世纪互联公司的[Panamax][25]合成工具类似底层Fig和 geard的方法但新增了一些基于web的用户接口并直接与GitHub相结合以便于应用程序可以直接被共享。
#### 业务流程 ####
业务流程系统例如[Decking][26],New Relic公司的[Centurion][27]和谷歌公司的[Kubernetes][28]都是旨在帮助部署容器和管理其生命周期系统。也有无数的例子(例如[Apache Mesos][30](特别是[Marathon马拉松式持续运行很久的框架] 的 [Mesosphere][29]正在与Docker一起使用。通过为应用程序例如传递CPU核数和内存的需求与底层基础架构之间提供一个抽象的模型业务流程工具提供了解耦旨在简化应用程序开发和数据中心操作。还有各种各样的业务流程系统因为人们已经淘汰了以前开发的内部系统取而代之的是大量容器部署的管理系统例如Kubernetes是基于谷歌的[Omega][32]系统,这个系统用于管理谷歌区域内的容器。
虽然从某种程度上来说合成工具和业务流程工具的功能存在重叠另外这也是它们之间互补的一种方式。例如Fig可以被用于描述容器间如何实现功能交互而Kubernetes pods可能用于提供监控和缩放。
#### 平台 (类似一个服务) ####
大量的Docker已经实现本地PaaS安装部署例如[Deis][33] 和 [Flynn][34]的出现并在现实中得到利用Linux容器在很大程度上为开发人员提供了灵活性而不是“固执己见”地给出一组语言和框架。其它平台例如CloudFoundry, OpenShift 和 Apcera Continuum都已经采取Docker基础功能融入其现有的系统这样基于Docker镜像或者基于Dockerfile的应用程序也可以用之前支持的语言和框架一起部署和管理。
### 支持所有的云 ###
由于Docker能够在任何的Linux虚拟机中运行并合理地更新内核它几乎可以为所有云提供IaaS服务。大多数的云厂商已经宣布对码头及其生态系统提供附加支持。
亚马逊已经把Docker引入它们的Elastic Beanstalk系统这是在底层IaaS的一个业务流程系统。谷歌已经启用managed VMs',这是提供
程序引擎PaaS和计算引擎IaaS之间的中转站。微软和IBM都已经宣布基于Kubernetes的服务所以多容器应用程序可以在它们的云上被部署和管理。
为了给现有种类繁多的后端提供可用的一致接口Docker团队已经引进[libswarm][35], 它能用于集成众多云和资源管理系统。Libswarm所阐明的目标之一是避免供应商通过交换任何服务锁定另一个。这是通过呈现一组一致服务与API相关联的来完成的该服务会附加执行特定的后端服务。例如装有Docker服务的服务器将对Docker命令行工具展示Docker远程API这样容器就可以被托管在一些列的服务供应商。
基于Docker的新服务类型仍在起步阶段。总部位于伦敦的Orchard实验室提供了Docker的托管服务但是Docker公司表示收购后Orchard的服务将不会是一个有优先事项。Docker公司也出售之前DotCloud的PaaS业务给cloudControl。基于就更早前的容器管理系统的服务例如[OpenVZ][36]已经司空见惯了所以在一定程度上Docker需要向托管供应商证明其价值。
### Docker 及其发行版 ###
Docker已经成为大多数Linux发行版例如UbuntuRed Hat企业版RHEL)和CentOS的一个标准功能。遗憾的是发布是以不同的移动速度到Docker项目所以在发布版中找到的版本总是远远落后于可用版本。例如Ubuntu 14.04版本是对应Docker 0.9.1版本发布的但是并没有相应的版本更改点当Ubuntu升级至14.04.1这个时候Docker已经升至1.1.2版本。由于Docker也是一个KDE系统托盘所以在官方库同样存在命名问题所以在Ubuntu14.04版本中相关安装包的名字和命令行工具都是使用Docker.io命名。
在企业版的Linux世界中情况也并没有因此而不同。CentOS7伴随着Docker 0.11.1的到来该发行版本即是之前Docker公司宣布准备发行Docker 1.0版本的准备版。Linux发行版用户希望最新版本可以承诺其稳定性性能和安全性能够更完善并且更好地结合[安装说明][37]和使用Docker公司的库托管而不是采取包括其分布的版本库。
Docker的到来催生了新的Linux发行版本例如[CoreOS][38]和红帽被用于设计为运行容器最小环境的[Project Atomic][39]。这些发布版相比传统的发布版伴随着更多新内核和Docker版本的特性。它们对内存的使用和硬盘占用率更小。新的发行也配备了新的工具用于大型部署例如[fleet][40]这是一个分布式init系统和[etcd][41]是用于元数据管理。也有新机制用于更新发布版本身来使得内核和Docker可以被使用。这也意味着使用Docker的影响之一是它抛开分布版和相关的包管理解决方案的关注使Linux内核即Docker子系统正在使用更加重要。
新的发布版将是运行Docker的最好方式但是传统的发布版本和它们的包管理对容器来说仍然是非常重要的。Docker Hub托管的官方镜像有DebianUbuntu和CentOS。当然也有一个半官方的库用于Fedora镜像。RHEL镜像在Docker Hub中不可用因为是从Red Hat直接发布的。这意味着在Docker Hub的自动构建机制仅仅用于那些纯粹的开源发布版不并愿意信任基于Docker公司团队所策划镜像的出处
虽然Docker Hub与源代码控制系统相结合例如Git Hub和Bitbucket在构建过程中用于自动创建包管理及生成规范之间的复杂关系在Dockerfile中并在构建过程中建立镜像。在构建过程中的非确定性结果并非是Docker具体的问题——这个是由于软件包如何管理工作的结果。在构建完成的当天将会给出一个版本这个构建完成的另外一次将会得到最新版本这就是为什么软件包管理需要升级措施。容器的抽象较少关注一个容器的内容以及容器的分散因为轻量级资源利用率是更有可能与Docker获取关联的痛点。
### Docker的未来 ###
Docker公司对核心功能libcontainer跨服务管理(libswarm) 和容器间的信息传递libchan的发展提出了明确的路线。与此同时公司已经表明愿意利用自身生态系统和收购Orchard实验室。然而Docker相比Docker公司意味着更多随着项目的壮大越来越多对这个项目的
大牌贡献者其中不乏像谷歌、IBM和Red Hat这样的大公司。在仁慈独裁者CTO Solomon Hykes 掌舵的形势下为公司和项目明确了技术领导的关系。在前18个月的项目中通过成果输出展现了快速行动的能力而且这种趋势并没有减弱的迹象。
许多投资者正在寻找10年前VMware公司的ESX/vSphere平台的特征矩阵并找出虚拟机的普及而驱动的企业预期和当前Docker生态系统两者的距离和机会。目前Docker生态系统正缺乏类似网络、存储和版本细粒度的管理对容器的内容这些都为初创企业和在职人员提供机会。
随着时间的推移在虚拟机和容器Docker的运行部分之间的区别将变得不重要了而关注点将会转移到构建交付缓解。这些变化将会使Docker发生什么这个问题变得比Docker将会给IT产业带来什么更不重要了。
--------------------------------------------------------------------------------
via: http://www.infoq.com/articles/docker-future
作者:[Chris Swan][a]
译者:[disylee](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://www.infoq.com/author/Chris-Swan
[1]:http://blog.dotcloud.com/dotcloud-paas-joins-cloudcontrol
[2]:http://www.infoq.com/news/2014/06/docker_1.0
[3]:https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt
[4]:http://selinuxproject.org/page/Main_Page
[5]:https://linuxcontainers.org/
[6]:http://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer/
[7]:http://aufs.sourceforge.net/aufs.html
[8]:https://docs.docker.com/reference/builder/
[9]:https://registry.hub.docker.com/
[10]:http://bodenr.blogspot.co.uk/2014/05/kvm-and-docker-lxc-benchmarking-with.html?m=1
[11]:http://domino.research.ibm.com/library/cyberdig.nsf/papers/0929052195DD819C85257D2300681E7B/$File/rc25482.pdf
[12]:https://en.wikipedia.org/wiki/X86_virtualization#Hardware-assisted_virtualization
[13]:http://stealth.openwall.net/xSports/shocker.c
[14]:https://news.ycombinator.com/item?id=7910117
[15]:http://www.bromium.com/products/vsentry.html
[16]:http://cto.vmware.com/vmware-docker-better-together/
[17]:http://www.infoq.com/articles/docker-containers
[18]:http://docs.docker.com/articles/using_supervisord/
[19]:http://www.infoq.com/minibooks/emag-microservices
[20]:https://github.com/docker/libchan
[21]:https://gobyexample.com/channels
[22]:http://www.infoq.com/news/2014/08/clusterhq-launch-flocker
[23]:http://www.fig.sh/
[24]:http://openshift.github.io/geard/
[25]:http://panamax.io/
[26]:http://decking.io/
[27]:https://github.com/newrelic/centurion
[28]:https://github.com/GoogleCloudPlatform/kubernetes
[29]:https://mesosphere.io/2013/09/26/docker-on-mesos/
[30]:http://mesos.apache.org/
[31]:https://github.com/mesosphere/marathon
[32]:http://static.googleusercontent.com/media/research.google.com/en/us/pubs/archive/41684.pdf
[33]:http://deis.io/
[34]:https://flynn.io/
[35]:https://github.com/docker/libswarm
[36]:http://openvz.org/Main_Page
[37]:https://docs.docker.com/installation/#installation
[38]:https://coreos.com/
[39]:http://www.projectatomic.io/
[40]:https://github.com/coreos/fleet
[41]:https://github.com/coreos/etcd

View File

@ -1,45 +1,44 @@
zpl1025
A Shell Primer: Master Your Linux, OS X, Unix Shell Environment
Shell入门掌握LinuxOS XUnix的Shell环境
================================================================================
On a Linux or Unix-like systems each user and process runs in a specific environment. An environment includes variables, settings, aliases, functions and more. Following is a very brief introduction to some useful shell environment commands, including examples of how to use each command and setup your own environment to increase productivity in the command prompt.
在Linux或类Unix系统中每个用户和进程都运行在一个特定环境中。这个环境包含了变量设置别名函数以及更多的。下面是对Shell环境下一些常用命令的简单介绍包括每个命令如何使用的例子以及在命令行下设定你自己的环境来提高效率。
![](http://s0.cyberciti.org/uploads/cms/2015/01/bash-shell-welcome-image.jpg)
### Finding out your current shell ###
### 找出你当前的shell ###
Type any one of the following command at the Terminal app:
在终端应用中输入下面命令中的任意一个:
ps $$
ps -p $$
OR
或者
echo "$0"
Sample outputs:
输出范例:
[![Fig.01: Finding out your shell name](http://s0.cyberciti.org/uploads/cms/2015/01/finding-your-shell-like-a-pro.jpg)][1]
Fig.01: Finding out your shell name
[![1: Finding out your shell name](http://s0.cyberciti.org/uploads/cms/2015/01/finding-your-shell-like-a-pro.jpg)][1]
图1找出当前的shell
### Finding out installed shells ###
### 找出所有已安装的shell ###
To find out the full path for installed shell type:
找到已安装shell的完整路径
type -a zsh
type -a ksh
type -a sh
type -a bash
Sample outputs:
输出范例:
[![Fig.02: Finding out your shell path](http://s0.cyberciti.org/uploads/cms/2015/01/finding-and-verifying-shell-path.jpg)][2]
Fig.02: Finding out your shell path
图2找出shell的路径
The /etc/shells file contains a list of the shells on the system. For each shell a single line should be present, consisting of the shell's path, relative to root. Type the following [cat command][3] to see shell database:
文件/etc/shells里包含了系统支持的shell列表。每一行代表一个shell是相对根目录的完整路径。用这个[cat命令][3]来查看这些数据:
cat /etc/shells
Sample outputs:
输出范例:
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
@ -53,47 +52,47 @@ Sample outputs:
/bin/zsh
/usr/local/bin/fish
### Changing your current shell temporarily ###
### 临时改变当前shell ###
Just type the shell name. In this example, I'm changing from bash to zsh:
只需要输入shell的名字。在下面的例子里我从bash切换到了zsh
zsh
You just changed your shell temporarily to zsh. Also known as subshell. To exit from subshell/temporary shell, type the following command or hit CTRL-d:
这只是临时改变了系统shell。也叫做子shell。要从子/临时shell退出输入下面的命令或者按下CTRL-D
exit
### Finding out subshell level/temporary shell nesting level ###
### 找出子shell的层级或临时shell的嵌套层级 ###
The $SHLVL incremented by one each time an instance of bash is started. Type the following command:
每个bash实例启动后变量$SHLVL的值都会加一。输入下面的命令
echo "$SHLVL"
Sample outputs:
示例输出:
[![Fig. 03: Bash shell nesting level (subshell numbers)](http://s0.cyberciti.org/uploads/cms/2015/01/a-nested-shell-level-command.jpg)][4]
Fig. 03: Bash shell nesting level (subshell numbers)
图3Bash shell嵌套层级子shell数目
### Changing your current shell permanently with chsh command ###
### 通过chsh命令永久变更系统shell ###
Want to change your own shell from bash to zsh permanently? Try:
想要把当前系统shell从bash永久换成zsh试试这个
chsh -s /bin/zsh
Want to change the other user's shell from bash to ksh permanently? Try:
想把其他用户的shell从bash永久换成ksh试试这个
sudo chsh -s /bin/ksh userNameHere
### Finding out your current environment ###
### 查看当前的环境 ###
You need to use the
你需要用到
env
env | more
env | less
env | grep 'NAME'
Sample outputs:
示例输出:
TERM_PROGRAM=Apple_Terminal
SHELL=/bin/bash
@ -116,12 +115,12 @@ Sample outputs:
_=/usr/bin/env
OLDPWD=/Users/vivek
Here is a table of commonly used bash shell variables:
下面是bash shell里一些常见变量的列表
![Fig.04: Common bash environment variables](http://s0.cyberciti.org/uploads/cms/2015/01/common-shell-vars.jpg)
Fig.04: Common bash environment variables
图4常见bash环境变量
> **Warning**: It is always a good idea not to change the following environment variables. Some can be changed and may results into unstable session for you:
> **注意**下面这些环境变量没事不要乱改。很可能会造成不稳定的shell会话
>
> SHELL
>
@ -141,163 +140,162 @@ Fig.04: Common bash environment variables
>
> LINENO
### Displays the values of environment variables ###
### 显示环境变量的值 ###
Use any one of the following command to show the values of environment variable called HOME:
使用下面任意一条命令显示环境变量HOME的值
## Use printenv ##
## 使用printenv ##
printenv HOME
## or use echo ##
## 或者用echo ##
echo "$HOME"
# or use printf for portability ##
# 考虑到可移植性也可以用printf ##
printf "%s\n" "$HOME"
Sample outputs:
示例输出:
/home/vivek
### Adding or setting a new variables ###
### 增加或设定一个新变量 ###
The syntax is as follows in bash or zsh or sh or ksh shell:
下面是bashzshsh和ksh的语法
## The syntax is ##
## 语法 ##
VAR=value
FOO=bar
## Set the default editor to vim ##
## 设定vim为默认文本编辑器 ##
EDITOR=vim
export $EDITOR
## Set default shell timeout for security ##
## 考虑安全性设定默认shell连接超时时间 ##
TMOUT=300
export TMOUT
## You can directly use export command to set the search path for commands ##
## 你可以直接使用export命令设定命令的搜素路径 ##
export PATH=$PATH:$HOME/bin:/usr/local/bin:/path/to/mycoolapps
Again, use the printenv or echo or printf command to see the values of environment variables called PATH, EDITOR, and TMOUT:
然后使用printenv或者echo或printf命令查看环境变量PATHEDITOR和TMOUT的值
printenv PATH
echo "$EDITOR"
printf "%s\n" $TMOUT
### How do I change an existing environment variables? ###
### 怎么修改一个现有的环境变量? ###
The syntax is as follows:
下面是语法:
export VAR=value
## OR ##
## 或者 ##
VAR=value
export $VAR
## Change the default editor from vim to emacs ##
echo "$EDITOR" ## <--- print vim
EDITOR=emacs ## <--- change it
export $EDITOR ## <--- export it for next session too
echo "$EDITOR" ## <--- print emacs
## 把默认文本编辑器从vim改为emacs ##
echo "$EDITOR" ## <--- 屏幕输出vim
EDITOR=emacs ## <--- 修改
export $EDITOR ## <--- 让修改在其他会话生效
echo "$EDITOR" ## <--- 屏幕输出emacs
The syntax is as follows for the **tcsh shell for adding or changing a variables**:
**tcsh shell下增加和修改变量**的语法是下面这样的:
## Syntax
## 语法
setenv var value
printenv var
## Set foo variable with bar as a value ##
## 设置变量foo的值为bar ##
setenv foo bar
echo "$foo"
printenv foo
## Set PATH variable ##
## 设置变量PATH ##
setenv PATH $PATH\:$HOME/bin
echo "$PATH"
## set PAGER variable ##
## 设置变量PAGER ##
setenv PAGER most
printf "%s\n" $PAGER
### Finding your bash shell configuration files ###
### 找出bash shell的配置文件 ###
Type the following command to list your bash shell files, enter:
用下面的命令列出bash shell的文件
ls -l ~/.bash* ~/.profile /etc/bash* /etc/profile
Sample output:
示例输出:
[![Fig.05: List all bash environment configuration files](http://s0.cyberciti.org/uploads/cms/2015/01/list-bash-enviroment-variables.jpg)][5]
Fig.05: List all bash environment configuration files
图5列出bash的所有配置文件
To look at all your bash config files, enter:
要查看所有的bash配置文件输入
less ~/.bash* ~/.profile /etc/bash* /etc/profile
You can edit bash config files one by one using the text editor such as vim or emacs:
可以使用文字编辑器比如vim或emacs来一个一个编辑bash配置文件
vim ~/.bashrc
To edit files located in /etc/, type:
编辑/etc/目录下的文件,输入:
## first make a backup.. just in case
## 首先是备份,以防万一
sudo cp -v /etc/bashrc /etc/bashrc.bak.22_jan_15
########################################################################
## Alright, edit it to your hearts content and by all means, have fun ##
## with your environment or just increase the productivity :) ##
## 然后随心所欲随便改吧好好玩玩shell环境或者提高一下效率:) ##
########################################################################
sudo vim /etc/bashrc
### Confused by Bash shell Initialization files? ###
### 被Bash shell初始化过程中应用的文件搞糊涂了吗 ###
The following "bash file initialization" graph will help you:
下面的"bash初始化文件"流程图应该有些帮助:
![](http://s0.cyberciti.org/uploads/cms/2015/01/BashStartupfiles.jpg)
Depending on which shell is set up as your default, your user profile or system profile can be one of the following:
根据账户设定的默认shell你的用户配置或系统配置可能是下面其中一种
### Finding your zsh shell configuration files ###
### 找出zsh shell配置文件 ###
The zsh [wiki][6] recommend the following command:
zsh的[wiki][6]中建议用下面的命令:
strings =zsh | grep zshrc
Sample outputs:
示例输出:
/etc/zshrc
.zshrc
Type the following command to list your zsh shell files, enter:
输入下面的命令列出你的zsh shell文件
ls -l /etc/zsh/* /etc/profile ~/.z*
To look at all your zsh config files, enter:
查看所有zsh配置文件
less /etc/zsh/* /etc/profile ~/.z*
### Finding your ksh shell configuration files ###
### 找出ksh shell配置文件 ###
1. See ~/.profile or /etc/profile file.
1. 查看~/.profile或者/etc/profile文件。
### Finding your tcsh shell configuration files ###
### 找出tcsh shell配置文件 ###
1. See ~/.login, ~/.cshrc for the C shell.
2. See ~/.tcshrc and ~/.cshrc for the TC shell.
1. C shell查看~/.login~/.cshrc文件。
2. TC shell查看~/.tcshrc和~/.cshrc文件。
### Can I have a script like this execute automatically every time I login? ###
### 我可以写个类似这样每次登录时都自动执行的脚本吗? ###
Yes, add your commands or aliases or other settings to ~/.bashrc (bash shell) or ~/.profile (sh/ksh/bash) or ~/.login (csh/tcsh) file.
是的,把你的命令或别名或其他设定添加到~/.bashrcbash shell或者~/.profilesh/ksh/bash或者~/.logincsh/tcsh文件中。
### Can I have a script like this execute automatically every time I logout? ###
### 我可以写个类似这样每次登出都自动执行的脚本吗? ###
Yes, add your commands or aliases or other settings to ~/.bash_logout (bash) or ~/.logout (csh/tcsh) file.
是的,把你的命令或别名或其他设定添加到~/.bash_logoutbash或者~/.logoutcsh/tcsh文件。
### History: Getting more info about your shell session ###
### history获取关于shell会话的更多信息 ###
Just type the history command to see session history:
输入history命令来查看本次会话的历史
history
Sample outputs:
示例输出:
9 ls
10 vi advanced-cache.php
@ -321,56 +319,56 @@ Sample outputs:
98 smartctl -A /dev/sg1 | grep -i temperature
99 sensors
Type history 20 to see the last 20 commands from your history:
输入history 20来查看命令历史的后20条
history 20
Sample outputs:
示例输出:
[![Fig.06: View session history in the bash shell using history command](http://s0.cyberciti.org/uploads/cms/2015/01/history-outputs.jpg)][7]
Fig.06: View session history in the bash shell using history command
图6在bash shell中使用history命令查看会话历史
You can reuses commands. Simply hit [Up] and [Down] arrow keys to see previous commands. Press [CTRL-r] from the shell prompt to search backwards through history buffer or file for a command. To repeat last command just type !! at a shell prompt:
你可以重复使用命令。简单地按下[上]或[下]方向键就可以查看之前的命令。在shell提示符下按下[CTRL-R]可以向后搜索历史缓存或文件来查找命令。重复最后一次命令只需要在shell提示符下输入!!就好了:
ls -l /foo/bar
!!
To see command #93 (hddtemp /dev/sda)from above history session, type:
在以上的历史记录中查看命令#93 (hddtemp /dev/sda),输入:
!93
### Changing your identity with sudo or su ###
### 使用sudo或su改变用户 ###
The syntax is as follows:
下面是语法:
su userName
## To log in as a tom user ##
## 登录为tom用户 ##
su tom
## To start a new login shell for tom user ##
## 为用户tom打开一个新的shell会话 ##
su tom
## To login as root user ##
## 登录为root用户 ##
su -
## The sudo command syntax (must be configured on your system) ##
## sudo命令语法必须在系统中配置有这个命令 ##
sudo -s
sudo tom
See "[Linux Run Command As Another User][8]" post for more on sudo, su and runuser commands.
看看帖子"[Linux下使用其他用户身份运行命令][8]"更多地了解sudosu和runuser命令。
### Shell aliases ###
### shell别名 ###
An alias is nothing but shortcut to commands.
别名仅仅是命令的一个快捷方式。
### Listing aliases ###
### 列出所有的别名 ###
Type the following command:
输入下面的命令:
alias
Sample outputs:
示例输出:
alias ..='cd ..'
alias ...='cd ../../../'
@ -388,31 +386,31 @@ Sample outputs:
alias egrep='egrep --color=auto'
alias ethtool='ethtool eth1'
### Create an alias ###
### 设定一个别名 ###
The bash/zsh syntax is:
bash/zsh语法
alias c='clear'
alias down='sudo /sbin/shutdown -h now'
Type c alias for the system command clear, so we can type c instead of clear command to clear the screen:
对于命令clear可以输入c别名这样我们就可以输入c代替clear命令来清空屏幕
c
Or type down to shutdown the Linux based server:
或者输入down来关闭基于Linux的服务器
down
You can create as many aliases you want. See "[30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X][9]" for practical usage of aliases on Unix-like system.
你可以设定任意多的别名。看下"[Linux/Unix/Mac OS X系统中的30个方便的bash shell别名][9]"了解在类Unix系统中别名的实际应用。
### Shell functions ###
### shell函数 ###
Bash/ksh/zsh functions allows you further customization of your environment. In this example, I'm creating a simple bash function called memcpu() to display top 10 cpu and memory eating process:
Bash/ksh/zsh函数允许你更进一步地配置shell环境。在这个例子中我写了一个简单的名叫memcpu()的bash函数用来显示前10个最占用CPU和内存的进程
memcpu() { echo "*** Top 10 cpu eating process ***"; ps auxf | sort -nr -k 3 | head -10;
echo "*** Top 10 memory eating process ***"; ps auxf | sort -nr -k 4 | head -10; }
Just type memcpu to see the info on screen:
输入memcpu就可以在屏幕上看到下面的信息
memcpu
@ -440,95 +438,95 @@ Just type memcpu to see the info on screen:
squid 9995 0.0 0.5 175152 72396 ? S 2014 27:00 \_ (squid) -f /etc/squid/squid.conf
cybercit 3922 0.0 0.4 303380 56304 ? S Jan10 0:13 | \_ /usr/bin/php-cgi
See "[how to write and use shell functions][10]" for more information.
看下"[如何编写和应用shell函数][10]"了解更多信息。
### Putting it all together: Customizing your Linux or Unix bash shell working environment ###
### 综合一下定制你自己的Linux或Unix bash shell工作环境 ###
Now, you are ready to configure your environment using bash shell. I'm only covering bash. But the theory remains same from zsh, ksh and other common shells. Let us see how to adopt shell to my need as a sysadmin. Edit your ~/.bashrc file and append settings. Here are some useful configuration options for you.
现在你将使用bash shell配置自己的环境。我只介绍bash。但是理论上zshksh和其他常用shell都差不多。让我们看看如何调整shell来适合我作为系统管理员的需求。编辑你的~/.bashrc文件来附加设定。下面是一些常用的配置选项。
#### #1: Setting up bash path and environment variables ####
#### #1: 设定bash路径和环境变量 ####
# Set path ##
# 设定路径 ##
export PATH=$PATH:/usr/local/bin:/home/vivek/bin:/opt/firefox/bin:/opt/oraapp/bin
# Also set path for cd command
# 为cd命令设定路径
export CDPATH=.:$HOME:/var/www
Use less or most command as a pager:
使用less或more命令作为翻页器
export PAGER=less
Set vim as default text editor for us:
设定vim作为默认文本编辑器
export EDITOR=vim
export VISUAL=vim
export SVN_EDITOR="$VISUAL"
Set Oracle database specific stuff:
设定Oracle数据库特别要求的参数
export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export ORACLE_SID=XE
export NLS_LANG=$($ORACLE_HOME/bin/nls_lang.sh)
Set JAVA_HOME and other paths for java as per java version:
设定JAVA_HOME和其他java路径比如java版本
export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre
# Add ORACLE, JAVA to PATH
# 把ORACLE和JAVA加入到PATH里
export PATH=$PATH:$ORACLE_HOME/bin:$JAVA_HOME/bin
Secure my remote [SSH login using keychain for password less login][11]:
[使用密钥实现免密码登录][11]让ssh远程登录更安全
# No need to input password again ever
# 再也不用输密码了
/usr/bin/keychain $HOME/.ssh/id_rsa
source $HOME/.keychain/$HOSTNAME-sh
Finally, [turn on bash command completion][12]
最后,[打开bash命令补齐][12]
source /etc/bash_completio
#### #2: Setting up bash command prompt ####
#### #2: 设定bash命令提示符 ####
Set [custom bash prompt (PS1)][13]:
设定[定制的bash提示符(PS1)][13]:
PS1='{\u@\h:\w }\$ '
#### #3: Setting default file permissions ####
#### #3: 设定默认文件权限 ####
## Set default to 644 ##
## 设定默认权限为644 ##
umask 022
#### #4: Control your shell history settings ####
#### #4: 调整shell命令历史设定 ####
# Dont put duplicate lines in the history
# 不往命令历史里写入相同的行
HISTCONTROL=ignoreboth
# Ignore these commands
# 忽略这些命令
HISTIGNORE="reboot:shutdown *:ls:pwd:exit:mount:man *:history"
# Set history length via HISTSIZE and HISTFILESIZE
# 通过HISTSIZE和HISTFILESIZE设定命令历史的长度
export HISTSIZE=10000
export HISTFILESIZE=10000
# Add timestamp to history file.
# 为命令历史文件增加时间戳
export HISTTIMEFORMAT="%F %T "
#Append to history, don't overwrite
# 附加到命令历史文件,俄不是覆盖
shopt -s histappend
#### #5: Set the time zone for your session ####
#### #5: 设定shell会话的时区 ####
## set to IST for my own session ##
## 为我自己的shell会话设定IST印度标准时间 ##
TZ=Asia/Kolkata
#### #6: Setting up shell line editing interface ####
#### #6: 设定shell行编辑接口 ####
## use a vi-style line editing interface for bash from default emacs mode ##
## 使用vi风格的行编辑接口替代bash默认的emacs模式 ##
set -o vi
#### #7: Setting up your favorite aliases ####
#### #7: 设定自己喜好的别名 ####
## add protection ##
## 增加一些保护 ##
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
@ -538,7 +536,7 @@ Set [custom bash prompt (PS1)][13]:
alias mcdshow='/usr/bin/memcached-tool 10.10.29.68:11211 display'
alias mcdflush='echo "flush_all" | nc 10.10.29.68 11211'
## Default command options ##
## 默认命令参数 ##
alias vi='vim'
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
@ -551,41 +549,41 @@ Set [custom bash prompt (PS1)][13]:
alias rm='rm -I --preserve-root'
alias ln='ln -i'
Here are some additional OS X Unix bash shell aliases:
下面是一些额外的OS X Unix bash shell别名
# Open desktop apps from bash
# 从bash打开桌面应用
alias preview="open -a '$PREVIEW'"
alias safari="open -a safari"
alias firefox="open -a firefox"
alias chrome="open -a google\ chrome"
alias f='open -a Finder '
# Get rid of those .DS_Store files
# 清理那些.DS_Store文件
alias dsclean='find . -type f -name .DS_Store -delete'
#### #8: Colour my world ####
#### #8: 让世界充满色彩 ####
# Get colored grep output
# 彩色的grep输出
alias grep='grep --color=auto'
export GREP_COLOR='1;33'
# colored ls too
# 彩色的ls
export LSCOLORS='Gxfxcxdxdxegedabagacad'
# Gnu/linux ls
# Gnu/linuxls
ls='ls --color=auto'
# BSD/os x ls command
# BSD/os x的ls命令
# alias ls='ls -G'
#### #9: Setting up your favorite bash functions ####
#### #9: 设定自己喜好的bash函数 ####
# Show top 10 history command on screen
# 在屏幕上显示10个最近的历史命令
function ht {
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
}
# Wrapper for host and ping command
# Accept http:// or https:// or ftps:// names for domain and hostnames
# host和ping命令的替代
# 接受http:// 或 https:// 或 ftps:// 名称用作域或主机名
_getdomainnameonly(){
local h="$1"
local f="${h,,}"
@ -629,48 +627,48 @@ Here are some additional OS X Unix bash shell aliases:
$_host $args $c
}
#### #10: Configure bash shell behavior via shell shopt options command ####
#### #10: 通过shell shopt命令设定bash shell行为 ####
Finally, you can [make changes to your bash shell environment using set and shopt][14] commands:
最后,你可以[使用set和shopt命令调整bash shell环境][14]
# Correct dir spellings
# 目录拼写纠正
shopt -q -s cdspell
# Make sure display get updated when terminal window get resized
# 保证每次终端窗口改变大小后会更新显示
shopt -q -s checkwinsize
# Turn on the extended pattern matching features
# 打开高级模式匹配功能
shopt -q -s extglob
# Append rather than overwrite history on exit
# 退出时附加命令历史而不是覆盖
shopt -s histappend
# Make multi-line commandsline in history
# 在命令历史使用多行
shopt -q -s cmdhist
# Get immediate notification of background job termination
# 在后台任务结束时立刻通知
set -o notify
# Disable [CTRL-D] which is used to exit the shell
# 禁用[CTRL-D]来结束shell
set -o ignoreeof
### Conclusion ###
### 总结 ###
This post is by no means comprehensive. It provided a short walkthrough of how to customize your enviorment. For a thorough look at bash/ksh/zsh/csh/tcsh capabilities, I suggest you read the man page by typing the following command:
这个帖子不难理解。它简短地将如何定制用户环境从头介绍了一下。要深入了解bash/ksh/zsh/csh/tcsh/的能力我建议你用下面的命令阅读man文档
man bash
man zsh
man tcsh
man ksh
> This article was contributed by Aadrika T. J.; Editing and additional content added by admin. You can too [contribute to nixCraft][15].
> 这篇文章由Aadrika T. J.贡献由admin编辑并增加了额外内容。你也可以[为nixCraft做出贡献][15]。
--------------------------------------------------------------------------------
via: http://www.cyberciti.biz/howto/shell-primer-configuring-your-linux-unix-osx-environment/
作者:[nixCraft][a]
译者:[译者ID](https://github.com/译者ID)
译者:[zpl1025](https://github.com/zpl1025)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出