2015年4月

Elementary OS是一个以Ubuntu为基础的轻量级操作系统,广受欢迎。目前已经发行了三个版本,而第四个版本将会以即将到来的Ubuntu16.04为基础开发。

  • Jupiter (0.1): 第一个Elementary OS稳定发行版基于Ubuntu 10.10,在2011年三月发布。
  • Luna (0.2): 第二个Elementary OS稳定发行版基于Ubuntu 12.04,于2012年11月发布。
  • Freya (0.3): 第三个Elementary OS稳定发行版基于Ubuntu 14.04的,2015年二月8号发布。
  • Loki (0.4): 未来Elementary OS第四版,计划以Ubuntu16.04为基础,并且提供更新服务直到2021年。

Freya是目前最新的Elementary OS版本(0.3)。最初是被命名为ISIS,但是后来改了,是为了避免与同名的恐怖组织产生任何的联系。Freya有一些非常不错的预装应用。

突出的特性

这里列举了一些特性,但并非Elementary OS 0.3的所有特性。

  • 更好的交互性消息通知,可在通知设定面板设定系统级别的“Do Not Disturb(不要打扰)”模式。
  • 最新版Elementary OS提供更好的emoji表情支持,及内置替换了网页应用中的微软核心字体。
  • “隐私模式”是一个新的防火墙工具,易于使用,可以帮助保护电脑免遭恶意脚本和应用的攻击。
  • 统一风格的登入和锁定界面。
  • 改进了界面效果和功能的应用中心菜单,包括快速操作列表,搜索拖放,支持快速数学计算。
  • 重新设计的多任务视图提供了更多以应用为中心的功能。
  • 更新了软件栈(Linux 3.16, Gtk 3.14 和Vala 0.26),更好的支持和增强了最新开发的应用。
  • 支持UEFI。
  • 通过新的联网助手,WiFi连接变得更容易。

下载64位&32位版本

安装Elementary OS 0.3 (Freya)

下载Elementary OS 0.3的ISO文件,并且写入到一个USB启动盘或者DVD/CD。支持32位和64位的架构。当计算机从Elementary OS ISO文件启动后,有两个选项可用,不安装而仅试用,或直接安装到计算机里。这里选择第二项。Elmentary OS也可以与已有操作系统并存安装,构成双重启动。

Install Freya

在进行下面的步骤之前会检查系统要求和资源有效性。如果你的系统有足够的资源,点击继续。

Installation Requirements

安装向导提供许多安装形式。选取最适合你的选项,通常大多数都选用第一个选项:“擦除磁盘以安装elementary”。选择该选项,必须保证你的原有数据都已经正确备份了,因为磁盘(分区)擦除后,其上所有的数据就会丢失。

Installation Types

接下来的对话框显示了Elementary OS所使用和需要格式化的磁盘分区列表,确保数据完整后点击继续。

Format Warning

选择你的地理位置,确定时区,点击继续。

Location

选择你的语言,点击继续。

Language

填入你的信息,选择一个高强度的超级用户/管理员密码,点击继续。

whoareyou

当你的信息提供后,核心安装进程就会启动,正在安装的组件的详细信息会在一个小对话框里随进度条一闪而过。

Installation progress

恭喜你!最新的Elementary OS 0.3 (Freya)已经安装完成了。此时需要重启来更新和完整注册,恭喜。

Installation Complet

启动时,Elementary OS将显示它优雅的logo,然后会出现密码保护的管理员登入和游客访问选项。游客访问有相当多的限制功能,而且没有安装软件的权限。

Login

下图是新安装的Elementary OS 0.3的画面。

first look

个性化桌面

Elementary OS 0.3以其轻巧和美观而为我们熟知。每个人有自己独特的审美观和计算机使用习惯,桌面反映出每一个计算机使用者的个人偏好。如其他操作系统一样,Elementary OS 0.3也提供了许多选项来个性化配置桌面,包括壁纸,字体大小,主题等等。

基本的个性化配置,点击Applications > System Settings > Desktop

我们可以改变壁纸,泊板(dock)和启用桌面热角。

默认提供了很少的壁纸,更多的可以从网上下载或者从你的相机传输过来。

Desktop Wallpaper

Elementary OS真正的美丽在于优雅的泊板。桌面上没有任何图标,泊板上的应用图标显示逼真,通过它可以快速访问常用应用。

Desktop Dock

用户可以定制桌面的四个热角的功能。

Hot Corners

通过安装elementary tweaks工具来更深入的个性化定制。

可以使用如下命令,将它的稳定版的PPA添加到高级软件包管理工具(APT)仓库。

sudo add-apt-repository ppa:mpstark/elementary-tweaks-daily

ppa

当 PPA 添加到仓库后,我们需要用以下命令更新仓库

sudo apt-get update

update repository

更新仓库后,我们就可以安装elementary-tweaks,用以下命令完成

sudo apt-get install elementary-tweaks

install elementary tweaks

我们可以在Application > System Settings下的个人区域的看到增加了一个Tweaks项目。它现在可以给我们提供更多的个性化定制选项。

tweaks

为了进一步定制,我们也安装了gnome桌面系统的tweak工具,以演示解锁桌面。

sudo apt-get install gnome-tweak-tool

gnome

总结

Elementary OS十分接近Linux发行版Ubuntu,它的优缺点两方面也都十分相似。Elementary OS在外观和体验上都十分轻巧和优雅,并且正在快速地走向成熟。它有潜力成为Windows和OS X操作系统之外的第三选择。最新的Elementary OS 0.3(Freya)以其良好的功能基础而迅速流行。想了解更多信息,最近的更新和下载,请访问其官方网站


via: http://linoxide.com/ubuntu-how-to/elementary-os-0-3-freya-install-guide/

作者:Aun Raza 译者:wi-cuckoo 校对:wxy

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

在你的 Ubuntu 里,如果你需要处理一些工作,你并不需要关闭正运行着的那些应用,只需要管理一下窗口,并打开那些工作需要的应用就行。然而,如果你需要离开处理些别的事情或你的机器电量低使得你必须马上关闭电脑,这些程序可能就需要关闭终止了。不过幸运的是,你可以让 Ubuntu 记住所有你正运行的应用并在你下一次登录时还原它们。

自动保存会话

现在,为了让我们的 Ubuntu 记住当前会话中正运行的应用并在我们下一次登录时还原它们,我们将会使用到 dconf-editor。这个工具代替了前一个 Ubuntu 版本里安装的 gconf-editor,但默认情况下现在这个 Ubuntu 版本(注:这里指的是 Ubuntu 14.04 LTS) 并没有安装。为了安装 dconf-editor, 你需要运行 sudo apt-get install dconf-editor命令:

$ sudo apt-get install dconf-tools

一旦 dconf-editor 安装完毕,你就可以从应用菜单(注:这里指的是 Unity Dash)里打开它,或者你可以通过直接在终端里运行,或使用 alt+f2 运行下面的命令来启动它:

$ dconf-editor

在 “dconf Editor” 窗口中,在左边窗格里点击临近 "org" 的右箭头来展开这个选项的分支。

Dconf Editor Apps, org

然后在 “org” 下,点击临近 “gnome” 的右箭头。

dconf editor clicking gnome

接着在 “gnome” 下点击 “gnome-session”。在右边窗格里,选择 “auto-save-session” 选项框并将它开启。

dconf-editor selecting auto save session

在你确认对刚才的选项打钩之后,点击默认情况下位于窗口左上角的关闭按钮(X)来关闭 “Dconf Editor”。

dconf-editor closing dconf editor

在你登出并再登录回来时,所有你正运行的应用就可以被还原了。

欢呼吧,我们已经成功地配置了我们的 Ubuntu 14.04 LTS "Trusty" 来自动记住我们上一次会话中正在运行的应用。

除了关机后恢复应用之外,还可以通过休眠来达成类似的功能。

休眠功能

现在,在这个教程里,我们也将学会 如何在 Ubuntu 14.04 LTS 里开启休眠功能 :

在开始之前,在键盘上按 Ctrl+Alt+T 来开启终端。在它开启以后,运行:

sudo pm-hibernate

在你的电脑关闭后,再重新开启它。这时,你开启的应用被重新打开了吗?如果休眠功能没有发挥作用,请检查你的交换分区大小,它至少要和你可用 RAM 大小相当。

你可以在系统监视器里查看你的交换分区大小,系统监视器可以通过在应用菜单或在终端里运行下面的命令来开启:

$ gnome-system-monitor

在系统托盘里启用休眠功能:

系统托盘里面的会话指示器现在使用 logind 而不是 upower 了。默认情况下,在 upower 和 logind 中,休眠菜单都被禁用了。

为了开启它的休眠菜单,依次运行下面的命令来编辑配置文件:

sudo -i

cd /var/lib/polkit-1/localauthority/50-local.d/

gedit com.ubuntu.enable-hibernate.pkla

提示:假如对你来说,这个配置文件并没有起到作用,请替换上面代码中的 /var/lib 为 /etc 来试试另一个配置文件

复制并粘贴下面的代码到文件中并保存:

[Re-enable hibernate by default in upower]
 Identity=unix-user:*
 Action=org.freedesktop.upower.hibernate
 ResultActive=yes

[Re-enable hibernate by default in logind]
 Identity=unix-user:*
 Action=org.freedesktop.login1.hibernate
 ResultActive=yes

重启你的电脑就可以了。

当你盖上笔记本的后盖时,让它休眠:

  1. 通过下面的命令编辑文件 “/etc/systemd/logind.conf” :
$ sudo nano /etc/systemd/logind.conf
  1. #HandleLidSwitch=suspend (挂起)这一行改为 HandleLidSwitch=hibernate (休眠)并保存文件;
  2. 运行下面的命令或重启你的电脑来应用更改:
$ sudo restart systemd-logind

就是这样。 成功了吗?现在我们设置了 dconf 并开启了休眠功能 :) 这样,无论你是关机还是直接合上笔记本盖子,你的 Ubuntu 将能够完全记住你开启的应用和窗口了。


via: http://linoxide.com/ubuntu-how-to/remember-running-applications-ubuntu/

作者:Arun Pyasi 译者:FSSlc 校对:wxy

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

Question: 我可以在树莓派上使用标准的USB网络摄像头么?我该如何检查USB网络摄像头与树莓派是否兼容?另外我该如何在树莓派上安装它?

如果你想在树莓上拍照或者录影,你可以安装树莓派的摄像头板。如果你不想要为摄像头模块花费额外的金钱,那有另外一个方法,就是你常见的USB 摄像头。你可能已经在PC上安装过了。

本教程中,我会展示如何在树莓派上设置摄像头。我们假设你使用的系统是Raspbian。

在此之前,你最好检查一下你的摄像头是否在这些已知与树莓派兼容的摄像头之中。如果你的摄像头不在这个兼容列表中,不要丧气,仍然有可能树莓派能检测到你的摄像头。

检查USB摄像头是否雨树莓派兼容

要检查你的摄像头是否可以被树莓派检测到,将它插入到树莓派的USB口中,然后输入下面的命令。

$ lsusb 

如果输出中没有你的摄像头,那么有可能你的树莓派的电源无法供应足够的电力给你的摄像头。这时你可以给你的摄像头用独立的电源线,比如有源USB hub,并重新输入lsusb命令。如果摄像头还是不能被识别,我们只有建议你购买其他树莓派支持的摄像头了。

在上面的截屏中,USB摄像头被识别为“1e4e:0102”,但是没有显示摄像头的制造商。当你在笔记本的Fedora 20中使用它时,它可以成功的检测到“1e4e:0102 Cubeternet GL-UPC822 UVC WebCam”。

另外一个可以检查摄像头是否被树莓派支持的方法是检查/dev目录。如果有/dev/video0,那么这暗示树莓派支持你的摄像头。

用USB Webcam拍照片

当USB摄像头成功挂载到树莓派上之后,下一步就是拍一些照片来验证它的功能了。

要想拍摄照片,你要安装fswebcam,这是一款小型摄像头程序。你可以直接通过Raspbian的仓库来安装fswebcam。

$ sudo apt-get install fswebcam 

fswebcam安装完成后,在终端中运行下面的命令来抓去一张来自摄像头的照片:

$ fswebcam --no-banner -r 640x480 image.jpg 

这条命令可以抓取一张640x480分辨率的照片,并且用jpg格式保存。它不会在照片的底部留下任何水印.

这就是fswebcam下640x480分辨率的结果。

下面的例子是没有定义分辨率的照片。图片是偏蓝的,并且默认的分辨率是358x288。


via: http://ask.xmodulo.com/install-usb-webcam-raspberry-pi.html

作者:Kristophorus Hadiono 译者:geekpi 校对:wxy

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

Q:1 Shell脚本是什么、它是必需的吗?

答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。

Q:2 什么是默认登录shell,如何改变指定用户的登录shell

答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。使用chsh命令可以改变默认的shell。示例如下所示:

# chsh <用户名> -s <新shell>
# chsh linuxtechi -s /bin/sh

Q:3 可以在shell脚本中使用哪些类型的变量?

答:在shell脚本,我们可以使用两种类型的变量:

  • 系统定义变量
  • 用户定义变量

系统变量是由系统系统自己创建的。这些变量通常由大写字母组成,可以通过“set”命令查看。

用户变量由系统用户来生成和定义,变量的值可以通过命令“echo $<变量名>”查看。

Q:4 如何将标准输出和错误输出同时重定向到同一位置?

答:这里有两个方法来实现:

方法一:

2>&1 (如# ls /usr/share/doc > out.txt 2>&1 )

方法二:

&> (如# ls /usr/share/doc &> out.txt )

Q:5 shell脚本中“if”语法如何嵌套?

答:基础语法如下:

if [ 条件 ]
then
命令1
命令2
…..
else
if [ 条件 ]
then
命令1
命令2
….
else
命令1
命令2
…..
fi
fi

Q:6 shell脚本中“$?”标记的用途是什么? ?

答:在写一个shell脚本时,如果你想要检查前一命令是否执行成功,在if条件中使用“$?”可以来检查前一命令的结束状态。简单的例子如下:

root@localhost:~# ls /usr/bin/shar
/usr/bin/shar
root@localhost:~# echo $?
0

如果结束状态是0,说明前一个命令执行成功。

root@localhost:~# ls /usr/bin/share

ls: cannot access /usr/bin/share: No such file or directory
root@localhost:~# echo $?
2

如果结束状态不是0,说明命令执行失败。

Q:7 在shell脚本中如何比较两个数字 ?

答:在if-then中使用测试命令( -gt 等)来比较两个数字,例子如下:

#!/bin/bash
x=10
y=20

if [ $x -gt $y ]
then
echo “x is greater than y”
else
echo “y is greater than x”
fi

Q:8 shell脚本中break命令的作用 ?

答:break命令一个简单的用途是退出执行中的循环。我们可以在while和until循环中使用break命令跳出循环。

Q:9 shell脚本中continue命令的作用 ?

答:continue命令不同于break命令,它只跳出当前循环的迭代,而不是整个循环。continue命令很多时候是很有用的,例如错误发生,但我们依然希望继续执行大循环的时候。

Q:10 告诉我shell脚本中Case语句的语法 ?

答:基础语法如下:

case 变量 in
值1)
命令1
命令2
…..
最后命令
!! 
值2)
命令1
命令2
……
最后命令
;;
esac

Q:11 shell脚本中while循环语法 ?

答:如同for循环,while循环只要条件成立就重复它的命令块。不同于for循环,while循环会不断迭代,直到它的条件不为真。基础语法:

while [ 条件 ]
do
命令…
done

Q:12 如何使脚本可执行 ?

答:使用chmod命令来使脚本可执行。例子如下:

# chmod a+x myscript.sh

Q:13 “#!/bin/bash”的作用 ?

答:#!/bin/bash是shell脚本的第一行,称为释伴(shebang)行。这里#符号叫做hash,而! 叫做 bang。它的意思是命令通过 /bin/bash 来执行。

Q:14 shell脚本中for循环语法 ?

答:for循环的基础语法:

for 变量 in 循环列表
do
命令1
命令2
….
最后命令
done

Q:15 如何调试shell脚本 ?

答:使用'-x'参数(sh -x myscript.sh)可以调试shell脚本。另一个种方法是使用‘-nv’参数( sh -nv myscript.sh)。

Q:16 shell脚本如何比较字符串?

答:test命令可以用来比较字符串。测试命令会通过比较字符串中的每一个字符来比较。

Q:17 Bourne shell(bash) 中有哪些特殊的变量 ?

答:下面的表列出了Bourne shell为命令行设置的特殊变量。

| 内建变量 | 解释 |
| $0 | 命令行中的脚本名字 |
| $1 | 第一个命令行参数 |
| $2 | 第二个命令行参数 |
| ….. | ……. |
| $9 | 第九个命令行参数 |
| $# | 命令行参数的数量 |
| $* | 所有命令行参数,以空格隔开 |

Q:18 How to test files in a shell script ?

Q:18 在shell脚本中,如何测试文件 ?

答:test命令可以用来测试文件。基础用法如下表格:

| Test | 用法 |
| -d 文件名 | 如果文件存在并且是目录,返回true |
| -e 文件名 | 如果文件存在,返回true |
| -f 文件名 | 如果文件存在并且是普通文件,返回true |
| -r 文件名 | 如果文件存在并可读,返回true |
| -s 文件名 | 如果文件存在并且不为空,返回true |
| -w 文件名 | 如果文件存在并可写,返回true |
| -x 文件名 | 如果文件存在并可执行,返回true |

Q:19 在shell脚本中,如何写入注释 ?

答:注释可以用来描述一个脚本可以做什么和它是如何工作的。每一行注释以#开头。例子如下:

#!/bin/bash
# This is a command
echo “I am logged in as $USER”

Q:20 如何让 shell 就脚本得到来自终端的输入?

答:read命令可以读取来自终端(使用键盘)的数据。read命令得到用户的输入并置于你给出的变量中。例子如下:

# vi /tmp/test.sh

#!/bin/bash
echo ‘Please enter your name’
read name
echo “My Name is $name”

# ./test.sh
Please enter your name
LinuxTechi
My Name is LinuxTechi

Q:21 如何取消变量或取消变量赋值 ?

答:“unset”命令用于取消变量或取消变量赋值。语法如下所示:

# unset <变量名>

Q:22 如何执行算术运算 ?

答:有两种方法来执行算术运算:

1.使用expr命令(# expr 5 + 2) 2.用一个美元符号和方括号($[ 表达式 ])例如:test=$[16 + 4] ; test=$[16 + 4]

Q:23 do-while语句的基本格式 ?

答:do-while语句类似于while语句,但检查条件语句之前先执行命令(LCTT 译注:意即至少执行一次。)。下面是用do-while语句的语法

do
{
命令
} while (条件)

Q:24 在shell脚本如何定义函数呢 ?

答:函数是拥有名字的代码块。当我们定义代码块,我们就可以在我们的脚本调用函数名字,该块就会被执行。示例如下所示:

$ diskusage () { df -h ; }

译注:下面是我给的shell函数语法,原文没有

[ function ] 函数名 [()] 
{ 

  命令; 
  [return int;] 

}

Q:25 如何在shell脚本中使用BC(bash计算器) ?

答:使用下列格式,在shell脚本中使用bc:

variable=`echo “options; expression” | bc`

(题图来自:wonderhowto.com)


via: http://www.linuxtechi.com/linux-shell-scripting-interview-questions-answers/

作者:Pradeep Kumar 译者:VicYu/Vic020 校对:wxy

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

如果你不喜欢现在的Unity桌面,Gnome Flashback桌面环境是一个简单的并且很棒的选择,让你能找回曾经经典的桌面。

Gnome Flashback基于GTK3并提供与原先gnome桌面视觉上相似的界面。

Gnome Flashback的另一个改变是采用了源自mint和xface的MATE桌面,但无论mint还是xface都是基于GTK2的。

安装 Gnome Flashback

在你的ubuntu上安装以下包即可:

$ sudo apt-get install gnome-session-flashback

然后注销返回到登录界面,单击密码输入框右上角的徽标型按钮,即可选择桌面环境。可供选择的有Gnome Flashback (Metacity) 会话模式和Gnome Flashback (Compiz)会话模式。

Metacity更轻更快,而Compiz则能带给你更棒的桌面效果。下面是我使用gnome flashback桌面的截图。

桌面采用了elementary OS的壁纸和Plank dock并且移除了底部面板。这些都会在这篇教程中涉及到。

在安装好gnome flashback桌面以后也许你对效果还不满意,这样你可能需要执行接下来的一系列操作来对它进行微调。

1. 安装 Gnome Tweak Tool

Gnome Tweak Tool能够帮助你定制比如字体、主题等,这些在Unity桌面的控制中心是十分困难,几乎不可能完成的任务。

$ sudo apt-get install gnome-tweak-tool

启动按步骤: 应用程序 > 系统工具 > 首选项 > Tweak Tool

2. 在面板上添加小应用

默认的右键点击面板是没有效果的。你可以尝试在右键点击面板的同时按住键盘上的Alt+Super (win)键,这样就会出现定制面板的相关选项。

你可以修改或删除面板,并在上面添加些小应用。在这个例子中我们移除了底部面板,并用Plank dock来代替它的位置。

在顶部面板的中间添加一个显示时间的小应用。通过配置使它显示时间和天气。

同样的添加一个工作空间切换器到顶部面板,并创建合适个数的工作空间。

3. 将窗口标题栏的按钮右置

在ubuntu中,最小化、最大化和关闭按钮默认是在标题栏左侧的。需要稍作手脚才能让他们乖乖回到右边去。

想让窗口的按钮到右边可以使用下面的命令,这是我在askubuntu上找到的。

$ gsettings set org.gnome.desktop.wm.preferences button-layout 'menu:minimize,maximize,close'

4.安装 Plank dock

plank dock位于屏幕底部,用于启动应用和切换打开的窗口。它会在必要的时间隐藏自己,并在需要的时候出现。elementary OS使用的dock就是plank dock。

运行以下命令安装:

$ sudo add-apt-repository ppa:ricotz/docky -y 
$ sudo apt-get update 
$ sudo apt-get install plank -y

现在启动:应用程序 > 附件 > Plank。若想让它开机自动启动,找到 应用程序 > 系统工具 > 首选项 > 启动应用程序 并将“plank”的命令加到列表中。

5. 安装 Conky 系统监视器

Conky非常酷,它用系统的中如CPU和内存使用率的统计值来装饰桌面。它不太占资源,并且绝大部分情况下运行都不会有什么问题。

运行如下命令安装:

$ sudo apt-add-repository -y ppa:teejee2008/ppa
$ sudo apt-get update
$ sudo apt-get install conky-manager

现在启动:应用程序 > 附件 > Conky Manager ,选择你想在桌面上显示的部件。Conky Manager同样可以配置到启动项中。

6. 安装CCSM

如果你更愿意使用Gnome Flashback (Compiz),那么CCSM将是你配置桌面特效的得力助手。

运行以下命令安装:

$ sudo apt-get install compizconfig-settings-manager

启动按步骤: 应用程序 > 系统工具 > 首选项 > CompizConfig Settings Manager.

在虚拟机中经常会发生compiz会话中装饰窗口消失。可以通过启动Compiz设置,并启用"Copy to texture"插件,注销后重新登录即可。

不过值得一提的是Compiz 会话会比Metacity慢。


via: http://www.binarytides.com/install-gnome-flashback-ubuntu/

作者:Silver Moon 译者:martin2011qi 校对:wxy

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

各位,今天我们将学习如何在Docker之中运行GUI程序。我们可以轻易地在Docker容器中运行大多数GUI程序且不出错。Docker是一个开源项目,提供了一个打包、分发和运行任意程序的轻量级容器的开放平台。它没有语言支持、框架或者打包系统的限制,并可以运行在任何地方、任何时候,从小型的家用电脑到高端的服务器都可以运行。这让人们可以打包不同的包用于部署和扩展网络应用,数据库和后端服务而不必依赖于特定的栈或者提供商。

下面是我们该如何在Docker容器中运行GUI程序的简单步骤。本教程中,我们会用Firefox作为例子。

1. 安装 Docker

在开始前,我们首先得确保在Linux主机中已经安装了Docker。这里,我运行的是CentOS 7 主机,我们将运行yum管理器和下面的命令来安装Docker。

# yum install docker

# systemctl restart docker.service

2. 创建 Dockerfile

现在,Docker守护进程已经在运行中了,我们现在准备创建自己的Firefox Docker容器。我们要创建一个Dockerfile,在其中我们要输入需要的配置来创建一个可以工作的Firefox容器。为了运行 Docker 镜像我们需要使用最新版本的CentOS。要创建 Docker 镜像,我们需要用文本编辑器创建一个名为Dockerfile的文件。

# nano Dockerfile

接着,在Dockerfile中添加下面的行并保存。

#!/bin/bash
FROM centos:7
RUN yum install -y firefox
# 用你自己的 uid /gid 替换下面的0
RUN export uid=0 gid=0
RUN mkdir -p /home/developer
RUN echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd
RUN echo "developer:x:${uid}:" >> /etc/group
RUN echo "developer ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
RUN chmod 0440 /etc/sudoers
RUN chown ${uid}:${gid} -R /home/developer

USER developer
ENV HOME /home/developer
CMD /usr/bin/firefox

注意:在第四行的配置中,用你自己的用户和组id来替换0。 我们可以用下面的命令在shell或者终端中得到uid和gid。

#  id $USER

3. 构造Docker容器

下面我们就要根据上面的Dockerfile构建一个容器。它会安装firefox浏览器和它需要的包。它接着会设置用户权限并让它可以工作。这里镜像名是firefox,你可以根据你的需要命名。

# docker build --rm -t firefox .

4. 运行Docker容器

现在,如果一切顺利,我们现在可以在运行在CentOS 7镜像中的Docker容器里面运行我们的GUI程序也就是Firefox浏览器了。

# docker run -ti --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix firefox

总结

在Docker容器中运行GUI程序是一次很棒的体验,它对你的主机文件系统没有任何的伤害。它完全依赖你的Docker容器。本教程中,我尝试了CentOS 7 Docker中的Firefox。我们可以用这个技术尝试更多的GUI程序。如果你有任何问题、建议、反馈请在下面的评论栏中写下来,这样我们可以提升或更新我们的内容。谢谢!


via: http://linoxide.com/linux-how-to/run-gui-apps-docker-container/

作者:Arun Pyasi 译者:geekpi 校对:wxy

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