AWS cli centos,centos官网
本篇文章给大家谈谈AWS cli centos,以及centos官网对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
docker面试题
Docker是一种流行的开源软件平台,可简化创建、管理、运行和分发应用程序的过程。它使用容器来打包应用程序及其依赖项。用 Docker来简化其应用程序开发工作流程。
Docker面试问答
1.什么是 Docker容器?
Docker容器在应用程序层创建抽象并将应用程序及其所有依赖项打包在一起。这使我们能够快速可靠地部署应用程序。容器不需要我们安装不同的操作系统。相反,它们使用底层系统的 CPU和内存来执行任务。这意味着任何容器化应用程序都可以在任何平台上运行,而不管底层操作系统如何。我们也可以将容器视为 Docker镜像的运行时实例。
2.描述 Docker容器的生命周期。
Docker容器经历以下阶段:
创建容器
运行容器
暂停容器(可选)
取消暂停容器(可选)
启动容器
停止容器
重启容器
杀死容器
销毁容器
3.如何从 Docker镜像创建 Docker容器?
为了从镜像创建容器,我们从 Docker存储库中提取我们想要的镜像并创建一个容器。我们可以使用以下命令:
docker run-it-d
4. Docker Compose可以使用 JSON代替 YAML吗?
是的,我们可以对Docker Compose文件使用 JSON文件而不是YAML
$ docker-compose-f docker-compose.json up
5.什么是Docker Swarm?
Docker Swarm是一个容器编排工具,它允许我们跨不同主机管理多个容器。使用 Swarm,我们可以将多个 Docker主机变成单个主机,以便于监控和管理。
6.如果你想使用一个基础镜像并对其进行修改,你怎么做?
我们可以使用以下 Docker命令将图像从 Docker Hub拉到我们的本地系统上:
docker pull
7.如何启动、停止和终止容器?
要启动 Docker容器,请使用以下命令:
docker start
要停止 Docker容器,请使用以下命令:
docker stop
要终止 Docker容器,请使用以下命令:
docker kill
8.什么是 DockerFile?
Dockerfile是一个文本文件,其中包含我们需要运行以构建 Docker映像的所有命令。Docker使用 Dockerfile中的指令自动构建镜像。我们可以docker build用来创建按顺序执行多个命令行指令的自动构建。
9.解释 Docker组件。
三个架构组件包括 Docker客户端、主机和注册表。
Docker客户端:该组件执行构建和运行操作以与 Docker主机通信。
Docker主机:该组件包含 Docker守护程序、Docker镜像和 Docker容器。守护进程建立到 Docker Registry的连接。
Docker Registry:该组件存储 Docker镜像。它可以是公共注册表,例如 Docker Hub或 Docker Cloud,也可以是私有注册表。
10.虚拟化和容器化有什么区别?
虚拟化
虚拟化帮助我们在单个物理服务器上运行和托管多个操作系统。在虚拟化中,管理程序为客户操作系统提供了一个虚拟机。VM形成了硬件层的抽象,因此主机上的每个 VM都可以充当物理机。
容器化
容器化为我们提供了一个独立的环境来运行我们的应用程序。我们可以在单个服务器或 VM上使用相同的操作系统部署多个应用程序。容器构成了应用层的抽象,所以每个容器代表一个不同的应用。
11.管理程序的功能是什么?
管理程序或虚拟机监视器是帮助我们创建和运行虚拟机的软件。它使我们能够使用单个主机来支持多个来宾虚拟机。它通过划分主机的系统资源并将它们分配给已安装的来宾环境来实现这一点。可以在单个主机操作系统上安装多个操作系统。有两种类型的管理程序:
Native:本机管理程序或裸机管理程序,直接在底层主机系统上运行。它使我们可以直接访问主机系统的硬件,并且不需要基本服务器操作系统。
托管:托管管理程序使用底层主机操作系统。
12.如何构建Dockerfile?
为了使用我们概述的规范创建映像,我们需要构建一个 Dockerfile。要构建 Dockerfile,我们可以使用以下docker build命令:
$ docker build
13.使用什么命令将新镜像推送到 Docker Registry?
要将新镜像推送到 Docker Registry,我们可以使用以下docker push命令:
$ docker push myorg/img
14.什么是Docker引擎?
Docker Engine是一种开源容器化技术,我们可以使用它来构建和容器化我们的应用程序。Docker Engine由以下组件支持:
Docker引擎 REST API
Docker命令行界面(CLI)
Docker守护进程
15.如何访问正在运行的容器?
要访问正在运行的容器,我们可以使用以下命令:
$ docker exec-it bash
16.如何列出所有正在运行的容器?
要列出所有正在运行的容器,我们可以使用以下命令:
$ docker ps
17.Docker运行在哪些平台上?
Docker在以下 Linux发行版上运行:
CentOS 6+
Gentoo
ArchLinux
CRUX 3.0+
openSUSE 12.3+
RHEL 6.5+
Fedora 19/20+
Ubuntu 12.04、13.04
Docker还可以通过以下云服务在生产中使用:
微软Azure
谷歌计算引擎
亚马逊 AWS EC2
亚马逊 AWS ECS
机架空间
提示:我们始终建议您在面试之前进行一些公司研究。要为这个特定问题做准备,请了解公司如何使用 Docker并在您的答案中包含他们使用的平台。
18.什么是Docker对象标签?
Docker对象标签是存储为字符串的键值对。它们使我们能够将元数据添加到 Docker对象,例如容器、网络、本地守护进程、图像、Swarm节点和服务。
19.使用Docker Compose时如何保证容器1先于容器2运行?
Docker Compose在继续下一个容器之前不会等待容器准备就绪。为了控制我们的执行顺序,我们可以使用“取决于”条件,depends_on。这是在 docker-compose.yml文件中使用的示例:
version:"2.4"
services:
backend:
build:.
depends_on:
- db
db:
image: postgres
该docker-compose up命令将按照我们指定的依赖顺序启动和运行服务。
20.docker create命令有什么作用?
该docker create命令在指定映像上创建可写容器层,并准备该映像以运行指定命令。
如何借助Salt Cloud配置AWS EC2实例
SaltStack项目于2011年启动。我们在2013年8月首次刊文介绍SaltStack;就在同一年,在拥有最多“关闭的问题”(issues closed)和“合并拉拽请求”(merged pull request)类别的所有公共软件库当中,GitHub的Octoverse在saltstack/salt软件库中名列第三。
2013年11月8日,Salt Cloud被并入到主Salt软件库,成为SaltStack 2014.1.0 Hydrogen版本的一部分。
Salt Cloud这款工具可以用来配置和管理得到支持的云服务提供商内部和之间的云服务器。比如说,系统管理员通过使用Salt Cloud配置的单个节点,就可以配置位于亚马逊网络服务(AWS)美国西海岸地区的五台新的Web服务器,配置位于Rackspace伦敦地区的三台新的应用服务器。
本文介绍了如何借助Salt Cloud配置亚马逊弹性计算云(EC2)实例;文章还介绍了如何使用Salt Cloud的地图(Map)功能,借助单单一个命令,配置几个并行的实例。
不过本文中所用的发行版是CentOS;除了安装方面的一些微小细节外,本文探讨的详细步骤适用于EC2上、可以运行最新版SaltStack的任何发行版。
除了AWS EC2外,SaltStack还支持其他的云服务提供商,比如Digital Ocean、GoGrid、谷歌计算引擎(Google Compute Engine)、OpenStack和Rackspace。功能矩阵列出了一张表,显示了针对每家云服务提供商的支持功能。
来自运行salt-cloud的实例、Salt Cloud命令行工具以及所配置实例的所有交互都通过SSH协议来实现。Salt Cloud不需要Salt Master守护进程。如果你想要使用Salt状态和模块来管理所配置实例,就需要设置Salt Master,这不在本文的探讨范围之内。
安装
salt-cloud命令行工具随作为EPEL一部分的salt-master 2014.1.0 RPM程序包一同发行。它应该可以安装在EC2里面的实例上。
$ yum install salt-master
“SaltStack”团队管理Ubuntu个人软件包存档(PPA),它含有所有最新版本的Ubuntu。Salt还出现在标准的openSUSE 13.1版本中。docs.saltstack.com提供了详尽具体的说明文档,含有说明步骤,介绍了如何针对其他发行版和平台安装Salt。
salt-cloud确实依赖Apache libcloud,这是一种可与30多家云服务提供商兼容的python库。可以使用pip命令,安装稳定版本的apache-libcloud。
$ pip install apache-libcloud
要是没有pip命令,你可能需要先安装python-pip程序包。如果你想把apache-libcloud安装在孤立的Python环境中,首先要检查virtualenv(虚拟环境)。
EC2安全组
salt-cloud配置的每个实例都需要属于至少一个AWS EC2安全组(Security Group),该安全组允许来自端口22/tcp、始发于运行salt-cloud的实例的入站流量。我在之前的一篇文章中已介绍了如何使用awscli工具创建安全组,
$ aws ec2 create-security-group\--group-name MySecurityGroupSaltCloudInstances\--description"The Security Group applied to all salt-cloud instances"$ aws ec2 authorize-security-group-ingress\--group-name MySecurityGroupSaltCloudInstances\--source-group MySecurityGroupSaltCloud\--protocol tcp--port 22
authorize-security-group-ingress命令允许MySecurityGroupSaltCloud安全组里面的任何EC2节点通过端口22/tcp,访问MySecurityGroupSaltCloudInstances里面的其他任何EC2节点。在我的安装环境中,运行salt-cloud的实例属于MySecurityGroupSaltCloud安全组。你需要创建一个安全组,运行salt-cloud的实例将属于该安全组。
EC2密钥对
salt-cloud依赖SSH协议上传和运用salt-bootstrap自动安装脚本。需要针对运行salt-cloud的实例生成SSH公钥和私钥。公钥同样需要上传到AWS EC2,成为密钥对。我在前一篇文章中也介绍了如何实现这一步。
想创建SSH私钥和SSH公钥:
$ ssh-keygen-f/etc/salt/my_salt_cloud_key-t rsa-b 4096$ aws ec2 import-key-pair--key-name my_salt_cloud_key\--public-key-material
Salt Cloud配置文件
Salt Cloud配置文件(Profile)为一组将由salt-cloud配置和管理的salt minion定义了一些基本的配置项。
在下面的/etc/salt/cloud.profiles文件里面,我已创建了一个配置文件,名为base_ec2_private;该配置文件使用我将在接下来定义的my_ec2_ap_southeast_2_private_ips提供商。我需要指定的另外唯一一个选项是minion将运行的那个映像的亚马逊机器映像(AMI) ID。ami-e7138ddd是CentOS.org发行、在AWS ap-southeast-2区域里面可用的CentOS 6.5映像的AMI ID。
base_ec2_private: provider: my_ec2_ap_southeast_2_private_ips image: ami-e7138ddd
Salt Cloud提供商
salt-cloud提供商定义了AWS EC2实例使用的一系列属性。
下面是我用来定义my_ec2_ap_southeast_2_private_ips提供商的/etc/salt/cloud.providers文件。该提供商被我的my base_ec2_private配置文件所使用。
my_ec2_ap_southeast_2_private_ips:
# salt-cloud应连接到的IP地址 ssh_interface: private_ips# AWS登录信息 id:@AWS_ACCESS_KEY_ID@ key:'@AWS_SECRET_ACCESS_KEY@'# SSH密钥 keyname: my_salt_cloud_key private_key:/etc/salt/my_salt_cloud_key# AWS位置 location: ap-southeast-2 availability_zone: ap-southeast-2a# AWS安全组 securitygroup: MySecurityGroupSaltCloudInstances# AWS AMI size: Micro Instance# minion被销毁后,删除AWS根卷 del_root_vol_on_destroy: True#本地用户 ssh_username: root#一旦销毁,就更名 rename_on_destroy: True provider: ec2
我定义了用@符号封装的几个属性,它们需要上传,以适合你的环境。
@AWS_ACCESS_KEY_ID@:AWS Access Key ID属于拥有足够EC2权限以配置新实例的IAM帐户。虽然salt-cloud确实支持AWS身份与访问管理(IAM)角色,但它们只适用于所配置的EC2 minion。静态的AWS访问密钥和秘密密钥仍被salt-cloud用来部署minion。
@AWS_SECRET_ACCESS_KEY@:属于AWS Access Key ID的AWS秘密密钥。
创建第一个salt-cloud minion
首先,你可能需要在SSH代理里面设置SSH密钥。
$ eval `ssh-agent`$ ssh-add/etc/salt/my_salt_cloud_key
下一步,调用传递配置文件名称的salt-cloud,其名称与你在/etc/salt/cloud.profiles里面配置的相一致,最后一个参数是新minion的名称。
$ salt-cloud--profile=base_ec2_private my_first_minion
salt-cloud使用SSH代理获取salt-bootstrap自动安装脚本,该脚本会安全地检测minion发行版,安装salt-minion程序包,如果你已设置好salt-master,还可以预先为salt-master提供minion的密钥。
如果成功,我们可以使用salt-cloud查询实例:
$ salt-cloud--action=show_instance my_first_minion
salt-cloud还支持其他操作,比如查询和设定AWS EC2标记:
$ salt-cloud--action=get_tags my_first_minion$ salt-cloud--action=set_tags my_first_minion environment=devel\ role=webserver
我们可以启用和禁用EC2终止保护(Termination Protection):
$ salt-cloud--action=show_term_protect my_first_minion$ salt-cloud--action=enable_term_protect my_first_minion$ salt-cloud--action=disable_term_protect my_first_minion
我们还可以重启minion:
$ salt-cloud--action=reboot my_first_minion
如果你已设置好了salt-master,应该能够通过salt命令行,运行标准的salt模块:
$ salt my_first_minion cmd.run'/sbin/ip address show'
当然了,如果salt-master状态已设置好,你可以运用state.highstate。
$ salt my_first_minion state.highstate
最后,我们可以使用--destroy选项销毁实例:
$ salt-cloud--destroy my_first_minion
Salt Cloud地图
我们前面已探讨了借助salt-cloud配置单个的EC2实例。现在,我们可以延伸开来,使用Slat Cloud地图(Maps),借助单单一个salt-cloud命令,创建多个实例。
在/etc/salt/cloud.map文件里面,我定义了三台都继承base_ec2_private配置文件的Web服务器。
base_ec2_private:- web1_prod- web2_prod- web3_prod
想配置所有三个实例,我只需要传递--map选项连同地图文件的位置。另外包括--parallel,地图里面的所有实例将同时被配置。
$ salt-cloud--map=/etc/salt/cloud.map--parallel
一旦配置完毕,我们就可以借助salt-cloud,查询地图里面的所有实例。
$ salt-cloud--map=/etc/salt/cloud.map--query
想终止地图里面的所有服务器,我们只要传递--destroy选项。
$ salt-cloud--map=/etc/salt/cloud.map–destroy