《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
相关文章
|
28天前
|
存储 运维 安全
构建高效自动化运维体系:Ansible与Docker的完美结合
【2月更文挑战第31天】 随着云计算和微服务架构的兴起,自动化运维成为保障系统稳定性和提升部署效率的关键手段。本文将详细探讨如何通过Ansible和Docker的结合来构建一个高效、可靠且易于管理的自动化运维体系。首先,介绍自动化运维的必要性及其在现代IT基础设施中的作用;然后,分别阐述Ansible和Docker的技术特点及优势;最后,提供一个基于Ansible和Docker结合使用的实践案例,以及实施过程中遇到的挑战和解决方案。
|
29天前
|
缓存 Kubernetes Docker
容器服务ACK常见问题之容器服务ACK ingress websocket配置失败如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
18天前
|
Kubernetes 容器
k8s容器时间与服务器时间不一致问题
k8s容器时间与服务器时间不一致问题
17 0
|
1天前
|
存储 运维 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第18天】 在现代微服务架构中,Docker容器已成为部署和运行应用的标准环境。随之而来的挑战是如何有效监控这些容器的性能与健康状况,确保系统的稳定性和可靠性。本文将探讨构建一个高效稳定的Docker容器监控体系的关键技术和方法,包括日志管理、性能指标收集以及异常检测机制,旨在为运维人员提供实用的指导和建议。
7 0
|
7天前
|
测试技术 Linux 数据安全/隐私保护
【Docker项目实战】使用Docker部署Seatsurfing预订座位系统
【4月更文挑战第12天】使用Docker部署Seatsurfing预订座位系统
32 3
|
7天前
|
JSON Kubernetes Go
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
17 0
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
|
21天前
|
运维 Kubernetes 持续交付
构建高效自动化运维体系:基于Docker和Kubernetes的最佳实践
在现代云计算环境中,自动化运维成为保障系统稳定性与提升效率的关键。本文深入探讨了如何利用Docker容器化技术和Kubernetes容器编排工具构建一个高效、可靠的自动化运维体系。文中不仅介绍了相关的技术原理,还结合具体案例分析了实施过程中的常见问题及解决方案,为读者提供了一套行之有效的最佳实践指南。
|
21天前
|
Kubernetes API 调度
总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(水平扩展控制)
总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(水平扩展控制)
45 0
|
23天前
|
运维 监控 云计算
构建高效稳定的Docker容器监控体系
随着微服务架构的普及,Docker容器作为其核心承载单元,在系统运维中扮演着日益重要的角色。本文旨在探讨如何构建一个高效且稳定的Docker容器监控体系,以确保容器运行的可靠性和系统的高可用性。文章首先分析了容器监控的必要性,接着详细介绍了监控体系的设计理念和组件选择,最后提供了实施过程中的关键步骤与最佳实践。通过本文,读者将掌握构建和维护Docker容器监控体系的有效方法。
|
29天前
|
Kubernetes SDN 微服务
微服务与 Kubernetes 容器云的边界
【2月更文挑战第30天】该文探讨了微服务与Kubernetes集群的关系,主要关注是否应跨多集群部署。理想的状况是每个微服务对应一个Kubernetes集群,配置和注册中心在同一集群内,以减少网络延迟。

相关产品

  • 容器服务Kubernetes版