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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
随着云计算和DevOps的兴起,容器技术和自动化在软件开发中扮演着愈发重要的角色,但也带来了新的安全挑战。阿里云针对这些挑战,组织了一场关于云上安全的深度访谈,邀请了内部专家穆寰、匡大虎和黄竹刚,深入探讨了容器安全与软件供应链安全的关系,分析了当前的安全隐患及应对策略,并介绍了阿里云提供的安全解决方案,包括容器镜像服务ACR、容器服务ACK、网格服务ASM等,旨在帮助企业构建涵盖整个软件开发生命周期的安全防护体系。通过加强基础设施安全性、技术创新以及倡导协同安全理念,阿里云致力于与客户共同建设更加安全可靠的软件供应链环境。
150315 32
|
1月前
|
存储 运维 Kubernetes
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
飞轮科技推出了 Doris 的 Kubernetes Operator 开源项目(简称:Doris Operator),并捐赠给 Apache 基金会。该工具集成了原生 Kubernetes 资源的复杂管理能力,并融合了 Doris 组件间的分布式协同、用户集群形态的按需定制等经验,为用户提供了一个更简洁、高效、易用的容器化部署方案。
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
|
1月前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
本期节目围绕软件供应链安全、容器安全的主要挑战以及阿里云如何帮助用户等维度展开了深入的讨论。
|
2月前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
178 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
1月前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
209 11
|
2月前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
2月前
|
存储 Kubernetes Docker
Kubernetes(k8s)和Docker Compose本质区别
理解它们的区别和各自的优势,有助于选择合适的工具来满足特定的项目需求。
232 19
|
1月前
|
人工智能 运维 监控
容器服务Kubernetes场景下可观测体系生产级最佳实践
阿里云容器服务团队在2024年继续蝉联Gartner亚洲唯一全球领导者象限,其可观测体系是运维的核心能力之一。该体系涵盖重保运维、大规模集群稳定性、业务异常诊断等场景,特别是在AI和GPU场景下提供了全面的观测解决方案。通过Tracing、Metric和Log等技术,阿里云增强了对容器网络、存储及多集群架构的监控能力,帮助客户实现高效运维和成本优化。未来,结合AI助手,将进一步提升问题定位和解决效率,缩短MTTR,助力构建智能运维体系。
|
2月前
|
Ubuntu 网络协议 Linux
快速部署WSL(Windows Subsystem for Linux)
WSL提供了一种轻量级的方法,使开发者能够在Windows上无缝运行Linux环境。通过本文介绍的步骤,可以快速安装、配置和使用WSL,以满足开发和测试的需求。
205 8
|
2月前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。

相关产品

  • 容器服务Kubernetes版