标签 镜像 下的文章

如果你的手机有一个解锁的 bootloader 的话,你可以用 fastboot 命令来刷入原厂镜像。听起来这好像是外行弄不懂的东西,但是当你需要升级被 root 过的设备,修理坏掉的手机,恢复到原生系统,或者是比别人更早的享受 Android 更新时,它可是最好的办法。

ADB 类似,fastboot 是一个强大的 Android 命令行工具。这听起来可能会很恐怖 —— 别担心,一旦你了解了它,你就会知道 Android 的内部工作原理,以及如何解决最常见的问题。

关于三星设备的注释

下面的指南对于 Nexus、Pixel、HTC 以及 Motorola 的大多数设备,以及其他众多厂商的手机和平板电脑都适用。但是,三星的设备有自己的刷机软件,所以你的 Galaxy 设备并不支持 Fastboot。对于三星的设备,最好使用 Odin 来进行刷机工作,我们在下文的链接中提供了相关指南。

第一步 在你的电脑上安装 ADB 和 Fastboot

首先,你需要在你的电脑上安装 ADB 和 Fastboot,只有有了它们你才能使用 Fastboot 命令刷入镜像。网上有不少“一键安装版”或者“绿色版”的 ADB 和 Fastboot,但是我不建议安装这样的版本,它们没有官方版本更新那么快,所以可能不会完全兼容新版设备。

你最好从 Google 上安装 Android SDK Tools。这才是“真正的” ADB 和 Fastboot。安装 SDK Tools 可能需要一点时间,不过这等待是值得的。在下面的 方法 1 中,我会说明在 Windows, Mac,以及 Linux 中安装这个软件的方法,所以可以跳转到那里开始。

第二步 OEM 解锁 OEM Unlocking

为了能够使用 Fastboot 刷入镜像,你需要解锁你设备的 bootloader。如果你已经解锁,你可以跳过这步到第三步。

如果你的设备的 Android 版本在 6.0 及以上的话,在你解锁 bootloader 之前,你还需要开启一项设置。首先你需要开启 开发者选项 Developers Options 。开启之后,进入“开发者选项菜单”,然后开启 “OEM 解锁” 选项。之后就可以进行下一步了。

如果你的设备没有这个选项,那么你的设备的 Android 版本可能不是 6.0 或以上。如果这个选项存在但是是灰色的,这就意味着你的 bootloader 不能解锁,也就是说你不能使用 Fastboot 给你的手机刷入镜像。

第三步 进入 Bootloader 模式

在使用 Fastboot 软件之前,你还需要让你的设备进入 bootloader 模式。具体进入方式与你的设备有关。

对于大多数手机,你需要先完全关闭你的手机。在屏幕黑掉以后,同时按住开机键和音量向下键大约 10 秒。

如果这不起效的话,关掉手机,按住音量降低键。然后把手机用 USB 数据线连到电脑上,等上几秒钟。

如果还不起效的话,改按音量升高键,再试试第二种方法。

很快你就会看见像这样的 bootloader 界面:

看到这个界面之后,确保你的设备已经连接到电脑上。之后的工作就都是在电脑上完成了,把手机放在那里就成。

第四步 在你的电脑上为 ADB 打开一个命令行窗口

转到 ADB 和 Fastboot 的安装目录。对于 Windows 用户来说,这目录通常是 C:\Program Files (x86)\Android\android-sdk\platform-tools。 对于 Mac 和 Linux 用户,则取决于你安装此工具时将 ADB 解压的位置,所以如果你忘了位置的话,就在硬盘里搜索 platform-tools

在安装目录下,如果你使用 Windows PC 的话,按住键盘上的 Shift 键,在文件管理器的空白处单击右键,然后选择“在此处开启命令行窗口”。如果你用的是 Mac 或者 Linux,那么你仅仅需要打开一个终端,然后转到 platform-tools 下。

第五步 解锁 bootloader

这一步你仅仅需要做一次,所以如果你的 bootloader 已经解锁,你可以直接跳过这步。否则你还需要运行一条命令 —— 注意,这条命令会清空你设备上的所有数据

在输入命令之前,我需要说明下,下面的命令仅仅对 Windows 适用,Mac 用户需要在每条命令前加上一个句号和一个斜线(./),Linux 用户则需要加上一个斜线(/)。

所以,在 ADB Shell 里输入如下命令,然后按下回车键。

fastboot devices

如果程序输出了以 fastboot 结尾的一串字符,那就说明你的设备连接正常,可以继续操作。如果没有的话,回到第一步,检查你的 ADB 以及 Fastooot,是否正确安装,之后再确定设备是否如第三步所示进入了 bootloader 模式。

之后,解锁你的 bootloader。因为 Android 版本的差别,我们有两种方法来解决这个问题。

如果你的设备的 Android 版本是 5.0 或者更低版本 ,输入如下命令:

fastboot oem unlock

如果你的 Android 版本是 6.0 或更高的话,输入如下命令,然后按下回车:

fastboot flashing unlock

将解锁命令发送到 6.0 或者更高版本的 Android 手机上

这时,你的 Android 手机会问你是否确定要解锁 bootloader。确定你选中了 “Yes” 的选项,如果没有,使用音量键选中 “Yes”。然后按下电源键,你的设备将会开始解锁,之后会重启到 Fastboot 模式。

Nexus 6P 上的解锁菜单。图像来自 Dallas Thomas/Gadget Hacks

第六步 下载出厂镜像

现在你的 bootloader 已经解锁,准备好刷入出厂镜像了 -- 不过,你需要先下载镜像。下面是常规设备下载出厂镜像的链接。

使用上面的链接,在列表中定位你的设备型号,然后下载最新固件到计算机上。如果你的厂商不在列表中,可以试着用 “factory images for ” 进行 google 搜索。

第七步 刷入出厂镜像

现在该刷入镜像了。首先将从厂商网站下载的出厂镜像文件解压。我推荐 7-Zip ,它是免费的,支持大多数格式。

解压出厂镜像

下一步,把压缩包中内容移动到你的 ADB 安装文件夹。之后在这里打开一个命令行窗口。要得到更多信息,请回看第四步。

出厂镜像移动到 platform-tools 的文件

除了上面这些,你有两种刷入镜像的方法。我会在下文分开叙述。

方法一:使用 flash-all 脚本

大多数出厂镜像都会包含一个flash-all 脚本,可以让你一条命令就完成刷机过程。如果你试图让你的黑砖恢复正常的话,这是最简单的方法。但是这会让你的手机回到未 root 的状态,并会擦除所有数据,如果你不想这样的话,请选择方法二。

如果要运行 flash-all 脚本,输入如下命令,之后敲下回车:

flash-all

运行 "flash-all" 命令

这需要一点时间,当这步完成之后,你的手机应当自动重启,你可以享受 100% 原生固件。

方法二 手动解压刷入镜像

你可以手动刷入系统镜像。这么做需要额外的工作,但是它可以在不清除数据的情况下反 root,升级设备,或者救回你的砖机。

首先解压出厂镜像包中的所有压缩文件。通常压缩包里会包含三或四个层叠的文件夹,确认你已经解压了所有的压缩文件。之后把这些文件移动到 platform-tools —— 或者说,别把他们放到任何子文件夹下。

从出厂镜像包解压后的所有文件移至 platform-tools 目录

在这些文件里,有两个镜像是可以直接删除的:cache.imguserdata.img。就是这两个文件清除了你的设备数据,如果你不刷入这两个镜像,你的数据就不会消失。

在剩下的文件中,有六个镜像构成了 Android 的核心部分: bootbootloaderradiorecoverysystemvendor

boot 镜像包含了内核,如果你想要换掉一个不太好用的自制内核的话,你仅仅需要刷入这个文件。通过键入如下命令完成工作:

fastboot flash boot <boot image file name>.img

下一个就是 bootloader 镜像—— 也就是你用来刷入镜像的界面。如果你要升级 bootloader 的话,输入如下命令:

fastboot flash bootloader <bootloader image file name>.img

做完这步之后,你就可以用新版的 bootloader 刷入镜像。要想如此,输入:

fastboot reboot-bootloader

之后就是 radio 镜像。这个镜像控制你设备的网络连接,如果你手机的 Wi-Fi 或者移动数据出现了毛病,或者你仅仅想升级你的 radio,输入:

fastboot flash radio <radio image file name>.img

然后就是 recovery。根据你之前的修改,你可能选择刷或不刷这个镜像。例如,如果你已经刷入 TWRP 的话,刷入这个镜像覆盖你的修改,并替代为 stock recovery。如果你仅仅要升级你的已经被修改过的设备,你就可以跳过这步。如果你想要新版的 stock recovery ,键入:

fastboot flash recovery <recovery file name>.img

下一个可是个大家伙:system 镜像,它包含了 Android 系统所需的全部文件。它是升级过程中最重要的部分。

如果你不想升级系统,仅仅是要换回原生固件或者是救砖的话,你只需要刷入这个镜像,它包含了 Android 的所有文件。换言之,如果你仅仅刷入了这个文件,那你之前对这个设备做的修改都会被取消。

作为一个救砖的通用方法,以及升级 Android 的方法,键入:

fastboot flash system <system file name>.img

最后,就是 vendor 镜像。只有新版的设备才包含这个包。没有的话也不必担心,不过如果有这个文件的话,那它就包含了一些重要的文件,键入如下命令使其更新:

fastboot flash vendor <vendor file name>.img

在这之后,你就可以重新启动设备:

fastboot reboot

手动逐个刷入出厂镜像

至此,你的设备已经完全更新,如果你是救砖的话,你的手机应该已经完好的运行。如果你知道每个系统镜像怎么是干什么的话,你就会更好的理解 Android 是怎么运行的。

手动刷入镜像比做任何修改已经帮助我更多地理解了 Android。你会发现,Android 就是写进存储设备里的一堆镜像,现在你可以自己处理他们,你也能更好的处理有关 root 的问题。


via: http://android.wonderhowto.com/how-to/complete-guide-flashing-factory-images-using-fastboot-0175277/

作者:Dallas Thomas 译者:name1e5s 校对:jasminepeng

本文由 LCTT 组织编译,Linux中国 荣誉推出

debian-cd 项目负责人 Stephen McIntyre 今天在Debian邮件列表中对近日召开的 DebConf15 大会上的 Debian CD BoF会议进行了摘要总结。

该消息说,自即将发布的 Debian GNU/Linux 9.0 (Stretch) 版本开始,今后 Debian GNU/Linux 系统不再生成 CD 套装的 ISO 镜像,但是会依旧生成 DVD 和蓝光镜像。

 title=

当前 debian-cd 项目会生成大量的各种镜像,包括:

  • CD
  • DVD
  • 非自由的网络安装镜像(包括非自由的固件包)
  • 非自由的固件打包

debian-live 团队使用 live-build 创建的在线镜像(Live image)

  • 包括非自由的固件的镜像

openstack-debian-images 生成的 Openstack 镜像

所有这些都是在 pettersson 上构建的,这是一台托管在 umu.se 的大型中央化的 CD 构建机。

对于新的发行版和测试版本,会停止构建它的完整 CD 套装(针对 90% 以上的系统架构)。同时,也会停止构建针对不同桌面的可选的 CD1 。不过,会继续构建 DVD 和蓝光镜像,DVD#1 也可以继续用于 4GB 的 USB 存储棒。

网络安装镜像会继续构建,这个又小又方便的镜像还有很多人用。对于旧的发行版,会继续构建 CD 套装和可选的 CD1 (Wheezy 和 Jessie),这个不会半途而废。

经常有新接触 Linux 的同学问,“Linux 从哪里下载啊?”这种问题,对于熟手来说要么不屑一提,要么就引来了各种 Linux 发行版之争,让初学者无所适从。

其实,对于新接触 Linux 的人来说,很多人都不知道 “Linux” 原来不是一个!而是有林林总总上千种发行版,甚至你乐意的话,都可以制作发行自己的发行版。而各种不同的发行版也各有特色,还层出不穷的推出新版本。这简直让初学者如置身森林,茫然不知所措~

所以,这里我整理了一份最新、最热的 Linux 发行版的下载链接,可以让初学者能够快速领略到 Linux 的风采。

简单的来说,Linux 是以 Linux 内核 Kernel 为基础,集成了各种开源软件、和/或商业软件的一个操作系统。这个将各个组件整合成一个完整的操作系统过程就称之为“制作发行版”,因此,不同的组织/公司和个人就可以制作各具特色的、可以安装或运行的操作系统的软件包——通常是 ISO 镜像——可以刻录到光盘、写入到 USB 启动盘、或者直接通过 ISO 文件来安装/运行。

一般来说,初接触 Linux,从桌面版开始比较好,几个主流的发行版,都可以尝试一下,如 Ubuntu、Debian、Fedora、CentOS、openSUSE 等;而 Linux 的一个重要领域——服务器领域——可以在你对 Linux 有了初步认识之后,再来学习和了解。当然,往往一个 Linux 发行版会同时发布桌面版和服务器版,其使用习惯也相近,所以熟悉桌面版之后,对使用和维护其相应的服务器版本会更容易一些。

好了,言归正传,您可以从下面挑个顺眼的下载安装试试了,建议你各种都体验下,最后你会选定一个适合你的!

Ubuntu

是当前最流行的 Linux 发行版之一,是 Debian Linux 的主要衍生版本,用户众多,以桌面系统所著称,适于刚刚接触 Linux 的初学者。

对于新手,安装 Ubuntu 可以参考《新手指南: 手把手教你安装 Ubuntu 和 Fedora》。

16.04.2 LTS

桌面版本可以从此下载:http://www.ubuntu.com/download/desktop

  • Intel & AMD/ 兼容 PC 64 位 点此下载
    (MD5: 1400884cec8e40a1a876b2678f81494b)
  • Intel & AMD/ 兼容 PC 32 位 点此下载
    (MD5: e14b5f2177b00dac3edc94b0e806f857)

服务器版本可以从此下载:http://www.ubuntu.com/download/server

  • Intel & AMD/ 兼容 PC 64 位 点此下载
    (MD5: 2bce60d18248df9980612619ff0b34e6)
  • Intel & AMD/ 兼容 PC 32 位 点此下载
    (MD5: c32ba78bf6bdae6627b1e717d33eb7ae)

17.04

桌面版本可以从此下载:http://www.ubuntu.com/download/desktop

  • Intel & AMD/ 兼容 PC 64 位 点此下载
    (MD5: 18cc54af55d7ca931bbb8588e8d9c1bd)
  • Intel & AMD/ 兼容 PC 32 位 点此下载
    (MD5: eb6c4ea889f5ab44f77c9d1cde6a8818)

服务器版本可以从此下载:http://www.ubuntu.com/download/server

  • Intel & AMD/ 兼容 PC 64 位 点此下载
    (MD5: 4672ce371fb3c1170a9e71bc4b2810b9)
  • Intel & AMD/ 兼容 PC 32 位 点此下载
    (MD5: 8e82de7efa4b1bf159b4be325e952eb1)

Fedora

在 Red Hat Linux 终止发布后,由 RedHat 推出的替代品,在新技术方面跟进较快。是 RedHat 系列的典型代表,和 CentOS / RHEL 源出一脉,如果将来使用 CentOS 作为服务器,使用 Fedora 作为个人桌面使用比较习惯。

对于新手,安装 Fedora 可以参考《新手指南: 手把手教你安装 Ubuntu 和 Fedora》。

Fedora 25 Workstation Live

  • Intel & AMD/ 兼容 PC 32,适用于 32-bit 位 PC 点此下载
  • Intel & AMD/ 兼容 PC 64,适用于 64-bit 位 PC 点此下载

Fedora 25 Server

  • Intel & AMD/ 兼容 PC 32 位,适用于 32-bit 位 PC 点此下载
  • Intel & AMD/ 兼容 PC 64 位,适用于 64-bit 位 PC 点此下载

Linux Mint

基于 Ubuntu 的一个衍生版,以高效易用著称。

Cinnamon 桌面

  • Intel & AMD/ 兼容 PC 32 位 1.4GB ISO 镜像,适用于 32-bit 位 PC 点此下载
    (MD5: 6e7f7e03500747c6c3bfece2c9c8394f)
  • Intel & AMD/ 兼容 PC 64 位 1.5GB ISO 镜像,适用于 64-bit 位 PC 点此下载
    (MD5: e71a2aad8b58605e906dbea444dc4983)

MATE 桌面

  • Intel & AMD/ 兼容 PC 32 位 1.4GB ISO 镜像,适用于 32-bit 位 PC 点此下载
    (MD5: ad46900208e69a952b3c4e1bc7f941e5)
  • Intel & AMD/ 兼容 PC 64 位 1.6GB ISO 镜像,适用于 64-bit 位 PC 点此下载
    (MD5: d3c0ef9d0c0c93ab7109fa2ef1db0c28)

Deepin

国内发展最好的 Linux 发行版,主要关注在桌面使用方面,在外观、易用性、本土化应用方面值得称道。

  • Intel & AMD/ 兼容 PC 32 位 4.4GB ISO 镜像,适用于 32-bit 位 PC 点此下载
    (MD5: e9b6145ba9c0d21632936361dbe74a18)
  • Intel & AMD/ 兼容 PC 64 位 4.3GB ISO 镜像,适用于 64-bit 位 PC 点此下载
    (MD5: 036dda2007b0bf325b97ab3e0fe4a85a)

openSUSE

Novell 所开发的 Linux 桌面发行版,继承于 Slackware,有很大技术创新,如 YaST。其企业版 SLES 和 RHEL/CentOS 、Ubuntu 共同占据了 Linux 服务器市场的较大份额。

DVD ISO

  • Intel & AMD/ 兼容 PC 32 位 4.7GB ISO 镜像,适用于 32-bit 位 PC 点此下载
    (MD5: 43869f9b9b944adc1b210649d3730980)
  • Intel & AMD/ 兼容 PC 64 位 4.7GB ISO 镜像,适用于 64-bit 位 PC 点此下载
    (MD5: 350b8cb014a4e342cc9a7cc9df891b99)

CentOS 7

RedHat 的 Linux 企业版 RHEL 的社区重新打包版本,与 RHEL 相比,只是缺少 RedHat 的商业支持而已。主要用于服务器方面。CentOS 7 采用了一些新的技术,因此和 CentOS 6 有较大差异。

DVD ISO

  • Intel & AMD/ 兼容 PC 64 位 4GB ISO 镜像,适用于 64-bit 位 PC ,点此下载(SHA256: c455ee948e872ad2194bdddd39045b83634e8613249182b88f549bb2319d97eb)

Everything ISO

  • Intel & AMD/ 兼容 PC 64 位 8GB ISO 镜像,适用于 64-bit 位 PC ,点此下载
    (SHA256: af4969ebbdc479d330de97c5bfbb37eedc64c369f009cb15a97f9553ba441c88)

CentOS 6

由于 CentOS 7 采用了一系列 systemd 相关的技术,因此还有相当多的产品环境的 Linux 服务器依旧使用 CentOS 6。

  • Intel & AMD/ 兼容 PC 64 位 ISO 镜像,适用于 64-bit 位 PC ,DVD 1DVD 2
    (SHA256:1dda55622614a8b43b448a72f87d6cb7f79de1eff49ee8c5881a7d9db28d4e35 ,0aba869427b4ce04e100d72744daf7fea1f7be2e4be56b658095bd9e99e04e6d)
  • Intel & AMD/ 兼容 PC 32 位 ISO 镜像,适用于 32-bit 位 PC ,DVD 1DVD 2
    (MD5:720d185fdf063383a4471657076b72fc162d3c3c3bca2e5e5ae13a25b3046519 ,0c1a498a469214f276b4390a9ac2111fe8eb89084f7921d2eced659ada09e1a9)

LFS

Linux From Scratch,简称 LFS,不同于其它的 Linux 发行版,它是一种给使用者指导建议,由使用者自行从头开始自己构建的发行版。

Systemd 版本(简体中文翻译版本):

LCTT 对 LFS 7.7 systemd 版本进行了翻译,并且 LFS 官方网站收录了相应链接:

在这篇文章中,我们将会学习关于Docker的一些知识,如何使用Docker部署Apache httpd服务,并且共享到Docker Hub上面去。首先,我们学习怎样拉取和使用Docker Hub里面的镜像,然后在一个Fedora 22的镜像上交互式地安装Apache,之后我们将会学习如何用一个Dockerfile文件来以一种更快,更优雅的方式制作一个镜像。最后,我们将我们创建的镜像发布到Docker Hub上,这样以后任何人都可以下载并使用它。

安装并初体验Docker

要求

运行Docker,你至少需要满足这些:

  • 你需要一个64位的内核,版本3.10或者更高
  • Iptables 1.4 - Docker会用它来做网络配置,如网络地址转换(NAT)
  • Git 1.7 - Docker会使用Git来与仓库交流,如Docker Hub
  • ps - 在大多数环境中这个工具都存在,在procps包里有提供
  • root - 尽管一般用户可以通过TCP或者其他方式来运行Docker,但是为了简化,我们会假定你就是root

使用dnf安装docker

以下的命令会安装Docker

dnf update && dnf install docker

注意:在Fedora 22里,你仍然可以使用Yum命令,但是它被DNF取代了,而且在纯净安装时不可用了。

检查安装

我们将要使用的第一个命令是docker info,这会输出很多信息给你:

docker info

也可以试着用docker version

docker version

以守护进程方式启动Dcoker

你应该启动一个docker实例,然后她会处理我们的请求。

docker -d

现在我们设置 docker 随系统启动,以便我们不需要每次重启都需要运行上述命令。

chkconfig docker on

让我们用Busybox来打印hello world:

dockr run -t busybox /bin/echo "hello world"

这个命令里,我们告诉Docker在Busybox镜像的一个实例/容器里执行 /bin/echo "hello world"。Busybox是一个小型的POSIX环境,将许多小工具都结合到了一个单独的可执行程序里。

如果Docker不能在你的系统里找到本地的Busybox镜像,她就会自动从Docker Hub里拉取镜像,正如你可以看下如下的快照:

Hello world with Busybox

Hello world with Busybox

再次尝试相同的命令,这次由于Docker已经有了本地的Busybox镜像,你将会看到的全部就是echo的输出:

docker run -t busybox /bin/echo "hello world"

也可以尝试以下的命令进入到容器环境里去:

docker run -it busybox /bin/sh

使用exit命令可以离开容器并停止它

交互式地Docker化Apache

拉取/下载 Fedora 镜像:

docker pull fedora:22

启动一个容器在后台运行:

docker run -d -t fedora:22 /bin/bash

列出正在运行地容器及其名字标识,如下

docker ps

listing with docker ps and attaching with docker attach

使用docker ps列出,并使用docker attach进入一个容器里

angry\_noble是docker分配给我们容器的名字,所以我们来连接上去:

docker attach angry_noble

注意:每次你启动一个容器,就会被给与一个新的名字,如果你的容器需要一个固定的名字,你应该在 docker run 命令里使用 -name 参数。

安装Apache

下面的命令会更新DNF的数据库,下载安装Apache(httpd包)并清理dnf缓存使镜像尽量小

dnf -y update && dnf -y install httpd && dnf -y clean all

配置Apache

我们需要修改httpd.conf的唯一地方就是ServerName,这会使Apache停止抱怨

sed -i.orig 's/#ServerName/ServerName/' /etc/httpd/conf/httpd.conf

设定环境

为了使Apache运行为独立模式,你必须以环境变量的格式提供一些信息,并且你也需要创建这些变量里的目录,所以我们将会用一个小的shell脚本干这个工作,当然也会启动Apache

vi /etc/httpd/run_apache_foreground

#!/bin/bash

#设置环境变量
APACHE_LOG_DI=R"/var/log/httpd"
APACHE_LOCK_DIR="/var/lock/httpd"
APACHE_RUN_USER="apache"
APACHE_RUN_GROUP="apache"
APACHE_PID_FILE="/var/run/httpd/httpd.pid"
APACHE_RUN_DIR="/var/run/httpd"

#如果需要的话,创建目录
if ! [ -d /var/run/httpd ]; then mkdir /var/run/httpd;fi
if ! [ -d /var/log/httpd ]; then mkdir /var/log/httpd;fi
if ! [ -d /var/lock/httpd ]; then mkdir /var/lock/httpd;fi

#运行 Apache
httpd -D FOREGROUND

另外地,你可以粘贴这个片段代码到容器shell里并运行:

dnf -y install git && git clone https://github.com/gaiada/run-apache-foreground.git && cd run-apach* && ./install && dnf erase git

上面的内嵌脚本会安装Git,克隆这个仓库,到文件里去运行脚本,并询问你是否卸载Git。

保存你的容器状态

你的容器现在准备好运行Apache,是时候保存容器当前的状态为一个镜像,以备你需要的时候使用。

为了离开容器环境,你必须顺序按下 Ctrl+qCtrl+p,如果你仅仅在shell执行exit,你同时也会停止容器,失去目前为止你做过的所有工作。

回到Docker主机,使用 docker commit 及容器名和你想要的仓库名字/标签:

docker commit angry_noble gaiada/apache

现在,你保存了容器的状态到一个镜像里,可以使用 docker stop 停止容器了:

docker stop angry_noble

运行并测试你的镜像

最后,从你的新镜像启动一个容器,并且重定向80端口到该容器:

docker run -p 80:80 -d -t gaiada/apache /etc/httpd/run_apache_foreground

到目前,你正在你的容器里运行Apache,打开你的浏览器访问该服务,在http://localhost,你将会看到如下Apache默认的页面

Apache default page running from Docker container

在容器里运行的Apache默认页面

使用Dockerfile Docker化Apache

现在,我们将要去创建一个新的Apache镜像,这次所有步骤会写在一个Dockerfile文件里,文件将会被用于生成该镜像。

首先,新建一个目录,在里面放Dockerfile文件,并进入该目录:

mkdir apachedf; cd apachedf

然后创建一个名为Dockerfile的文件,添加以下内容:

FROM fedora:22

MAINTAINER Carlos Alberto
LABEL version="0.1"

RUN dnf -y update && dnf -y install httpd && dnf -y clean all

RUN [ -d /var/log/httpd ] || mkdir /var/log/httpd
RUN [ -d /var/run/httpd ] || mkdir /var/run/httpd
RUN [ -d /var/lock/httpd ] || mkdir /var/lock/httpd

RUN sed -i.orig 's/#ServerName/ServerName/' /etc/httpd/conf/httpd.conf

ENV APACHE_RUN_USER apache
ENV APACHE_RUN_GROUP apache
ENV APACHE_LOG_DIR /var/log/httpd
ENV APACHE_LOCK_DIR /var/lock/httpd
ENV APACHE_RUN_DIR /var/run/httpd
ENV APACHE_PID_FILE /var/run/httpd/httpd.pid

EXPOSE 80

CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

我们一起来看看Dockerfile里面有什么:

  • FROM - 这告诉docker,我们将要使用Fedora 22作为基础镜像
  • MAINTAINERLABLE - 这些命令对镜像没有直接作用,属于标记信息
  • RUN - 自动完成我们之前交互式做的工作,安装Apache,新建目录并编辑httpd.conf
  • ENV - 设置环境变量,现在我们再不需要runapacheforeground脚本
  • EXPOSE - 暴露80端口给外网
  • CMD - 设置默认的命令启动httpd服务,这样我们就不需要每次起一个新的容器都重复这个工作

建立该镜像

现在,我们将要建立这个镜像,并为其添加tag gaiada/apachedf

docker build -t gaiada/apachedf:0.1 .

docker build complete

docker完成创建

使用 docker images 列出本地镜像,查看是否存在你新建的镜像:

docker images

然后运行新的镜像:

docker run -t -p 80:80 gaiada/apachedf

这就是Dockerfile的工作,使用这项功能会使得事情更加容易,快速并且可重复生成。

发布你的镜像

直到现在,你仅仅是从Docker Hub拉取了镜像,但是你也可以推送你的镜像,以后需要也可以再次拉取他们。实际上,其他人也可以下载你的镜像,在他们的系统中使用它而不需要改变任何东西。现在我们将要学习如何使我们的镜像对世界上的其他人可用。

创建帐号

为了能够在Docker Hub上推送你的镜像,你需要创建一个帐号。访问 https://hub.docker.com/account/signup/,填写下面的表格:

Docker Hub signup page

Docker Hub 注册页面

登录

输入下面的命令,接着输入你注册时提供的用户名,密码和邮箱

docker login

第一次登录过后,你的帐号信息会被记录在 ~/.dockercfg

推送

推送镜像,使用 docker push [registry/]yourlogin/repositoryname[:tag]

docker push docker.io/gaiada/apachedf

你可能会看见像这样的输出,在你的控制台上:

Docker push Apache image complete

Docker推送Apache镜像完成

结论

现在,你知道如何Docker化Apache,试一试包含其他一些组件,Perl,PHP,proxy,HTTPS,或者任何你需要的东西。我希望你们这些家伙喜欢她,并推送你们自己的镜像到Docker Hub。


via: http://linoxide.com/linux-how-to/configure-apache-containers-docker-fedora-22/

作者:Carlos Alberto 译者:wi-cuckoo 校对:wxy

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

欢迎大家,今天我们学习一下 docker 基本映像以及如何构建我们自己的 docker 基本映像。Docker 是一个开源项目,提供了一个可以打包、装载和运行任何应用的轻量级容器的开放平台。它没有语言支持、框架和打包系统的限制,从小型的家用电脑到高端服务器,在何时何地都可以运行。这使它们可以不依赖于特定软件栈和供应商,像一块块积木一样部署和扩展网络应用、数据库和后端服务。

Docker 映像是不可更改的只读层。Docker 使用 Union File System 在只读文件系统上增加可读写的文件系统,但所有更改都发生在最顶层的可写层,而其下的只读映像上的原始文件仍然不会改变。由于映像不会改变,也就没有状态。基本映像是没有父类的那些映像。Docker 基本映像主要的好处是它允许我们有一个独立运行的 Linux 操作系统。

下面是我们如何可以创建自定义的基本映像的方式。

1. 使用 Tar 创建 Docker 基本映像

我们可以使用 tar 构建我们自己的基本映像,我们从一个运行中的 Linux 发行版开始,将其打包为基本映像。这过程可能会有些不同,它取决于我们打算构建的发行版。在 Debian 发行版中,已经预带了 debootstrap。在开始下面的步骤之前,我们需要安装 debootstrap。debootstrap 用来获取构建基本系统需要的包。这里,我们构建基于 Ubuntu 14.04 "Trusty" 的映像。要完成这些,我们需要在终端或者 shell 中运行以下命令。

$ sudo debootstrap trusty trusty > /dev/null
$ sudo tar -C trusty -c . | sudo docker import - trusty

使用debootstrap构建docker基本映像

上面的命令为当前文件夹创建了一个 tar 文件并输出到标准输出中,"docker import - trusty" 通过管道从标准输入中获取这个 tar 文件并根据它创建一个名为 trusty 的基本映像。然后,如下所示,我们将运行映像内部的一条测试命令。

$  docker run trusty cat /etc/lsb-release

Docker GitHub Repo 中有一些允许我们快速构建基本映像的事例脚本.

2. 使用Scratch构建基本映像

在 Docker registry 中,有一个被称为 Scratch 的使用空 tar 文件构建的特殊库:

$ tar cv --files-from /dev/null | docker import - scratch

使用scratch构建docker基本映像

我们可以使用这个映像构建新的小容器:

FROM scratch
ADD script.sh /usr/local/bin/run.sh
CMD ["/usr/local/bin/run.sh"]

上面的 Dockerfile 文件来自一个很小的映像。这里,它首先从一个完全空的文件系统开始,然后它复制新建的 /usr/local/bin/run.sh 为 script.sh ,然后运行脚本 /usr/local/bin/run.sh。

结尾

这这个教程中,我们学习了如何构建一个开箱即用的自定义 Docker 基本映像。构建一个 docker 基本映像是一个很简单的任务,因为这里有很多已经可用的包和脚本。如果我们想要在里面安装想要的东西,构建 docker 基本映像非常有用。如果有任何疑问,建议或者反馈,请在下面的评论框中写下来。非常感谢!享受吧 :-)


via: http://linoxide.com/linux-how-to/2-ways-create-docker-base-image/

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

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

今天,我们将向你展示如何在你的 Ubuntu 个人电脑或 Ubuntu 服务器中,直接通过 Ubuntu 官方软件仓库来配置本地软件仓库。在你的电脑中创建一个本地软件仓库有着许多的好处。假如你有许多电脑需要安装软件 、安全升级和修复补丁,那么配置一个本地软件仓库是一个做这些事情的高效方法。因为,所有需要安装的软件包都可以通过快速的局域网连接从你的本地服务器中下载,这样可以节省你的网络带宽,降低互联网接入的年度开支 ...

你可以使用多种工具在你的本地个人电脑或服务器中配置一个 Ubuntu 的本地软件仓库,但在本教程中,我们将为你介绍 APT-Mirror。这里,我们将把默认的镜像包镜像到我们本地的服务器或个人电脑中,并且在你的本地或外置硬盘中,我们至少需要 120 GB 或更多的可用空间才行。 我们可以通过配置一个 HTTPFTP 服务器来与本地系统客户端共享这个软件仓库。

我们需要安装 Apache 网络服务器和 APT-Mirror 来使得我们的工作得以开始。下面是配置一个可工作的本地软件仓库的步骤:

1. 安装需要的软件包

我们需要从 Ubuntu 的公共软件包仓库中取得所有的软件包,然后在我们本地的 Ubuntu 服务器硬盘中保存它们。

首先我们安装一个Web 服务器来承载我们的本地软件仓库。这里我们将安装 Apache Web 服务器,但你可以安装任何你中意的 Web 服务器。对于 http 协议,Web 服务器是必须的。假如你需要配置 ftp 协议 及 rsync 协议,你还可以再分别额外安装 FTP 服务器,如 proftpd, vsftpd 等等 和 Rsync 。

$ sudo apt-get install apache2

然后我们需要安装 apt-mirror:

$ sudo apt-get install apt-mirror

apt-mirror-installation

注: 正如我先前提到的,我们需要至少 120 GB 的可用空间来使得所有的软件包被镜像或下载。

2. 配置 APT-Mirror

现在,在你的硬盘上创建一个目录来保存所有的软件包。例如,我们创建一个名为 /linoxide的目录,我们将在这个目录中保存所有的软件包:

 $ sudo mkdir /linoxide

现在,打开文件 /etc/apt/mirror.list :

 $ sudo nano /etc/apt/mirror.list

复制下面的命令行配置到 mirror.list文件中并按照你的需求进行修改:

############# config ##################
#
set base_path    /linoxide
#
# set mirror_path  $base_path/mirror
# set skel_path    $base_path/skel
# set var_path     $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch  <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads     20
set _tilde 0
#
############# end config ##############

deb http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse

deb-src http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse

clean http://archive.ubuntu.com/ubuntu

注: 你可以将上面的官方镜像服务器网址更改为离你最近的服务器的网址,可以通过访问 Ubuntu Mirror Server来找到这些服务器地址。假如你并不太在意镜像完成的时间,你可以沿用默认的官方镜像服务器网址。

这里,我们将要镜像最新和最大的 Ubuntu LTS 发行版 --- 即 Ubuntu 14.04 LTS (Trusty Tahr) --- 的软件包仓库,所以在上面的配置中发行版本号为 trusty 。假如我们需要镜像 Saucy 或其他的 Ubuntu 发行版本,请修改上面的 trusy 为相应的代号。

现在,我们必须运行 apt-mirror 来下载或镜像官方仓库中的所有软件包。

sudo apt-mirror

从 Ubuntu 服务器中下载所有的软件包所花费的时间取决于你和镜像服务器之间的网络连接速率和性能。这里我中断了下载,因为我已经下载好了 ...

downloading-packages

3.配置网络服务器

为了使得其他的电脑能够访问这个软件仓库,你需要一个Web服务器。你也可以通过 ftp 来完成这件事,但我选择使用一个Web服务器因为在上面的步骤 1 中我提及到使用Web服务器。因此,我们现在要对 Apache 服务器进行配置:

我们将为我们本地的软件仓库目录 建立一个到 Apache 托管目录 --- 即 /var/www/ubuntu --- 的符号链接。

$ sudo ln -s /linoxide /var/www/ubuntu
$ sudo service apache2 start

上面的命令将允许我们从本地主机(localhost) --- 即 http://127.0.0.1(默认情况下)) --- 浏览我们的镜像软件仓库。

4. 配置客户端

最后,我们需要在其他的电脑中添加软件源,来使得它们可以从我们的电脑中取得软件包或软件仓库。为达到此目的,我们需要编辑 /etc/apt/sources.list 文件并添加下面的命令:

$ sudo nano /etc/apt/sources.list

添加下面的一行到/etc/apt/sources.list中并保存。

deb http://192.168.0.100/ubuntu/ trusty main restricted universe

注: 这里的 192.168.0.100 是我们的服务器电脑的局域网 IP 地址,你需要替换为你的服务器电脑的局域网 IP 地址

$ sudo apt-get update

最终,我们完成了任务。现在,你可以使用sudo apt-get install packagename 命令来从你的本地 Ubuntu 软件仓库中安装所需的软件包,这将会是高速的且消耗很少的带宽。


via: http://linoxide.com/ubuntu-how-to/setup-local-repository-ubuntu/

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

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