《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——2.2 容器式Linux系统的Docker配置

2.2 容器式Linux系统的Docker配置

我们使应用程序容器化,不遗余力地使其变小和变高效,但如果最终要将这些容器部署到缓慢、臃肿的操作系统中,那将使一切努力失去意义。在不断演进的容器模型中,既然容器已包含运行应用程序所需的可执行文件、库以及其他组件,宿主操作系统完全可以简化到只保留运行容器所需的功能。

Project Atomic和CoreOS这两个项目的目标是提供专为运行容器而优化的操作系统。这样的操作系统既能够直接运行在硬件上,也能运行在公有云(如亚马逊的EC2或者Google Compute Engine)、(OpenStack、VMware和Red Hat Engerprise Virtualization提供的)私有虚拟化平台上或者(像Linux KVM宿主机这样的)个人计算机上的虚拟机中。

同样,安装和配置Project Atomic和CoreOS操作系统的方法很多。Project Atomic提供了一个ISO的安装程序,这类似于Fedora和RHEL系统的安装——跟随安装步骤一路点击来配置网路、磁盘分区和添加用户。而CoreOS提供的ISO文件只是把整个镜像复制到所选的分区上,然后几分钟内就可以启动了。

当部署到云环境中时,像cloud-config(CoreOS)和cloud-init(Atomic和其他系统)这样的工具,可以在需要时用来配置云端镜像。

2.2.1 Atomic Host的Docker配置
Atomic项目(www.projectatomic.io)是基于RPM的Liunx发行版构建器,它是为部署和管理容器而专门设计的。Fedora、Red Hat Enterprise Linux和CentOS都有可以作为Atomic宿主机运行的版本。

Atomic Host系统提供了多种形式,以方便在不同环境中应用。可以下载Atomic qcow2镜像,并通过cloud-init注入配置信息(用户账号、主机名、配置文件等)的方式来配置它。对于CentOS Atomic,有用于快速启动CentOS Atomic虚拟机的Vagrant文件可用。而RHEL Atomic和Fedora Atomic项目提供了用于安装的ISO,可以使用传统的安装程序一步一步地配置Atomic系统。

通过如下链接可以找到并下载不同Atomic宿主机版本的镜像。

Fedora Atomic(https://getfedora.org/cloud/download):在下载Fedora Cloud页面中有一个Atomic Host Images的标签(点击进入)。选择Atomic Host Image来下载镜像,并使用通常的Fedora安装程序(anaconda)来安装Fedora Atomic系统。这个页面上还有其他形式的Fedora Atomic可供下载,如qcow2格式(用于OpenStack)以及原始格式的Atomic镜像文件,还可以通过Vagrant在VirtualBox和KVM(libvirt)环境中启动Atomic镜像。最后,还有用于Amazon EC2部署的Atomic镜像。
CentOS Atomic(http://buildlogs.centos.org/centos/7/isos/x86_64/):该网站有qcow2格式的镜像可用。同样,如果系统已经安装了vagrant(https://www.vagrantup.com/),这里也有vagrant box,可以使用它们立即启动CentOS Atomic虚拟机。CentOS Atomic的安装过程与Fedora和RHEL的qcow2格式镜像的部署过程类似。
RHEL Atomic(https://access.redhat.com/downloads):下载RHEL Atomic镜像需要Red Hat的订阅(正式或评估)。在Red Hat下载页面,选择Red Hat Enterprise Linux,然后在Product Variant部分,选择Red Hat Enterprise Linux Atomic host。针对不同平台(云、Red Hat企业虚拟化、Microsoft Hyper-V和VMware vSphere),RHEL Atomic镜像提供了多种不同格式(qcow2、ova、vhd和ISO)
想了解更多Project Atomic发行版的获取和安装方法,请参考Project Atomic快速入门指南(www.projectatomic.io/docs/quickstart)。接下来的示例中,我使用Fedora 22安装程序搭建起一个Fedora Atomic Host。相同的基本步骤可以用来指导通过Atomic ISO安装文件配置RHEL。

1.Fedora Atomic Host的Docker配置
与CoreOS一样,Atomic Host系统已为运行Docker做好了配置。开始按这个过程搭建Fedora Atomic Host前,先下载Fedora Atomic ISO安装镜像。可以将ISO镜像刻录到一张CD或DVD盘上,而后可以将它直接安装在计算机硬件上,或者在几乎所有支持虚拟化的系统上使用。例如,在Linux KVM这样的系统中,通过virt-manager工具来使用。

(1)下载Fedora Atomic ISO镜像。下载最新的Fedora Atomic安装镜像。查找官方的Fedora 22或更新版本。我使用下列镜像文件:

https://download.fedoraproject.org/pub/fedora/linux/releases/22/Cloud_Atomic/x86_64/iso/Fedora-Cloud_Atomic-x86_64-22.iso

(2)启动Fedora Atomic ISO镜像。要么从刻录到光盘上的镜像直接启动安装程序,要么使用虚拟机管理工具(如virt-manager、OpenStack或其他工具)作为虚拟机启动。我建议准备至少10 GB的磁盘分区给Fedora Atomic,试试看。

(3)做出安装选择。跟随安装界面一步一步地进行设置,这些安装界面提供了如何配置系统的信息。多数特性的配置是通过Installation Summary(安装摘要)界面完成的,如图2-1所示。在Installation Summary界面上,完成如下设置。

图2-1 通过Installation Summary界面确定磁盘分区和网络设置

Keyboard(键盘):根据语言与地区选择键盘。
Time & Date(时间和日期):设定日期、时间和时区。默认选择的是Network Time(网络时间),系统会和NTP时间服务器同步时间。
Installation Destination(安装位置):对于该配置项,要么采用自动分配的磁盘分区,要么自己选择一个分区。
Language Support(语言支持):选择语言。
Network & Host Name(网络与主机名):网络是自动打开的(尝试使用DHCP获取地址信息)。如果要关闭网络或者设置自己的主机名,选择该配置项。完成后点击Done(完成)。
(4)选择Begin Installation(开始安装)。到目前为止,还没有任何设置作用到你的磁盘分区。如果所有设置都已经完成,选择Begin Installation。

(5)设置root密码和用户。随着安装进行,选择ROOT PASSWORD并设置root密码。之后,选择USER CREATION并添加用户账号(同时为该用户设置密码)。可以设置该用户是否拥有sudo权限(选择Make This User Administrator)。选择Done,返回配置界面并等待安装完成。

(6)重启。安装完成后,选择重启系统,现在就可以开始使用Fedora Atomic Host了。

2.检查Fedora Atomic Host
用户无需安装任何软件就可以开始使用Docker。实际上,根本无法通过传统的rpm和yum软件包工具来为Atomic Host添加软件。如果要向系统添加软件,要么添加普通容器(来运行应用程序),要么添加拥有超级特权的容器(来添加直接访问宿主机系统的工具)。

重启Fedora Atomic Host后,就可以立即使用Docker。docker软件包应该已经安装,而且Docker服务已经启动并启用了。

通过自动升级来更新Fedora Atomic系统,而自动升级要使用atomic命令。我建议运行下面的命令来确保你的系统安装了最新版的Docker以及相关软件:

# atomic host upgrade
软件更新后,通过重启使最新的atomic生效。现在,可以按第3章所描述的搭建Docker registry,或者开始使用docker命令——第4章涉及这一方面。

2.2.2 CoreOS的Docker配置
CoreOS提供了几种方式来运行CoreOS系统。这个例子使用了CoreOS的live镜像。这个镜像文件可以刻录到CD中并直接从硬件启动,或者加载到能够安装虚拟机的工具中(例如,许多Linux系统都有的Virtual Machine Manager工具)。

接下来描述了如何使用CoreOS的ISO live镜像来启动CoreOS的live系统,以及如何将CoreOS安装到硬盘并从硬盘启动系统,这样就可以开始使用Docker了。

通过以下步骤来获取CoreOS的ISO live镜像文件,并从该镜像文件启动和安装CoreOS。

(1)获取CoreOS。 访问下面的链接,然后选择Download Stable ISO来获取CoreOS的安装媒介:

https://coreos.com/docs/running-coreos/platforms/iso/
(2)准备安装媒介。使CoreOS的live安装媒介可以将CoreOS安装到硬盘上。可以将它刻录到CD上,也可以通过VM安装应用程序指向它(如Linux的Virtual Machine Manager),或者将它复制到PXE服务器上并通过网络来启动它。

(3)启动安装媒介。如果是安装到本地虚拟机上或者是云环境中,要确定为新CoreOS系统保留多少磁盘空间。当CoreOS启动时,磁盘将映射为/dev/sda或/dev/sdb这样的设备。

(4)使用live CoreOS。CoreOS会直接启动到core用户(该用户有sudo权限)的shell提示符下。CoreOS默认配置了两个用户:root和core。目前CoreOS系统运行在live模式下(还没安装)。接下来为安装做准备。

(5)创建加密口令。 为core用户创建加密口令。例如,可以使用openssl命令创建一个md5crypt口令(CoreOS自带这个工具)。提示符出现后,输入要加密的口令(两次):

# openssl passwd -1
Password: 
Verifying - Password: 
$1$f6e4jyo9$lbch8VJ23oU2cW5grkk4s.

(6)创建cloud-config文件。创建cloud-config文件,并通过该文件为CoreOS添加用户口令和其他配置信息。参考“使用Cloud-Config”(https://github.com/coreos/coreos-cloudinit/ blob/master/Documentation/ cloud-config.md)了解cloud-config文件内容的详细信息。在这个例子中,创建名为cloud-config.yaml的文件,其文件内容如下(将passwd的字符串替换为上一步生成的字符串):

#cloud-config
users:
  - name: core
    passwd: $1$f6e4jyo9$lbch8VJ23oU2cW5grkk4s.
    groups:
      - sudo
      - docker

(7)运行coreos-install脚本。运行下面的命令,将CoreOS镜像安装到之前选定的磁盘设备上(这里使用的是/dev/sda):

$ sudo coreos-install -d /dev/sda -c cloud-config.yaml
Checking availability of "local-file"
Fetching user-data from datasource of type "local-file"
Downloading the signature for http://stable.release.core-os.net...
...
Downloading, writing and verifying coreos_production_image.bin.bz2...
...
Success! CoreOS stable 647.0.0 is installed on /dev/sda

(8)重启。镜像安装完成后,重启系统:

$ sudo reboot
(9)登录。CoreOS重启后,使用core用户以及之前为该用户分配的加密口令登录系统。

至此,你就可以搭建Docker registry(第3章),或者开始使用docker命令(第4章)。

时间: 2024-12-12 16:30:30

《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——2.2 容器式Linux系统的Docker配置的相关文章

《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——第2章 搭建容器运行时环境 2.1标准Linux系统的Docker配置

第2章 搭建容器运行时环境 自构建之初,Docker就运行在Linux之上.但与虚拟机不同,虚拟机包含了整个操作系统,而容器本身只是依靠单独的操作系统为其提供运行环境.这就是说,我们有诸多可选的方式来创建Docker的工作环境.具体方式包括以下这些. 标准Linux:多个主要的Linux发行版已将Docker打包在其中.如需最新的Docker特性,只要安装相应Linux发行版的最新版本即可.切记,Docker与操作系统有着密切的联系,因此,Linux的早期版本可能并不包含Docker运行所需的全

《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——1.2 了解容器的组成

1.2 了解容器的组成 Docker是Docker项目开发的一种容器格式.docker命令能够运行.停止.启动.调查容器,还能操纵容器.docker命令也可以作为服务守护进程运行,处理管理Docker容器的请求.默认情况下,这个Docker服务会从Docker Hub Registry获取你请求的镜像.虽然你无需知道更多就可以开始使用,但接下来会依次给出一些额外的信息. 1.2.1 Docker项目 Docker项目为Docker开发提供了一个中心.它将Docker称为"一个针对分布式应用开发者

《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——2.3 小结

2.3 小结 多种不同的Linux系统都提供了Docker.除了使用标准Linux系统(如Ubuntu.Fedora.Red Hat Enterprise Linux或者CentOS)来运行Docker外,还有专门用于容器部署的特定Linux系统.通过虚拟机运行这些系统,也可以在Microsoft Windows或者Mac OS X上使用Docker. 本章介绍了配置Ubuntu.Fedora和Red Hat Enterprise Linux系统的方法,以便为运行Docker做好准备.本章还介绍

《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——第1章 使用Docker对应用进行容器化 1.1了解容器化应用的优缺点

第1章 使用Docker对应用进行容器化 Docker为应用程序的打包和运行提供了一种优雅的方式.使用喜欢的Linux系统,几分钟之内就能将Docker安装好并作为服务运行起来.构建.运行.停止.启动.调查.修改或者用其他的方式操作容器非常容易,说实话,很棒. Docker的简单易用使其成为当今最流行的开源项目之一.但是作为数据中心容器化核心的Docker却引起了极大的震动,其潜力无异于重新发明了个人和公司(或大或小)创建.测试.部署和管理其最关键应用程序的方式. 使用容器化技术也可以让应用程序

《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——1.4 小结

1.4 小结 通过将应用程序(以及应用程序运行所需要的全部东西)与运行该应用程序的宿主机解耦,Docker容器提供了一种简单.优雅的应用程序部署和运行方式.较之于将应用程序直接安装在宿主机上所获得的灵活性,Docker容器能够提供更大的使用灵活性.而且,与虚拟机相比,Docker容器对系统资源(如CPU使用.内存消耗以及磁盘空间使用)的要求很少. 本章描述了构成Docker的不同组件.这些组件由Docker项目管理,包括Docker Hub Registry(它保存Docker镜像).Docke

Docker Swarm和Kubernetes在大规模集群中的性能比较

本文讲的是Docker Swarm和Kubernetes在大规模集群中的性能比较,[编者的话]本文建立了一套通用测评工具,通过容器启动时延等指标测评Swarm和Kubernetes在大规模部署下的性能表现,分析结果认为Swarm比Kubernetes的性能好.此外还提供了详尽的测试数据, 供应用者参考. 这篇文章主要针对Docker Swarm和Kubernetes在大规模部署的条件下的3个问题展开讨论.在大规模部署下,它们的性能如何?它们是否可以被批量操作?需要采取何种措施来支持他们的大规模部

如何利用Kubernetes编排实现Node.js程序的微服务化

前言 本文着重介绍了微服务架构的某些细节,微服务其实也适用于Node.js应用程序.本文还介绍了如何利用容器和编排来实现Node.js的微服务化. 如今,大家都在谈论调度,微服务,Docker,以及Kubernetes如何改变编排领域.那么,在生产中部署Node.js应用程序意味着什么?有哪些是值得关注的? Node.js微服务化 为了理解为什么每个人都想谈论微服务,我们需要了解应用程序开发的前身--The Monolith. 单体应用 如果你的应用程序是单体应用形式的,那么系统的所有代码都在一

Docker -- 2 -- 利用docker部署网站和数据库

在Docker – 系统整洁之道 – 1中已经对Docker的一些命令和Docker镜像的使用及操作做了记录. 这次就利用docker进行一次真正的实例使用,使用docker搭建一个简单的答题系统,这个系统是当时做来给网络安全周做手机答题的系统,很简单,代码风格很差. 这篇主要记录了三种docker使用的方式. 用supervisor方式运行一个多进程的docker实例 创建一个ngnix和php运行的环境 创建一个ngnix,php,mysql集合运行的环境,使用docker-compose构

为什么微软应该通过收购Docker来与Kubernetes竞争

前言 Docker自今年4月Dockercon以来,都在对外宣称一件事:Docker已正式布局企业级服务,要利用已有的资源实现自身盈利需求.虽然Docker自有其扩展的优势,但从市场的另一端来看,Google在这方面则表现更强势.Kubernetes有Google的强大靠山,而Docker也不会孤军奋战,目前看来,Docker和微软的结合有可能给容器市场带来更多活力:Docker需要盈利,微软则需要Docker来与Google竞争. 目前看来,Kubnernetes的胜利姿态最终傲视了容器编排这