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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Atomic Host系统提供了多种形式,以方便在不同环境中应用。可以下载Atomic qcow2镜像,并通过cloud-init注入配置信息(用户账号、主机名、配置文件等)的方式来配置它。对于CentOS Atomic,有用于快速启动CentOS Atomic虚拟机的Vagrant文件可用。

本节书摘来自异步社区《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》一书中的第2章,第2.2节,作者: 【美】Christopher Negus(克里斯托弗•尼格斯)著,更多章节内容可以访问云栖社区“异步社区”公众号查看

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界面上,完成如下设置。

screenshot

图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章)。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
3天前
|
存储 Kubernetes API
使用Kubernetes管理容器化应用的深度解析
【5月更文挑战第20天】本文深度解析Kubernetes在管理容器化应用中的作用。Kubernetes是一个开源平台,用于自动化部署、扩展和管理容器,提供API对象描述应用资源并维持其期望状态。核心组件包括负责集群控制的Master节点(含API Server、Scheduler、Controller Manager和Etcd)和运行Pod的工作节点Node(含Kubelet、Kube-Proxy和容器运行时环境)。
|
7天前
|
Kubernetes 负载均衡 应用服务中间件
深入理解 Kubernetes Ingress:路由流量、负载均衡和安全性配置
深入理解 Kubernetes Ingress:路由流量、负载均衡和安全性配置
|
1天前
|
存储 运维 分布式计算
分布式云容器平台ACK One概述
分布式云容器平台ACK One概述
19 2
|
1天前
|
运维 Kubernetes 网络协议
Kubernetes详解(十六)——Pod容器探测
Kubernetes详解(十六)——Pod容器探测
20 1
|
2天前
|
Kubernetes 关系型数据库 分布式数据库
【PolarDB开源】PolarDB与Kubernetes集成:容器化部署的最佳实践
【5月更文挑战第21天】本文介绍了将阿里云的高性能数据库PolarDB与容器编排工具Kubernetes集成的步骤。首先,需准备Kubernetes集群和PolarDB Docker镜像,安装Helm。然后,通过Helm部署PolarDB,设置存储类和副本数。接着,应用配置PolarDB连接信息,打包成Docker镜像并在K8s集群中部署。此外,调整PolarDB参数以优化性能,并使用Prometheus和Grafana监控。本文为PolarDB在Kubernetes中的最佳实践提供了指导。
22 4
|
2天前
|
运维 Kubernetes 网络协议
Kubernetes详解(十六)——Pod容器探测
Kubernetes详解(十六)——Pod容器探测
11 0
|
3天前
|
存储 弹性计算 Kubernetes
【阿里云云原生专栏】深入解析阿里云Kubernetes服务ACK:企业级容器编排实战
【5月更文挑战第20天】阿里云ACK是高性能的Kubernetes服务,基于开源Kubernetes并融合VPC、SLB等云资源。它提供强大的集群管理、无缝兼容Kubernetes API、弹性伸缩、安全隔离及监控日志功能。用户可通过控制台或kubectl轻松创建和部署应用,如Nginx。此外,ACK支持自动扩缩容、服务发现、负载均衡和持久化存储。多重安全保障和集成监控使其成为企业云原生环境的理想选择。
138 3
|
7天前
|
Ubuntu Linux Docker
window10下安装ubuntu系统以及docker使用
window10下安装ubuntu系统以及docker使用
|
7天前
|
存储 Kubernetes 应用服务中间件
k8s-配置与存储-持久化存储-NFS 挂载、StorageClass 存储类 动态创建NFS-PV案例
k8s-配置与存储-持久化存储-NFS 挂载、StorageClass 存储类 动态创建NFS-PV案例
|
7天前
|
存储 Kubernetes Docker
k8s-配置与存储-配置管理
k8s-配置与存储-配置管理

相关产品

  • 容器服务Kubernetes版