《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搭建和管理企业级网站应用
相关文章
|
7天前
|
Docker 容器
Docker 镜像加速器配置指南
dockerhub加速器失败,使用第三方加速器
|
19天前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
29 5
|
19天前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
47 3
|
21天前
|
Kubernetes 监控 云计算
Docker与Kubernetes的协同工作
Docker与Kubernetes的协同工作
|
21天前
|
运维 Kubernetes Docker
深入理解容器化技术:Docker与Kubernetes的协同工作
深入理解容器化技术:Docker与Kubernetes的协同工作
43 1
|
26天前
|
存储 安全 数据安全/隐私保护
Docker中配置TLS加密的步骤
我们可以在 Docker 中成功配置 TLS 加密,增强 Docker 环境的安全性,保护容器之间以及与外界的通信安全。需要注意的是,在实际应用中,应根据具体情况进行更细致的配置和调整,确保符合安全要求。同时,定期更新证书和私钥,以保障安全性。
51 1
|
28天前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
21天前
|
Kubernetes 开发者 Docker
Docker与Kubernetes的协同工作
Docker与Kubernetes的协同工作
|
11天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
141 77

相关产品

  • 容器服务Kubernetes版