分类 技术 下的文章

大家好,今天我们来学习如何使用一个docker镜像交互式地创建一个Docker容器。当我们从镜像中启动一个Docker进程,Docker就会获取该镜像及其父镜像,并重复这个过程,直到到达基础镜像。然后联合文件系统(UFS)会在其顶层添加一个读写层。读写层被称之为容器,它包含了一些关于父镜像信息及一些其他的信息,如唯一ID,网络配置和资源限制等。容器是有状态的,其状态可以从 运行态 切换到 退出态。一个处于 运行态的容器包含了在CPU上面运行的进程树,于其它在该主机上运行的进程相隔离,而退出态是指文件系统的状态,并保留了其退出值。你可以使用它来启动,停止和重启一个容器。

Docker技术为IT界带来了巨大的改变,它使得云服务可以用来共享应用和工作流程自动化,使得应用可以用组件快速组合,消除了开发、品质保证、产品环境间的摩擦。在这篇文章中,我们将会建立CentOS环境,然后用Apache网络服务器提供一个网站服务。

这是一个快速且容易的教程,讨论我们怎样使用交互的shell,以交互的方式来创建一个容器。

1. 运行一个Docker实例

Docker首先会尝试从本地取得并运行所需的镜像,如果在本地主机上没有发现,它就会从Docker公共注册中心拉取。这里,我们将会拉取镜像并在 Docker 容器中创建一个fedora实例,并连接到它的 tty 上的bash shell。

# docker run -i -t fedora bash

Downloading Fedora Base Image

2.安装Apache网络服务器

现在,在我们的Fedora基本镜像实例准备好后,我们将会开始交互式地安装Apache网络服务器,而不是为它创建Dockerfile。为了做到这点,我们需要在终端或者shell运行以下命令。

# yum update

Installing httpd

# yum install httpd

Installing httpd

退出容器的 tty。

# exit

3.保存镜像

现在,我们要去保存在Fedora实例里做的修改。要做到这个,我们首先需要知道实例的容器ID。而为了得到ID,我们又需要运行以下命令(LCTT 译注:在容器外执行该命令)。

# docker ps -a

Docker Running Container

然后,我们会保存这些改变为一个新的镜像,请运行以下命令。

# docker commit c16378f943fe fedora-httpd

committing fedora httpd

这里,修改已经通过使用容器ID保存起来了,镜像名字叫fedora-httpd。为了确认新的镜像是否在运行,我们将运行以下命令。

# docker images

view docker images

4. 添加内容到新的镜像

我们自己新的Fedora Apache镜像正成功的运行,现在我们想添加一些我们网站的网页内容到Apache网络服务器,使得网站能够开箱即用。为做到这点,我们需要创建一个新的Dockerfile,它会处理从复制网页内容到启用80端口的所有操作。要达到这样的目的,我们需要使用我们最喜欢的文本编辑器创建Dockerfile文件,像下面演示的一样。

# nano Dockerfile

现在,我们需要添加以下的命令行到文件中。

FROM fedora-httpd
ADD mysite.tar /tmp/
RUN mv /tmp/mysite/* /var/www/html
EXPOSE 80
ENTRYPOINT [ "/usr/sbin/httpd" ]
CMD [ "-D", "FOREGROUND" ]

configuring Dockerfile

这里,上述的Dockerfile中,放在mysite.tar里的网页内容会自动解压到/tmp/文件夹里。然后,整个站点会被移动到Apache的网页根目录/var/www/html/,命令expose 80会打开80端口,这样网站就能正常访问了。其次,入口点放在了/usr/sbin/https里面,保证Apache服务器能够执行。

5. 构建并运行一个容器

现在,我们要用刚刚创建的Dockerfile创建我们的容器,以便将我们的网站添加到上面。为做到这,我们需要运行以下命令。

# docker build -rm -t mysite .

Building mysite Image

建立好我们的新容器后,我们需要要用下面的命令来运行容器。

# docker run -d -P mysite

Running mysite Container

总结

最后,我们已经成功的以交互式的方式建立了一个Docker容器。在本节方法中,我们是直接通过交互的shell命令建立我们的容器和镜像。在建立与配置镜像与容器时,这种方法十分简单且快速。如果你有任何问题,建议和反馈,请在下方的评论框里写下来,以便我们可以提升或者更新我们的文章。谢谢!祝生活快乐 :-)


via: http://linoxide.com/linux-how-to/interactively-create-docker-container/

作者:Arun Pyasi 译者:wi-cuckoo 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

解决亮度控制在Ubuntu和Linux Mint下不工作的问题这篇教程里,一些用户提到虽然问题已经得到解决,但是Ubuntu无法记住亮度设置,同样的情况在Linux Mint下也会发生。每次开机或从睡眠状态下唤醒,亮度会恢复至最大值或最小值。我知道这种情况很烦。不过幸好我们有很简单的方法来解决Ubuntu和Linux Mint下的亮度问题

解决Ubuntu和Linux下不能记住亮度设置

Norbert写了一个脚本,能让Ubuntu和Linux Mint记住亮度设置,不论是开机还是唤醒之后。为了能让你使用这个脚本更简单方便,他把这个适用于Ubuntu 12.04、14.04和14.10的PPA挂在了网上。你需要做的就是输入以下命令:

sudo add-apt-repository ppa:nrbrtx/sysvinit-backlight
sudo apt-get update
sudo apt-get install sysvinit-backlight

安装好之后,重启你的系统。现在就来看看亮度设置有没有被保存下来吧。

希望这篇小贴士能帮助到你。如果你有任何问题,就来这儿提bug吧。


via: http://itsfoss.com/ubuntu-mint-brightness-settings/

作者:Abhishek 译者:ZTinoZ 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

如果你经常需要通过终端以非交互模式访问网络服务器(例如,从网络上下载文件,或者是测试 RESTful 网络服务接口),可能你会选择的工具是 wget 或 curl。通过大量的命令行选项,这两种工具都可以处理很多非交互网络访问的情况(比如这里这里,还有这里)。然而,即使像这些一样的强大的工具,你也只能发挥你所了解的那些选项的功能。除非你很精通那些繁冗的语法细节,这些工具对于你来说只不过是简单的网络下载器而已。

就像其宣传的那样,“给人用 curl 类工具”,HTTPie 设计用来增强 wget 和 curl 的可用性。它的主要目标是使通过命令行与网络服务器进行交互的过程变得尽可能的人性化。为此,HTTPie 支持具有表现力、但又很简单很直观的语法。它以彩色模式显示响应,并且还有一些不错的优点,比如对 JSON 的良好支持,和持久性会话用以作业流程化。

我知道很多人对把像 wget 和 curl 这样的无处不在的、可用的、完美的工具换成完全没听说过的软件心存疑虑。这种观点是好的,特别是如果你是一个系统管理员、要处理很多不同的硬件的话。然而,对于开发者和终端用户来说,重要的是效率。如果我发现了一个工具的用户更佳替代品,那么我认为采用易于使用的版本来节省宝贵的时间是毫无疑问的。没有必要对替换掉的工具保持信仰忠诚。毕竟,对于 Linux 来说,最好的事情就是可以选择。

在这篇文章中,让我们来了解并展示一下我所说的 HTTPie,一个用户友好的 wget 和 curl 的替代。

在 Linux 上安装 HTTPie

HTTPie 是用 Python 写的,所以你可以在几乎所有地方(Linux,MacOSX,Windows)安装它。而且,在大多数的 Linux 发行版中都有编译好的安装包。

Debian,Ubuntu 或者 Linux Mint:

$ sudo apt-get install httpie

Fedora:

$ sudo yum install httpie

CentOS/RHEL:

首先,启用EPEL 仓库,然后运行:

$ sudo yum install httpie

对于任何 Linux 发行版,另一个安装方法时使用pip

$ sudo pip install --upgrade httpie

HTTPie 的例子

当你安装完 HTTPie 后,你可以通过输入 http 命令来调用它。在这篇文章的剩余部分,我会展示几个有用的 http 命令的例子。

例1:定制头部

你可以使用 <header:value> 的格式来定制头部。例如,我们发送一个 HTTP GET 请求到 www.test.com ,使用定制用户代理(user-agent)和来源(referer),还有定制头部(比如 MyParam)。

$ http www.test.com User-Agent:Xmodulo/1.0 Referer:http://xmodulo.com MyParam:Foo

注意到当使用 HTTP GET 方法时,就无需明确指定 HTTP 方法。

这个 HTTP 请求看起来如下:

GET / HTTP/1.1
Host: www.test.com
Accept: */*
Referer: http://xmodulo.com
Accept-Encoding: gzip, deflate, compress
MyParam: Foo
User-Agent: Xmodulo/1.0

例2:下载文件

你可以把 http 作为文件下载器来使用。你需要像下面一样把输出重定向到文件。

$ http www.test.com/my_file.zip > my_file.zip

或者:

$ http --download www.test.com/my_file.zip

例3:定制 HTTP 方法

除了默认的 GET 方法,你还可以使用其他方法(比如 PUT,POST,HEAD)。例如,发送一个 HTTP PUT 请求:

$ http PUT www.test.com name='Dan Nanni' [email protected]

例4:提交表单

使用 http 命令提交表单很容易,如下:

$ http -f POST www.test.com name='Dan Nanni' comment='Hi there'

'-f' 选项使 http 命令序列化数据字段,并将 'Content-Type' 设置为 "application/x-www-form-urlencoded; charset=utf-8"。

这个 HTTP POST 请求看起来如下:

POST / HTTP/1.1
Host: www.test.com
Content-Length: 31
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Accept-Encoding: gzip, deflate, compress
Accept: */*
User-Agent: HTTPie/0.8.0

name=Dan+Nanni&comment=Hi+there

例5:JSON 支持

HTTPie 内置 JSON(一种日渐普及的数据交换格式)支持。事实上,HTTPie 默认使用的内容类型(content-type)就是 JSON。因此,当你不指定内容类型发送数据字段时,它们会自动序列化为 JSON 对象。

$ http POST www.test.com name='Dan Nanni' comment='Hi there'

这个 HTTP POST 请求看起来如下:

POST / HTTP/1.1
Host: www.test.com
Content-Length: 44
Content-Type: application/json; charset=utf-8
Accept-Encoding: gzip, deflate, compress
Accept: application/json
User-Agent: HTTPie/0.8.0

{"name": "Dan Nanni", "comment": "Hi there"}

例6:输出重定向

HTTPie 的另外一个用户友好特性是输入重定向,你可以使用缓冲数据提供 HTTP 请求内容。例如:

$ http POST api.test.com/db/lookup < my_info.json

或者:

$ echo '{"name": "Dan Nanni"}' | http POST api.test.com/db/lookup

结束语

在这篇文章中,我介绍了 HTTPie,一个 wget 和 curl 的可能替代工具。除了这里展示的几个简单的例子,你可以在其官方网站上找到 HTTPie 的很多有趣的应用。再次重复一遍,一款再强大的工具也取决于你对它的了解程度。从个人而言,我更倾向于 HTTPie,因为我在寻找一种更简洁的测试复杂网络接口的方法。

你怎么看?


via: http://xmodulo.com/wget-curl-alternative-linux.html

作者:Dan Nanni 译者:wangjiezhe 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

提问: 当我试着运行一个程序时,它提示“command not found”。 但这个程序就在/usr/local/bin下。我该如何添加/usr/local/bin到我的PATH变量下,这样我就可以不用指定路径来运行这个命令了。

在Linux中,PATH环境变量保存了一系列的目录用于用户在输入的时候搜索命令。PATH变量的值由一系列的由冒号分隔的绝对路径组成。每个用户都有特定的PATH环境变量(由系统级的PATH变量初始化)。

要检查用户的环境变量,用户模式下运行下面的命令:

$ echo $PATH
/usr/lib64/qt-3.3/bin:/bin:/usr/bin:/usr/sbin:/sbin:/home/xmodulo/bin

或者运行:

$ env | grep PATH
PATH=/usr/lib64/qt-3.3/bin:/bin:/usr/bin:/usr/sbin:/sbin:/home/xmodulo/bin

如果你的命令不存在于上面任何一个目录内,shell就会抛出一个错误信息:“command not found”。

如果你想要添加一个另外的目录(比如:/usr/local/bin)到你的PATH变量中,你可以用下面这些命令。

为特定用户修改PATH环境变量

如果你只想在当前的登录会话中临时地添加一个新的目录(比如:/usr/local/bin)给用户的默认搜索路径,你只需要输入下面的命令。

$ PATH=$PATH:/usr/local/bin

检查PATH是否已经更新:

$ echo $PATH
/usr/lib64/qt-3.3/bin:/bin:/usr/bin:/usr/sbin:/sbin:/home/xmodulo/bin:/usr/local/bin

更新后的PATH会在当前的会话一直有效。然而,更改将在新的会话中失效。

如果你想要永久更改PATH变量,用编辑器打开~/.bashrc (或者 ~/.bash\_profile),接着在最后添加下面这行。

export PATH=$PATH:/usr/local/bin

接着运行下面这行永久激活更改:

$ source ~/.bashrc (或者 source ~/.bash_profile)

改变系统级的环境变量

如果你想要永久添加/usr/local/bin到系统级的PATH变量中,像下面这样编辑/etc/profile。

$ sudo vi /etc/profile

export PATH=$PATH:/usr/local/bin

你重新登录后,更新的环境变量就会生效了。


via: http://ask.xmodulo.com/change-path-environment-variable-linux.html

作者:Dan Nanni 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Conky 是一个用 ‘C’ 语言写就的系统监视器,并在 GNU GPL 和 BSD 许可协议下发布,在 Linux 和 BSD 操作系统中都可以获取到它。这个应用是基于 X 视窗系统的,原本由 Torsmo 分支而来。

特点

  • 简洁的用户界面;
  • 高度可配置;
  • 它既可使用内置的部件(超过 300 多个) 也可使用外部脚本,来在桌面或其自有容器中展示系统的状态;
  • 低资源消耗;
  • 它可显示范围广泛的系统参数,包括但不限于 CPU,内存,swap 分区 ,温度,进程,磁盘使用情况,网络状态,电池电量,邮件收发,系统消息,音乐播放器的控制,天气信息,最新新闻,升级信息等等;
  • 在许多操作系统中如 CrunchBang Linux 和 Pinguy OS 被默认安装;

关于 Conky 的少有人知的事实

  • conky 这个名称来自于一个加拿大电视节目;
  • 它已被移植到 Nokia N900 上;
  • 官方已经不再维护它了;

在 Linux 中 Conky 的安装和使用

在我们安装 conky 之前,我们需要使用下面的命令来安装诸如 lm-sensors, curlhddtemp 之类的软件包:

# apt-get install lm-sensors curl hddtemp

然后是检测传感器:

# sensors-detect

: 在被系统提示时,回答 ‘Yes’ 。

检测所有探测到的传感器:

# sensors

样例输出

acpitz-virtual-0
Adapter: Virtual device
temp1:        +49.5°C  (crit = +99.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +49.0°C  (high = +100.0°C, crit = +100.0°C)
Core 0:         +49.0°C  (high = +100.0°C, crit = +100.0°C)
Core 1:         +49.0°C  (high = +100.0°C, crit = +100.0°C)

Conky 既可以从软件仓库中安装,也可从源代码编译得到:

# yum install conky              [在 RedHat 系的系统上]
# apt-get install conky-all      [在 Debian 系的系统上]

: 在 Fedora/CentOS 上安装 conky 之前,你必须启用 EPEL 软件仓库

在安装完 conky 之后,只需输入如下命令来开启它:

$ conky &

正在运行的 Conky 监视器

正在运行的 Conky 监视器

这使得 conky 以一个弹窗的形式运行,并使用位于 /etc/conky/conky.conf 的 conky 基本配置文件。

你可能想将 conky 集成到桌面上,并不想让它每次以弹窗的形式出现,下面就是你需要做的:

将配置文件 /etc/conky/conky.conf 复制到你的家目录中,并将它重命名为 .conkyrc,开头的点号 (.) 是为了确保这个配置文件是隐藏的。

$ cp /etc/conky/conky.conf /home/$USER/.conkyrc

现在重启 conky 来应用新的更改:

$ killall -SIGUSR1 conky

Conky 监视器窗口

Conky 监视器窗口

你可能想编辑位于你的家目录的 conky 的配置文件,这个配置文件的内容是非常容易理解的。

下面是 conky 配置文件的一个样例:

Conky 的配置

Conky 的配置

从上面的窗口中,你可以更改颜色,边框,大小,缩放比例,背景,对齐方式及几个其他属性。通过为不同的 conky 窗口设定不同的对齐方式,我们可以同时运行几个 conky 脚本。

让 conky 使用其它脚本而不是默认配置,以及如何找到这些脚本?

你可以编写你自己的 conky 脚本或使用来自于互联网的脚本;我们并不建议你使用从互联网中找到的具有潜在危险的任何脚本,除非你清楚你正在做什么。然而,有一些著名的主题和网页包含可信赖的 conky 脚本,例如下面所提及的:

在上面的 URL 地址中,你将发现其中每个截图都有一个超链接,它们将指向到脚本文件。

测试 Conky 脚本

这里我将在我的 Debian Jessie 系统中运行一个由第三方写的 conky 脚本,以此来进行测试:

$ wget https://github.com/alexbel/conky/archive/master.zip
$ unzip master.zip 

切换当前工作目录到刚才解压的目录:

$ cd conky-master

secrets.yml.example 重命名为 secrets.yml

$ mv secrets.yml.example secrets.yml

在你需要运行这个(ruby)脚本之前安装 Ruby:

$ sudo apt-get install ruby
$ ruby starter.rb 

华丽的 conky 外观

华丽的 conky 外观

: 可以修改这个脚本以展示你当前的天气,温度等;

假如你想让 conky 开机自启,请在开机启动应用设置(startup Applications) 中添加如下的几行命令:

conky --pause 10 
save and exit.

最后,如此轻量级且吸引眼球的实用 GUI 软件包不再处于活跃状态且官方不再进行维护了。最新的稳定发布版本为 conky 1.9.0, 于 2012 年 5 月 3 号发布。在 Ubuntu 论坛上,一个有关用户分享 conky 配置的主题已经超过了 2000 多页。(这个论坛主题的链接为: http://ubuntuforums.org/showthread.php?t=281865/)

这就是全部内容了。保持联系,保持评论。请在下面的评论框里分享你的想法和配置。


via: http://www.tecmint.com/install-conky-in-ubuntu-debian-fedora/

作者:Avishek Kumar 译者:FSSlc 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

提问: 我使用了Ubuntu的标准仓库安装了Docker。然而,默认安装的Docker不能满足我另外一个依赖Docker程序的版本需要。我该如何在Ubuntu中升级到Docker的最新版本?

Docker第一次在2013年发布,它快速地演变成了一个针对分布式程序的开发平台。为了满足工业期望,Docker正在紧密地开发并持续地带来新特性的升级。这样Ubuntu发行版中的Docker版本可能很快就会过时。比如, Ubuntu 14.10 Utopic 中的Docker版本是1.2.0, 然而最新的Docker版本是1.6.0(截止至本文发布时)。

对于那些想要跟随Docker的最新开发的人而言,Canonical为Docker维护了一个独立的PPA。使用这个PPA仓库,你可以很容易地在Ubuntu上升级到最新的Docker版本。

下面是如何设置Docker的PPA和升级Docker。

$ sudo add-apt-repository ppa:docker-maint/testing
$ sudo apt-get update
$ sudo apt-get install docker.io

检查安装的Docker版本:

$ docker --version

Docker version 1.5.0-dev, build a78ce5c

via: http://ask.xmodulo.com/upgrade-docker-ubuntu.html

作者:Dan Nanni 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出