灰度发布在 UCloud 大规模虚拟网络中的应用
本文主要详细阐述了在 UCloud 的虚拟网络里,如何利用 ServiceMesh 技术在虚拟网络控制面以及利用可编程交换机在转发面实现灰度发布。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/24/224403octzq1bg71331i1b.jpg">Media</a>ServiceMesh 实现控制面灰度在控制面,早期灰度发布采用 APIGW 的方式实现。APIGW 通常仅部署在用户流量的入口,完全灰度发布就需要完整地部署两套系统。但在微服务化的时代,任何一个微服务发生变更都需要完整地部署两套系统,这不仅成本高且严重影响产品变更速度。ServiceMesh 以类似于将 APIGateway 部署到本地,同时提供集中化控制的方式,完美地解决了这些问题。 UCloud 的轻量级 ServiceMesh 平台基于 Istio,继续使用 Envoy 代理,修改 Pilot 在保留完整的 DSL 支持的基础上实现了脱离 K8S 运行。因此网络团队对 Pilot 做了高度定制,从而更能满足自身的需求。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/24/223415pbuece6cem9eeeee.png">Media</a>定制方案一:按账号灰度。在 GRPC 或者 HTTP 请求中添加自定义 Header <code>x-ucloud-routeby</code>,<code>x-ucloud-routeby</code> 采用 Cookie 的编码格式,在其中包含账户信息,配置 Envoy 根据该 Header 进行策略路由。定制方案二:采用显式代理而不是 IPTables 透明引流的方式和 Envoy 集成,支持 HTTP 1.0、HTTP 2.0 和 gRPC。在配置了 Envoy 的 Proxy Port 情况下,通过 Envoy 接入 ServiceMesh;如果配置域名且没有配置 Envoy 的 Proxy,则自动采用 ETCD gRPC 命名与发现的方式;如果配置 IP 地址和端口,则直连指定地址。
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/24…
本文主要详细阐述了在 UCloud 的虚拟网络里,如何利用 ServiceMesh 技术在虚拟网络控制面以及利用可编程交换机在转发面实现灰度发布。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/24/224403octzq1bg71331i1b.jpg">Media</a>ServiceMesh 实现控制面灰度在控制面,早期灰度发布采用 APIGW 的方式实现。APIGW 通常仅部署在用户流量的入口,完全灰度发布就需要完整地部署两套系统。但在微服务化的时代,任何一个微服务发生变更都需要完整地部署两套系统,这不仅成本高且严重影响产品变更速度。ServiceMesh 以类似于将 APIGateway 部署到本地,同时提供集中化控制的方式,完美地解决了这些问题。 UCloud 的轻量级 ServiceMesh 平台基于 Istio,继续使用 Envoy 代理,修改 Pilot 在保留完整的 DSL 支持的基础上实现了脱离 K8S 运行。因此网络团队对 Pilot 做了高度定制,从而更能满足自身的需求。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/24/223415pbuece6cem9eeeee.png">Media</a>定制方案一:按账号灰度。在 GRPC 或者 HTTP 请求中添加自定义 Header <code>x-ucloud-routeby</code>,<code>x-ucloud-routeby</code> 采用 Cookie 的编码格式,在其中包含账户信息,配置 Envoy 根据该 Header 进行策略路由。定制方案二:采用显式代理而不是 IPTables 透明引流的方式和 Envoy 集成,支持 HTTP 1.0、HTTP 2.0 和 gRPC。在配置了 Envoy 的 Proxy Port 情况下,通过 Envoy 接入 ServiceMesh;如果配置域名且没有配置 Envoy 的 Proxy,则自动采用 ETCD gRPC 命名与发现的方式;如果配置 IP 地址和端口,则直连指定地址。
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/24…
CPU 电源管理器:Linux 系统中 CPU 主频的控制和管理
有一款名为 CPU Power Manager 的 GNOME 扩展插件,可以很容易的就设置和管理你的 CPU 主频。Media
via https://linux.cn/article-10151-1.html
有一款名为 CPU Power Manager 的 GNOME 扩展插件,可以很容易的就设置和管理你的 CPU 主频。Media
via https://linux.cn/article-10151-1.html
CPU 电源管理器:Linux 系统中 CPU 主频的控制和管理
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/24/230729oc9hwc7zo9zoactw.jpg">Media</a>你使用笔记本的话,可能知道 Linux 系统的电源管理做的很不好。虽然有 TLP、<a href="https://www.ostechnix.com/improve-laptop-battery-performance-linux/">Laptop Mode Tools 和 powertop</a> 这些工具来辅助减少电量消耗,但跟 Windows 和 Mac OS 系统比较起来,电池的整个使用周期还是不尽如意。此外,还有一种降低功耗的办法就是限制 CPU 的频率。这是可行的,然而却需要编写很复杂的终端命令来设置,所以使用起来不太方便。幸好,有一款名为 CPU Power Manager 的 GNOME 扩展插件,可以很容易的就设置和管理你的 CPU 主频。GNOME 桌面系统中,CPU Power Manager 使用名为 intel_pstate 的频率调整驱动程序(几乎所有的 Intel CPU 都支持)来控制和管理 CPU 主频。使用这个扩展插件的另一个原因是可以减少系统的发热量,因为很多系统在正常使用中的发热量总让人不舒服,限制 CPU 的主频就可以减低发热量。它还可以减少 CPU 和其他组件的磨损。安装 CPU Power Manager首先,进入<a href="https://extensions.gnome.org/extension/945/cpu-power-manager/">扩展插件主页面</a>,安装此扩展插件。安装好插件后,在 GNOME 顶部栏的右侧会出现一个 CPU 图标。点击图标,会出现安装此扩展一个选项提示,如下示:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/24/230730jjowoo7ezo30pjjt.png">Media</a>点击“尝试安装”按纽,会弹出输入密码确认框。插件需要 root 权限来添加 policykit 规则,进而控制 CPU 主频。下面是弹出的提示框样子:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/24/230731fv1gvh866etzeqff.png">Media…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/24/230729oc9hwc7zo9zoactw.jpg">Media</a>你使用笔记本的话,可能知道 Linux 系统的电源管理做的很不好。虽然有 TLP、<a href="https://www.ostechnix.com/improve-laptop-battery-performance-linux/">Laptop Mode Tools 和 powertop</a> 这些工具来辅助减少电量消耗,但跟 Windows 和 Mac OS 系统比较起来,电池的整个使用周期还是不尽如意。此外,还有一种降低功耗的办法就是限制 CPU 的频率。这是可行的,然而却需要编写很复杂的终端命令来设置,所以使用起来不太方便。幸好,有一款名为 CPU Power Manager 的 GNOME 扩展插件,可以很容易的就设置和管理你的 CPU 主频。GNOME 桌面系统中,CPU Power Manager 使用名为 intel_pstate 的频率调整驱动程序(几乎所有的 Intel CPU 都支持)来控制和管理 CPU 主频。使用这个扩展插件的另一个原因是可以减少系统的发热量,因为很多系统在正常使用中的发热量总让人不舒服,限制 CPU 的主频就可以减低发热量。它还可以减少 CPU 和其他组件的磨损。安装 CPU Power Manager首先,进入<a href="https://extensions.gnome.org/extension/945/cpu-power-manager/">扩展插件主页面</a>,安装此扩展插件。安装好插件后,在 GNOME 顶部栏的右侧会出现一个 CPU 图标。点击图标,会出现安装此扩展一个选项提示,如下示:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/24/230730jjowoo7ezo30pjjt.png">Media</a>点击“尝试安装”按纽,会弹出输入密码确认框。插件需要 root 权限来添加 policykit 规则,进而控制 CPU 主频。下面是弹出的提示框样子:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/24/230731fv1gvh866etzeqff.png">Media…
万维网的创建者正在创建一个新的去中心化网络
万维网(WWW)的创建者 Tim Berners-Lee 公布了他计划创建一个新的去中心化网络,该网络中的数据将由用户控制。Media
via https://linux.cn/article-10152-1.html
万维网(WWW)的创建者 Tim Berners-Lee 公布了他计划创建一个新的去中心化网络,该网络中的数据将由用户控制。Media
via https://linux.cn/article-10152-1.html
万维网的创建者正在创建一个新的去中心化网络
万维网(WWW)的创建者 Tim Berners-Lee 公布了他计划创建一个新的去中心化网络,该网络中的数据将由用户控制。<a href="https://en.wikipedia.org/wiki/Tim_Berners-Lee">Tim Berners-Lee</a> 以创建万维网而闻名,万维网就是你现在所知的互联网。二十多年之后,Tim 致力于将互联网从企业巨头的掌控中解放出来,并通过去中心化网络Decentralized Web将权力交回给人们。Berners-Lee 对互联网“强权”们处理用户数据的方式感到不满。所以他<a href="https://medium.com/@timberners_lee/one-small-step-for-the-web-87f92217d085">开始致力于他自己的开源项目</a> Solid “来将在网络上的权力归还给人们”。Solid 改变了当前用户必须将个人数据交给数字巨头以换取可感知价值的模型。正如我们都已发现的那样,这不符合我们的最佳利益。Solid 是我们如何驱动网络进化以恢复平衡 —— 以一种革命性的方式,让我们每个人完全地控制数据,无论数据是否是个人数据。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/24/233504e8jyvyv3jq3dk0dd.jpg">Tim Berners-Lee is creating a decentralized web with open source project Solid</a>基本上,<a href="https://solid.inrupt.com/">Solid</a> 是一个使用现有网络构建的平台,在这里你可以创建自己的 “pod” (个人数据存储)。你决定这个 “pod” 将被托管在哪里,谁将访问哪些数据元素以及数据将如何通过这个 pod 分享。Berners-Lee 相信 Solid “将以一种全新的方式,授权个人、开发者和企业来构思、构建和寻找创新、可信和有益的应用和服务。”开发人员需要将 Solid 集成进他们的应用程序和网站…
万维网(WWW)的创建者 Tim Berners-Lee 公布了他计划创建一个新的去中心化网络,该网络中的数据将由用户控制。<a href="https://en.wikipedia.org/wiki/Tim_Berners-Lee">Tim Berners-Lee</a> 以创建万维网而闻名,万维网就是你现在所知的互联网。二十多年之后,Tim 致力于将互联网从企业巨头的掌控中解放出来,并通过去中心化网络Decentralized Web将权力交回给人们。Berners-Lee 对互联网“强权”们处理用户数据的方式感到不满。所以他<a href="https://medium.com/@timberners_lee/one-small-step-for-the-web-87f92217d085">开始致力于他自己的开源项目</a> Solid “来将在网络上的权力归还给人们”。Solid 改变了当前用户必须将个人数据交给数字巨头以换取可感知价值的模型。正如我们都已发现的那样,这不符合我们的最佳利益。Solid 是我们如何驱动网络进化以恢复平衡 —— 以一种革命性的方式,让我们每个人完全地控制数据,无论数据是否是个人数据。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/24/233504e8jyvyv3jq3dk0dd.jpg">Tim Berners-Lee is creating a decentralized web with open source project Solid</a>基本上,<a href="https://solid.inrupt.com/">Solid</a> 是一个使用现有网络构建的平台,在这里你可以创建自己的 “pod” (个人数据存储)。你决定这个 “pod” 将被托管在哪里,谁将访问哪些数据元素以及数据将如何通过这个 pod 分享。Berners-Lee 相信 Solid “将以一种全新的方式,授权个人、开发者和企业来构思、构建和寻找创新、可信和有益的应用和服务。”开发人员需要将 Solid 集成进他们的应用程序和网站…
6 个托管 git 仓库的地方
GitHub 被收购导致一些用户去寻找这个流行的代码仓库的替代品。这里有一些你可以考虑一下。Media
via https://linux.cn/article-10153-1.html
GitHub 被收购导致一些用户去寻找这个流行的代码仓库的替代品。这里有一些你可以考虑一下。Media
via https://linux.cn/article-10153-1.html
6 个托管 git 仓库的地方
GitHub 被收购导致一些用户去寻找这个流行的代码仓库的替代品。这里有一些你可以考虑一下。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/143554rszbl3h7iahqcm73.jpg">Media</a>也许你是少数一些没有注意到的人之一,就在之前,<a href="https://www.theverge.com/2018/6/4/17422788/microsoft-github-acquisition-official-deal">微软收购了 GitHub</a>。两家公司达成了共识。微软在近些年已经变成了开源的有力支持者,而 GitHub 从成立起,就已经成为了大量的开源项目的实际代码库。然而,最近发生的这次收购可能会带给你一些苦恼。毕竟公司的收购让你意识到了你的开源代码放在了一个商业平台上。可能你现在还没准备好迁移到其他的平台上去,但是至少这可以给你提供一些可选项。让我们找找网上现在都有哪些可用的平台。选择之一: GitHub严格来说,这是一个合格的选项。<a href="https://github.com/">GitHub</a> 历史上没有什么失信的地方,而且微软后来也一直笑对开源。把你的项目继续放在 GitHub 上,保持观望没有什么不可以。它现在依然是最大的软件开发的网络社区,同时还有许多对于问题追踪、代码审查、持续集成、通用的代码管理等很有用的工具。而且它还是基于 Git 的,这是每个人都喜欢的开源版本控制系统。你的代码还是你的代码。如果没有出现什么问题,那保持原状是没错的。选择之二: GitLab<a href="https://gitlab.com">GitLab</a> 是考虑替代代码库平台时的主要竞争者。它是完全开源…
GitHub 被收购导致一些用户去寻找这个流行的代码仓库的替代品。这里有一些你可以考虑一下。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/143554rszbl3h7iahqcm73.jpg">Media</a>也许你是少数一些没有注意到的人之一,就在之前,<a href="https://www.theverge.com/2018/6/4/17422788/microsoft-github-acquisition-official-deal">微软收购了 GitHub</a>。两家公司达成了共识。微软在近些年已经变成了开源的有力支持者,而 GitHub 从成立起,就已经成为了大量的开源项目的实际代码库。然而,最近发生的这次收购可能会带给你一些苦恼。毕竟公司的收购让你意识到了你的开源代码放在了一个商业平台上。可能你现在还没准备好迁移到其他的平台上去,但是至少这可以给你提供一些可选项。让我们找找网上现在都有哪些可用的平台。选择之一: GitHub严格来说,这是一个合格的选项。<a href="https://github.com/">GitHub</a> 历史上没有什么失信的地方,而且微软后来也一直笑对开源。把你的项目继续放在 GitHub 上,保持观望没有什么不可以。它现在依然是最大的软件开发的网络社区,同时还有许多对于问题追踪、代码审查、持续集成、通用的代码管理等很有用的工具。而且它还是基于 Git 的,这是每个人都喜欢的开源版本控制系统。你的代码还是你的代码。如果没有出现什么问题,那保持原状是没错的。选择之二: GitLab<a href="https://gitlab.com">GitLab</a> 是考虑替代代码库平台时的主要竞争者。它是完全开源…
如何使用 Apache Web 服务器配置多个站点
如何在流行而强大的 Apache Web 服务器上托管两个或多个站点。Media
via https://linux.cn/article-10154-1.html
如何在流行而强大的 Apache Web 服务器上托管两个或多个站点。Media
via https://linux.cn/article-10154-1.html
如何使用 Apache Web 服务器配置多个站点
如何在流行而强大的 Apache Web 服务器上托管两个或多个站点。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/153824lkmrkizcwr47w9oc.jpg">Media</a>在我的<a href="https://linux.cn/article-9506-1.html">上一篇文章</a>中,我解释了如何为单个站点配置 Apache Web 服务器,事实证明这很容易。在这篇文章中,我将向你展示如何使用单个 Apache 实例来服务多个站点。注意:我写这篇文章的环境是 Fedora 27 虚拟机,配置了 Apache 2.4.29。如果你用另一个发行版或不同的 Fedora 版本,那么你使用的命令以及配置文件的位置和内容可能会有所不同。正如我之前的文章中提到的,Apache 的所有配置文件都位于 /etc/httpd/conf 和 /etc/httpd/conf.d。默认情况下,站点的数据位于 /var/www 中。对于多个站点,你需要提供多个位置,每个位置对应托管的站点。基于名称的虚拟主机使用基于名称的虚拟主机,你可以为多个站点使用一个 IP 地址。现代 Web 服务器,包括 Apache,使用指定 URL 的 hostname 部分来确定哪个虚拟 Web 主机响应页面请求。这仅仅需要比一个站点更多的配置。即使你只从单个站点开始,我也建议你将其设置为虚拟主机,这样可以在以后更轻松地添加更多站点。在本文中,我将从上一篇文章中我们停止的地方开始,因此你需要设置原来的站点,即基于名称的虚拟站点。准备原来的站点在设置第二个站点之前,你需要为现有网站提供基于名称的虚拟主机。如果你现在没有站点,<a…
如何在流行而强大的 Apache Web 服务器上托管两个或多个站点。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/153824lkmrkizcwr47w9oc.jpg">Media</a>在我的<a href="https://linux.cn/article-9506-1.html">上一篇文章</a>中,我解释了如何为单个站点配置 Apache Web 服务器,事实证明这很容易。在这篇文章中,我将向你展示如何使用单个 Apache 实例来服务多个站点。注意:我写这篇文章的环境是 Fedora 27 虚拟机,配置了 Apache 2.4.29。如果你用另一个发行版或不同的 Fedora 版本,那么你使用的命令以及配置文件的位置和内容可能会有所不同。正如我之前的文章中提到的,Apache 的所有配置文件都位于 /etc/httpd/conf 和 /etc/httpd/conf.d。默认情况下,站点的数据位于 /var/www 中。对于多个站点,你需要提供多个位置,每个位置对应托管的站点。基于名称的虚拟主机使用基于名称的虚拟主机,你可以为多个站点使用一个 IP 地址。现代 Web 服务器,包括 Apache,使用指定 URL 的 hostname 部分来确定哪个虚拟 Web 主机响应页面请求。这仅仅需要比一个站点更多的配置。即使你只从单个站点开始,我也建议你将其设置为虚拟主机,这样可以在以后更轻松地添加更多站点。在本文中,我将从上一篇文章中我们停止的地方开始,因此你需要设置原来的站点,即基于名称的虚拟站点。准备原来的站点在设置第二个站点之前,你需要为现有网站提供基于名称的虚拟主机。如果你现在没有站点,<a…
用 GNOME Boxes 下载一个操作系统镜像
最近 Boxes 添加了一个新的特性,使得它在运行不同的 Linux 发行版时更加容易。Media
via https://linux.cn/article-10155-1.html
最近 Boxes 添加了一个新的特性,使得它在运行不同的 Linux 发行版时更加容易。Media
via https://linux.cn/article-10155-1.html
用 GNOME Boxes 下载一个操作系统镜像
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164805hworcwv1opopf1fo.jpg">Media</a>Boxes 是 GNOME 上的虚拟机应用。最近 Boxes 添加了一个新的特性,使得它在运行不同的 Linux 发行版时更加容易。你现在可以在 Boxes 中自动安装那些发行版以及像 FreeBSD 和 FreeDOS 这样的操作系统,甚至还包括红帽企业 Linux。红帽开发者计划包括了一个<a href="https://developers.redhat.com/blog/2016/03/31/no-cost-rhel-developer-subscription-now-available/">红帽企业版 Linux 的免费订阅</a>。 使用<a href="http://developers.redhat.com">红帽开发者</a>帐户,Boxes 可以自动设置一个名为 Developer Suite 订阅的 RHEL 虚拟机。 下面是它的工作原理。红帽企业版 Linux要创建一个红帽企业版 Linux 的虚拟机,启动 Boxes,点击“新建”。从源选择列表中选择“下载一个镜像”。在顶部,点击“红帽企业版 Linux”。这将会打开网址为 <a href="http://developers.redhat.com">developers.redhat.com</a> 的一个 Web 表单。使用已有的红帽开发者账号登录,或是新建一个。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164806ax9crr1tk2209tx9.png">Media</a>如果这是一个新帐号,Boxes 在继续之前需要一些额外的信息。这一步需要在账户中开启开发者订阅。还要确保 <a href="https://www.redhat.com/wapps/tnc/termsack?event%5B%5D=signIn">接受条款和条件</a>,这样可以在之后的注册中节省一步。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164807e0jqboi4m85bge5s.png">Media</a>点击“提交”,然后就会开始下载安装磁盘镜像。下载需要的时间取决于你的网络状况。在这期间你可以去喝杯茶或者咖啡歇息一下。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164807qmbqbvt4cbkdsv44.png">Media</a>等介质下载完成(一般位于 <code>~/Downloads</code> ),Boxes 会有一个“快速…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164805hworcwv1opopf1fo.jpg">Media</a>Boxes 是 GNOME 上的虚拟机应用。最近 Boxes 添加了一个新的特性,使得它在运行不同的 Linux 发行版时更加容易。你现在可以在 Boxes 中自动安装那些发行版以及像 FreeBSD 和 FreeDOS 这样的操作系统,甚至还包括红帽企业 Linux。红帽开发者计划包括了一个<a href="https://developers.redhat.com/blog/2016/03/31/no-cost-rhel-developer-subscription-now-available/">红帽企业版 Linux 的免费订阅</a>。 使用<a href="http://developers.redhat.com">红帽开发者</a>帐户,Boxes 可以自动设置一个名为 Developer Suite 订阅的 RHEL 虚拟机。 下面是它的工作原理。红帽企业版 Linux要创建一个红帽企业版 Linux 的虚拟机,启动 Boxes,点击“新建”。从源选择列表中选择“下载一个镜像”。在顶部,点击“红帽企业版 Linux”。这将会打开网址为 <a href="http://developers.redhat.com">developers.redhat.com</a> 的一个 Web 表单。使用已有的红帽开发者账号登录,或是新建一个。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164806ax9crr1tk2209tx9.png">Media</a>如果这是一个新帐号,Boxes 在继续之前需要一些额外的信息。这一步需要在账户中开启开发者订阅。还要确保 <a href="https://www.redhat.com/wapps/tnc/termsack?event%5B%5D=signIn">接受条款和条件</a>,这样可以在之后的注册中节省一步。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164807e0jqboi4m85bge5s.png">Media</a>点击“提交”,然后就会开始下载安装磁盘镜像。下载需要的时间取决于你的网络状况。在这期间你可以去喝杯茶或者咖啡歇息一下。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164807qmbqbvt4cbkdsv44.png">Media</a>等介质下载完成(一般位于 <code>~/Downloads</code> ),Boxes 会有一个“快速…
使用 Podman 以非 root 用户身份运行 Linux 容器
但即使 Docker 是管理 Linux 容器的一个非常方便的工具,它也有两个缺点:它是一个需要在你的系统上运行的守护进程,并且需要以 root 权限运行,这可能有一定的安全隐患。Media
via https://linux.cn/article-10156-1.html
但即使 Docker 是管理 Linux 容器的一个非常方便的工具,它也有两个缺点:它是一个需要在你的系统上运行的守护进程,并且需要以 root 权限运行,这可能有一定的安全隐患。Media
via https://linux.cn/article-10156-1.html
使用 Podman 以非 root 用户身份运行 Linux 容器
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/082845qyjxxcmccjjm6cn0.jpg">Media</a>Linux 容器是由 Linux 内核所提供的具有特定隔离功能的进程 —— 包括文件系统、进程和网络的隔离。容器有助于实现可移植性 —— 应用可以在容器镜像中与其依赖项一起分发,并可在几乎任何有容器运行时环境的 Linux 系统上运行。虽然容器技术存在了很长时间,但 Linux 容器是由 Docker 而得到了广泛推广。 “Docker” 这个词可以指几个不同的东西,包括容器技术和工具,周围的社区,或者 Docker Inc. 公司。但是,在本文中,我将用来指管理 Linux 容器的技术和工具。什么是 Docker<a href="https://docs.docker.com/">Docker</a> 是一个以 root 身份在你的系统上运行的守护程序,它利用 Linux 内核的功能来管理正在运行的容器。除了运行容器之外,它还可以轻松管理容器镜像 —— 与容器注册库交互、存储映像、管理容器版本等。它基本上支持运行单个容器所需的所有操作。但即使 Docker 是管理 Linux 容器的一个非常方便的工具,它也有两个缺点:它是一个需要在你的系统上运行的守护进程,并且需要以 root 权限运行,这可能有一定的安全隐患。然而,Podman 在解决这两个问题。Podman 介绍<a href="https://podman.io/">Podman</a> 是一个容器运行时环境,提供与 Docker 非常相似的功能。正如已经提示的那样,它不需要在你的系统上运行任何守护进程,并且它也可以在没有 root 权限的情况下运行。让我们看看使用 Podman 运行…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/082845qyjxxcmccjjm6cn0.jpg">Media</a>Linux 容器是由 Linux 内核所提供的具有特定隔离功能的进程 —— 包括文件系统、进程和网络的隔离。容器有助于实现可移植性 —— 应用可以在容器镜像中与其依赖项一起分发,并可在几乎任何有容器运行时环境的 Linux 系统上运行。虽然容器技术存在了很长时间,但 Linux 容器是由 Docker 而得到了广泛推广。 “Docker” 这个词可以指几个不同的东西,包括容器技术和工具,周围的社区,或者 Docker Inc. 公司。但是,在本文中,我将用来指管理 Linux 容器的技术和工具。什么是 Docker<a href="https://docs.docker.com/">Docker</a> 是一个以 root 身份在你的系统上运行的守护程序,它利用 Linux 内核的功能来管理正在运行的容器。除了运行容器之外,它还可以轻松管理容器镜像 —— 与容器注册库交互、存储映像、管理容器版本等。它基本上支持运行单个容器所需的所有操作。但即使 Docker 是管理 Linux 容器的一个非常方便的工具,它也有两个缺点:它是一个需要在你的系统上运行的守护进程,并且需要以 root 权限运行,这可能有一定的安全隐患。然而,Podman 在解决这两个问题。Podman 介绍<a href="https://podman.io/">Podman</a> 是一个容器运行时环境,提供与 Docker 非常相似的功能。正如已经提示的那样,它不需要在你的系统上运行任何守护进程,并且它也可以在没有 root 权限的情况下运行。让我们看看使用 Podman 运行…
为什么 Linux 用户应该试一试 Rust
在 Linux 系统上安装 Rust 编程语言可能是你近年来所做的最有价值的事情之一。Media
via https://linux.cn/article-10157-1.html
在 Linux 系统上安装 Rust 编程语言可能是你近年来所做的最有价值的事情之一。Media
via https://linux.cn/article-10157-1.html
为什么 Linux 用户应该试一试 Rust
在 Linux 系统上安装 Rust 编程语言可能是你近年来所做的最有价值的事情之一。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/090805l94nk97sz87e1yld.jpg">Media</a>Rust 是一种相当年轻和现代的编程语言,具有许多使其非常灵活而及其安全的功能。数据显示它正在变得非常受欢迎,连续三年(<a href="https://insights.stackoverflow.com/survey/2016#technology-most-loved-dreaded-and-wanted">2016</a>、<a href="https://insights.stackoverflow.com/survey/2017#technology-most-loved-dreaded-and-wanted-languages">2017</a> 和 <a href="https://insights.stackoverflow.com/survey/2018#technology-most-loved-dreaded-and-wanted-languages">2018</a>)在 Stack Overflow 开发者调查中获得“最受喜爱的编程语言”的第一名。Rust 也是开源语言的一种,它具有一系列特殊的功能,使得它可以适应许多不同的编程项目。 它最初源于 2006 年 Mozilla 员工的个人项目,几年后(2009 年)被 Mozilla 选为特别项目,然后在 2010 年宣布供公众使用。Rust 程序运行速度极快,可防止段错误,并能保证线程安全。这些属性使该语言极大地吸引了专注于应用程序安全性的开发人员。Rust 也是一种非常易读的语言,可用于从简单程序到非常大而复杂的项目。Rust 优点:内存安全 —— Rust 不会受到悬空指针、缓冲区溢出或其他与内存相关的错误的影响。它提供内存安全,无回收垃圾。通用 —— Rust 是适用于任何类型编程的语言快速 —— Rust 在性能上与 C / C++ 相当,但具有更好的安全功能。高效 —— Rust 是为了便于并发编程而构建的。面向项目 —— Rust 具有内置的依赖关系和构建管理系统 Cargo。得到很好的支持 —— Rust 有一个令人印#…
在 Linux 系统上安装 Rust 编程语言可能是你近年来所做的最有价值的事情之一。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/090805l94nk97sz87e1yld.jpg">Media</a>Rust 是一种相当年轻和现代的编程语言,具有许多使其非常灵活而及其安全的功能。数据显示它正在变得非常受欢迎,连续三年(<a href="https://insights.stackoverflow.com/survey/2016#technology-most-loved-dreaded-and-wanted">2016</a>、<a href="https://insights.stackoverflow.com/survey/2017#technology-most-loved-dreaded-and-wanted-languages">2017</a> 和 <a href="https://insights.stackoverflow.com/survey/2018#technology-most-loved-dreaded-and-wanted-languages">2018</a>)在 Stack Overflow 开发者调查中获得“最受喜爱的编程语言”的第一名。Rust 也是开源语言的一种,它具有一系列特殊的功能,使得它可以适应许多不同的编程项目。 它最初源于 2006 年 Mozilla 员工的个人项目,几年后(2009 年)被 Mozilla 选为特别项目,然后在 2010 年宣布供公众使用。Rust 程序运行速度极快,可防止段错误,并能保证线程安全。这些属性使该语言极大地吸引了专注于应用程序安全性的开发人员。Rust 也是一种非常易读的语言,可用于从简单程序到非常大而复杂的项目。Rust 优点:内存安全 —— Rust 不会受到悬空指针、缓冲区溢出或其他与内存相关的错误的影响。它提供内存安全,无回收垃圾。通用 —— Rust 是适用于任何类型编程的语言快速 —— Rust 在性能上与 C / C++ 相当,但具有更好的安全功能。高效 —— Rust 是为了便于并发编程而构建的。面向项目 —— Rust 具有内置的依赖关系和构建管理系统 Cargo。得到很好的支持 —— Rust 有一个令人印#…
使用 Lakka Linux 将你的旧 PC 变成复古游戏主机
如果你有一台吃灰的旧计算机,你可以用 Lakka Linux 将它变成像 PlayStation 那样的复古游戏主机。Media
via https://linux.cn/article-10158-1.html
如果你有一台吃灰的旧计算机,你可以用 Lakka Linux 将它变成像 PlayStation 那样的复古游戏主机。Media
via https://linux.cn/article-10158-1.html
使用 Lakka Linux 将你的旧 PC 变成复古游戏主机
如果你有一台吃灰的旧计算机,你可以用 Lakka Linux 将它变成像 PlayStation 那样的复古游戏主机。你可能已经了解<a href="https://itsfoss.com/lightweight-linux-beginners/">专门用于复活旧计算机的 Linux 发行版</a>。但是你知道有个 Linux 发行版专门是为了将旧电脑变成复古游戏主机创建的么?<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/095819b5enoa7zo8hwwhw7.jpg">Lakka is a Linux distribution specially for retrogaming</a>认识下 <a href="http://www.lakka.tv/">Lakka</a>,它是一个轻量级 Linux 发行版,可以将旧的或低端的计算机(如 Raspberry Pi)变成一个完整的复古游戏主机,当我说复古游戏主机时,我对主机部分很认真。如果你曾经使用过 Xbox 和 PlayStation,你就会知道典型的主机界面是什么样的。Lakka 提供类似的界面和类似的体验。我稍后会谈到“体验”。先看一下界面。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/095625eagrgrffrug44vfw.gif">Media</a><em>Lakka 复古游戏界面</em>Lakka:为复古游戏而生的 Linux 发行版Lakka 是 <a href="https://www.retroarch.com/">RetroArch</a> 和 <a href="https://www.libretro.com/">Libretro</a> 生态系统的官方 Linux 发行版。RetroArch 是复古游戏模拟器和游戏引擎的前端。你在上面的视频中看到的界面只是 RetroArch。如果你是只想玩复古游戏,只需在当前的 Linux 发行版中安装 RetroArch 即可。Lakka 提供了带有 Libretro 核心的 RetroArch。因此,你会获得一个预先配置完的操作系统,你可以安装或插入 live USB 并开始玩游戏。Lakka 是轻量级的,你可以将它安装在大多数老系统或单板计算机上,如 Raspberry Pi 上。它支持大量的模拟器。你只需要在系统上下载 ROM,Lakka…
如果你有一台吃灰的旧计算机,你可以用 Lakka Linux 将它变成像 PlayStation 那样的复古游戏主机。你可能已经了解<a href="https://itsfoss.com/lightweight-linux-beginners/">专门用于复活旧计算机的 Linux 发行版</a>。但是你知道有个 Linux 发行版专门是为了将旧电脑变成复古游戏主机创建的么?<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/095819b5enoa7zo8hwwhw7.jpg">Lakka is a Linux distribution specially for retrogaming</a>认识下 <a href="http://www.lakka.tv/">Lakka</a>,它是一个轻量级 Linux 发行版,可以将旧的或低端的计算机(如 Raspberry Pi)变成一个完整的复古游戏主机,当我说复古游戏主机时,我对主机部分很认真。如果你曾经使用过 Xbox 和 PlayStation,你就会知道典型的主机界面是什么样的。Lakka 提供类似的界面和类似的体验。我稍后会谈到“体验”。先看一下界面。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/095625eagrgrffrug44vfw.gif">Media</a><em>Lakka 复古游戏界面</em>Lakka:为复古游戏而生的 Linux 发行版Lakka 是 <a href="https://www.retroarch.com/">RetroArch</a> 和 <a href="https://www.libretro.com/">Libretro</a> 生态系统的官方 Linux 发行版。RetroArch 是复古游戏模拟器和游戏引擎的前端。你在上面的视频中看到的界面只是 RetroArch。如果你是只想玩复古游戏,只需在当前的 Linux 发行版中安装 RetroArch 即可。Lakka 提供了带有 Libretro 核心的 RetroArch。因此,你会获得一个预先配置完的操作系统,你可以安装或插入 live USB 并开始玩游戏。Lakka 是轻量级的,你可以将它安装在大多数老系统或单板计算机上,如 Raspberry Pi 上。它支持大量的模拟器。你只需要在系统上下载 ROM,Lakka…
使用 Argbash 来改进你的 Bash 脚本
Argbash 是一个代码生成器,它为你的脚本生成一个量身定制的解析库。与其他 bash 模块的通用代码不同,它生成你的脚本所需的最少代码。Media
via https://linux.cn/article-10159-1.html
Argbash 是一个代码生成器,它为你的脚本生成一个量身定制的解析库。与其他 bash 模块的通用代码不同,它生成你的脚本所需的最少代码。Media
via https://linux.cn/article-10159-1.html
使用 Argbash 来改进你的 Bash 脚本
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/27/092854nrvazffgzfnqaxfw.png">Media</a>你编写或维护过有意义的 bash 脚本吗?如果回答是,那么你可能希望它们以标准且健壮的方式接收命令行参数。Fedora 最近得到了<a href="https://argbash.readthedocs.io/">一个很好的附加组件</a>,它可以帮助你生成更好的脚本。不用担心,它不会花费你很多时间或精力。为什么需要 Argbash?Bash 是一种解释性的命令行语言,没有标准库。因此,如果你编写 bash 脚本并希望命令行界面符合 <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html">POSIX</a> 和 <a href="https://www.gnu.org/prep/standards/html_node/Command_002dLine-Interfaces.html">GNU CLI</a> 标准,那么你一般只有两种选择:直接编写为脚本量身定制的参数解析功能(可使用内置的 getopts)。使用外部 bash 模块。第一个选项看起来非常愚蠢,因为正确实现接口并非易事。但是,从 <a href="https://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash">Stack Overflow</a> 到 <a href="http://wiki.bash-hackers.org/howto/getopts_tutorial">Bash Hackers</a> wiki 的各种站点上,它却被认为是最佳选择。第二个选项看起来更聪明,但使用模块有它自己的问题。最大的问题是你必须将其代码与脚本捆绑在一起。这可能意味着:要么,你将库作为单独的文件分发或者,在脚本的开头包含库代码有两个文件而不是一个是愚蠢的;但采用一个文件的话,会让一堆上千行的复杂代码污染了你的脚本。这是 Argbash <a href="https://argbash.readthedocs.io/">项目诞生</a>的主要原因。Argbash 是一个代码生成器,它为你的脚本生成一个量身定制的解析库。…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/27/092854nrvazffgzfnqaxfw.png">Media</a>你编写或维护过有意义的 bash 脚本吗?如果回答是,那么你可能希望它们以标准且健壮的方式接收命令行参数。Fedora 最近得到了<a href="https://argbash.readthedocs.io/">一个很好的附加组件</a>,它可以帮助你生成更好的脚本。不用担心,它不会花费你很多时间或精力。为什么需要 Argbash?Bash 是一种解释性的命令行语言,没有标准库。因此,如果你编写 bash 脚本并希望命令行界面符合 <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html">POSIX</a> 和 <a href="https://www.gnu.org/prep/standards/html_node/Command_002dLine-Interfaces.html">GNU CLI</a> 标准,那么你一般只有两种选择:直接编写为脚本量身定制的参数解析功能(可使用内置的 getopts)。使用外部 bash 模块。第一个选项看起来非常愚蠢,因为正确实现接口并非易事。但是,从 <a href="https://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash">Stack Overflow</a> 到 <a href="http://wiki.bash-hackers.org/howto/getopts_tutorial">Bash Hackers</a> wiki 的各种站点上,它却被认为是最佳选择。第二个选项看起来更聪明,但使用模块有它自己的问题。最大的问题是你必须将其代码与脚本捆绑在一起。这可能意味着:要么,你将库作为单独的文件分发或者,在脚本的开头包含库代码有两个文件而不是一个是愚蠢的;但采用一个文件的话,会让一堆上千行的复杂代码污染了你的脚本。这是 Argbash <a href="https://argbash.readthedocs.io/">项目诞生</a>的主要原因。Argbash 是一个代码生成器,它为你的脚本生成一个量身定制的解析库。…
一窥你安装的 Linux 软件包
这些最有用的命令可以让你了解安装在你的 Debian 类的 Linux 系统上的包的情况。Media
via https://linux.cn/article-10160-1.html
这些最有用的命令可以让你了解安装在你的 Debian 类的 Linux 系统上的包的情况。Media
via https://linux.cn/article-10160-1.html
一窥你安装的 Linux 软件包
这些最有用的命令可以让你了解安装在你的 Debian 类的 Linux 系统上的包的情况。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/27/095619ks5en1rsgvguoojs.jpg">Media</a>你有没有想过你的 Linux 系统上安装了几千个软件包? 是的,我说的是“千”。 即使是相当一般的 Linux 系统也可能安装了上千个软件包。 有很多方法可以获得这些包到底是什么包的详细信息。首先,要在基于 Debian 的发行版(如 Ubuntu)上快速得到已安装的软件包数量,请使用 apt list --installed, 如下:<pre class="prettyprint linenums">$ apt list --installed | wc -l2067</pre>这个数字实际上多了一个,因为输出中包含了 “Listing …” 作为它的第一行。 这个命令会更准确:<pre class="prettyprint linenums">$ apt list --installed | grep -v "^Listing" | wc -l2066</pre>要获得所有这些包的详细信息,请按以下方式浏览列表:<pre class="prettyprint linenums">$ apt list --installed | moreListing...a11y-profile-manager-indicator/xenial,now 0.1.10-0ubuntu3 amd64 [installed]account-plugin-aim/xenial,now 3.12.11-0ubuntu3 amd64 [installed]account-plugin-facebook/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-flickr/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-google/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-jabber/xenial,now 3.12.11-0ubuntu3 amd64 [installed]account-plugin-salut/xenial,now 3.12.11-0ubuntu3 amd64 [installed]</pre>这需要观察很多细节 —— 特别是让你的眼睛在所有 2000 多个文件中徘徊。 它包含包名称、版本等,以及更多但并不是以最易于我们人类解析的显示信息。 dpkg-query 使得描述更容易理解,但这些描述会塞满你的命令窗口,除非窗口非常宽。 因此,为了让此篇文章更容易阅读,下面的数据显示已经分成了左右两侧。左侧:<pre class="prettyprint linenums">$ dpkg-query -l | moreDesired=Unknown/Install/Remove/Purge/Hold| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)||/…
这些最有用的命令可以让你了解安装在你的 Debian 类的 Linux 系统上的包的情况。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/27/095619ks5en1rsgvguoojs.jpg">Media</a>你有没有想过你的 Linux 系统上安装了几千个软件包? 是的,我说的是“千”。 即使是相当一般的 Linux 系统也可能安装了上千个软件包。 有很多方法可以获得这些包到底是什么包的详细信息。首先,要在基于 Debian 的发行版(如 Ubuntu)上快速得到已安装的软件包数量,请使用 apt list --installed, 如下:<pre class="prettyprint linenums">$ apt list --installed | wc -l2067</pre>这个数字实际上多了一个,因为输出中包含了 “Listing …” 作为它的第一行。 这个命令会更准确:<pre class="prettyprint linenums">$ apt list --installed | grep -v "^Listing" | wc -l2066</pre>要获得所有这些包的详细信息,请按以下方式浏览列表:<pre class="prettyprint linenums">$ apt list --installed | moreListing...a11y-profile-manager-indicator/xenial,now 0.1.10-0ubuntu3 amd64 [installed]account-plugin-aim/xenial,now 3.12.11-0ubuntu3 amd64 [installed]account-plugin-facebook/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-flickr/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-google/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-jabber/xenial,now 3.12.11-0ubuntu3 amd64 [installed]account-plugin-salut/xenial,now 3.12.11-0ubuntu3 amd64 [installed]</pre>这需要观察很多细节 —— 特别是让你的眼睛在所有 2000 多个文件中徘徊。 它包含包名称、版本等,以及更多但并不是以最易于我们人类解析的显示信息。 dpkg-query 使得描述更容易理解,但这些描述会塞满你的命令窗口,除非窗口非常宽。 因此,为了让此篇文章更容易阅读,下面的数据显示已经分成了左右两侧。左侧:<pre class="prettyprint linenums">$ dpkg-query -l | moreDesired=Unknown/Install/Remove/Purge/Hold| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)||/…