云服务器内容精选

  • 操作步骤 登录容器镜像服务控制台。 在左侧导航栏选择“我的镜像”,单击右侧镜像名称。 在镜像详情页面单击右上角“镜像自动同步”。 单击图标,选择目标区域和目标组织,然后单击“确定”完成添加。 图1 添加镜像自动同步 目标区域:选择同步的目标区域,例如“华北-北京一”。 目标组织:选择同步的目标组织。 覆盖: 勾选则表示覆盖,同步相同名称相同版本的镜像时,同步后会替换已有的镜像版本。 不勾选则表示不覆盖,同步相同名称相同版本的镜像时,会取消同步并提示已存在相同版本镜像。 在镜像详情页面的“镜像同步记录”页签下,可查看镜像同步启动时间、镜像版本、状态、同步类型、同步耗时等。
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 members Array of ListImageMembersView objects 镜像成员详情 表4 ListImageMembersView 参数 参数类型 描述 create_time Long 共享时间 update_time Long 更新时间 image_id String 镜像ID member_id String 被共享账号的PROJECT_ID
  • 响应示例 状态码: 200 OK { "members" : [ { "image_id" : "23030320230421e300221a2000004167", "member_id" : "87dc6af96095488d9205b6f31f314b16", "create_time" : 1713320018058, "update_time" : 1713320018058 }, { "image_id" : "23030320230421e300221a2000004167", "member_id" : "6733a7ad58694af18c7ee4820052d63f", "create_time" : 1713083265307, "update_time" : 1713083265307 } ] }
  • 使用Helm客户端上传及下载Helm Chart 安装Helm客户端 本文以在Linux操作系统的节点上安装为例,如在其他平台安装请下载对应安装包。 依次执行以下命令,下载并安装Helm客户端。关于安装Helm的更多信息,请参见Installing Helm。 curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh “get_helm.sh”脚本会自动拉取最新的Helm版本进行安装,如需安装其他版本,请从官方下载需要的Helm版本。 推送Helm Chart 安装Helm Push插件。 在安装Helm Push插件前,需要预先安装Git。 helm plugin install https://github.com/chartmuseum/helm-push 在节点上执行如下命令,创建一个Chart。 helm create [Chart名称] 示例:helm create chart-demo 执行如下命令,推送指定目录至Chart仓库。 helm push [Chart名称] [本地仓库名称] 示例: helm push chart-demo group 您还可以将Chart文件打包为tgz压缩包,然后直接上传。 helm push [Chart名称]-[Chart版本].tgz [本地仓库名称] 示例: tar zcvf chart-demo-1.0.0.tgz chart-demo/ # 压缩Chart文件 helm push chart-demo-1.0.0.tgz group # 上传Chart压缩包 下载Helm Chart 在节点上执行如下命令,更新本地仓库Chart信息。 helm repo update 下载指定版本Chart。 helm pull [本地仓库名称]/[Chart名称] --version [Chart版本] 示例: helm pull group/chart-demo --version 1.0.0
  • 背景信息 Kubernetes提供了统一模式的API,能以YAML格式的文件定义Kubernetes集群中的资源,包括Pod、Service、Deployment、StatefulSet、Job等等。这些资源种类繁多,且分散的kubernetes应用配置文件难以管理、编辑和更新,因此云原生社区衍生了一个更高维度的概念及其实现工具,即Chart和Helm。 Chart是描述相关的一组Kubernetes集群内资源的文件集合。 Helm是一个命令行程序,用于管理这些Chart,以及其运行态Release。 容器镜像服务企业版支持Helm客户端实现Chart的上传和下载。
  • URI GET /v1/{project_id}/eihealth-projects/{eihealth_project_id}/images 表1 路径参数 参数 是否必选 参数类型 描述 eihealth_project_id 是 String 平台项目ID,您可以在平台单击所需的项目名称,进入项目设置页面查看。 最小长度:1 最大长度:128 project_id 是 String 华为云项目ID,您可以从获取项目ID中获取。 最小长度:1 最大长度:128 表2 Query参数 参数 是否必选 参数类型 描述 type 否 String 镜像类型 name 否 String 镜像名称 最小长度:1 最大长度:128 show_empty 否 Boolean 是否展示无镜像版本的镜像 缺省值:true
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 count Integer 镜像总数 images Array of ImageDetailRsp objects 镜像详情列表 表5 ImageDetailRsp 参数 参数类型 描述 name String 镜像名称 id String 镜像ID type String 镜像类型 chip_type String 镜像芯片类型 description String 镜像描述 tags Array of strings 镜像版本列表 create_time String 镜像创建时间 update_time String 镜像更新时间 source_project_name String 源项目名称 source_project_id String 源项目id source_resource_id String 源资源id
  • 响应示例 状态码: 200 OK { "count" : 1, "images" : [ { "name" : "demoimage", "id" : "d4fc37ee-831d-4f64-afca-e2fd05f0824d", "type" : "APP", "chip_type" : "X86", "description" : "description", "tags" : [ "v1.1" ], "create_time" : "2021-01-21T10:54:06Z", "update_time" : "2021-01-21T10:54:06Z", "source_project_name" : "demo-project", "source_project_id" : "d57g37ee-831d-4f64-afca-e2fd05f0824d", "source_resource_id" : "5f40782b-3804-4684-a009-253265dd4592" } ] }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限,获取Token接口响应消息头中X-Subject-Token的值即为Token。 最小长度:1 最大长度:32768 表3 请求Body参数 参数 是否必选 参数类型 描述 asset_id 是 String 镜像资产ID 最小长度:1 最大长度:128 version 是 String 镜像资产版本 最小长度:1 最大长度:128
  • 请求示例 订阅镜像,选取指定资产和版本订阅 https://eihealth.cn-north-4.myhuaweicloud.com/v1/{project_id}/eihealth-projects/{eihealth_project_id}/images/subscribe { "asset_id" : "08f4ae64-6ade-47be-bb6a-a6d34365cfb5", "version" : "v1.0" }
  • URI POST /v1/{project_id}/eihealth-projects/{eihealth_project_id}/images/subscribe 表1 路径参数 参数 是否必选 参数类型 描述 eihealth_project_id 是 String 平台项目ID,您可以在平台单击所需的项目名称,进入项目设置页面查看。 最小长度:1 最大长度:128 project_id 是 String 华为云项目ID,您可以从获取项目ID中获取。 最小长度:1 最大长度:128
  • Dockerfile基本语法 FROM 指定待扩展的父级镜像(基础镜像)。除了注释以外,在文件的开头必须是一个FROM指令,后面的指令便在这个父级镜像的环境中运行,直到遇到下一个FROM指令。通过添加多个FROM命令,可以在同一个Dockerefile文件中创建多个镜像。 MAINTAINER 声明创建镜像的作者信息:用户名、邮箱,非必须参数。 RUN 用来修改镜像的命令,常用来安装库、程序以及配置程序。一条RUN指令执行完毕后,会在当前镜像上创建一个新的镜像层,接下来的指令会在新的镜像上继续执行。 RUN 语句具有以下形式。 RUN yum update:在/bin/sh路径中执行的指令命令。 RUN ["yum", "update"]:直接使用系统调用exec来执行。 RUN yum update && yum install nginx:使用&&符号将多条命令连接在同一条RUN语句中。 EXPOSE 用来指明容器内进程对外开放的端口,多个端口之间使用空格隔开。运行容器时,通过参数-P(大写)即可将EXPOSE里所指定的端口映射到主机上另外的随机端口,其他容器或主机就可以通过映射后的端口与此容器通信。您也可以通过-p(小写)参数将Dockerfile中EXPOSE中没有列出的端口设置成公开的。 COPY 将本地的文件或目录复制到镜像中。 ADD 向新镜像中添加文件,这个文件可以是主机文件、网络文件或文件夹。 第一个参数:源文件(夹)。 如果是相对路径,必须是相对于Dockerfile所在目录的相对路径。 如果是URL,会将文件先下载下来,然后再添加到镜像里。 第二个参数:目标路径。 如果源文件是主机上的zip或者tar形式的压缩文件,Docker会先解压缩,然后将文件添加到镜像的指定位置。 如果源文件是一个通过URL指定的网络压缩文件,则不会解压。 VOLUME 在镜像里创建一个指定路径(文件或文件夹)的挂载点,这个容器可以来自主机或者其它容器。多个容器可以通过同一个挂载点共享数据,即便其中一个容器已经停止,挂载点也仍然可以访问。 WORKDIR 为接下来执行的指令指定一个新的工作目录,这个目录可以使绝对目录,也可以是相对目录。根据需要,WORKDIR可以被多次指定。当启动一个容器时,最后一条WORKDIR指令所指的目录将作为容器运行的当前工作目录。 ENV 设置容器运行的环境变量。在运行容器的时候,通过设置-e参数可以修改这个环境变量值,也可以添加新的环境变量。 例如: docker run -e WEBAPP_PORT=8000 -e WEBAPP_HOST=www.example.com ... CMD 用来设置启动容器时默认运行的命令。 ENTRYPOINT 用来指定容器启动时的默认运行的命令,与CMD类似。区别在于:运行容器时添加在镜像之后的参数,对ENTRYPOINT是拼接,CMD是覆盖。 若在DockerFile中指定了容器启动时的默认运行命令为ls -l,则运行容器时默认启动命令为ls -l。 ENTRYPOINT [ "ls", "-l"]:指定容器启动时的程序及参数为ls -l。 docker run centos:当运行centos容器时,默认执行的命令是docker run centos ls -l。 docker run centos -a:当运行centos容器时拼接了-a参数,则默认运行的命令是docker run centos ls -l -a。 若在DockerFile中指定了容器启动时的默认运行命令为--entrypoint,则在运行容器时若需要替换默认运行命令,可以通过添加--entrypoint参数来替换Dockerfile中的指定。 docker run gutianlangyu/test --entrypoint echo "hello world" USER 为容器的运行及RUN、CMD、ENTRYPOINT等指令的运行指定用户或UID。 ONBUILD 触发器指令。构建镜像时,Docker的镜像构建器会将所有的ONBUILD指令指定的命令保存到镜像的元数据中,这些命令在当前镜像的构建过程中并不会执行。只有新的镜像使用FROM指令指定父镜像为当前镜像时,才会触发执行。 使用FROM以这个Dockerfile构建出的镜像为父镜像,构建子镜像时: ONBUILD ADD . /app/src:自动执行ADD . /app/src
  • 快照方式制作镜像 如果后续镜像没有变化,可通过快照方式制作镜像。 快照方式制作镜像示例: 本示例中使用华为云弹性云服务器服务(ECS)创建一台云服务器,并使用快照方式制作bwa镜像。 购买弹性云服务器。 云服务器创建成功后,在云服务器列表页,选中待登录的弹性云服务器。单击“远程登录”,输入ECS初始账号,登录ECS。 图1 云服务器列表 安装容器引擎。 启动一个空白的基础容器,并进入容器。 例如,启动一个CentOS容器。 docker run -it centos 安装依赖包。 yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm yum -y install git yum -y install gcc automake autoconf libtool make yum install -y zlib zlib-devel 安装bwa软件,在github上下载bwa的源代码,并使用make编译。 yum install bwa git clone https://github.com/lh3/bwa.git cd bwa;make 请预先安装好Git,并检查本机是否有ssh key设置。 输入exit退出容器。 查询容器id。 docker ps -a 制作快照。 docker commit -m "xx" -a "tsj" container-id tsj/image:tag 例如:docker commit -m "test" -a "username" adb1127979a1 bwa:v0.7 -a:提交的镜像作者,例如tsj。 container-id:容器id。 -m:提交时的说明文字,例如xx。 tsj/image:tag:仓库名/镜像名:TAG名,名称可自定义。 执行docker images命令查看制作完成的Docker镜像。
  • 上传镜像 准备一台计算机,需满足如下要求: 安装的容器引擎版本必须为1.11.2及以上。 这台计算机已在访问控制中定义的公网或内网允许访问范围内。 以root用户登录这台计算机。 使用访问凭证创建的访问凭证获取的镜像访问凭证登录镜像仓库。 登录成功会显示“Login Succeeded”。 执行以下命令为镜像打标签。 docker tag [镜像名称1:版本名称1] [镜像仓库地址]/[命名空间名称]/[镜像名称2:版本名称2] 其中: [镜像名称1:版本名称1]请替换为您所要上传的实际镜像的名称和版本名称。 [镜像仓库地址]为仓库的访问地址,获取方式如下: 登录容器镜像服务控制台,单击左侧菜单栏“企业版”,然后单击仓库名称进入仓库详情页面,在“总览”页面获取访问地址,如图1所示。 图1 访问地址 [命名空间名称]请替换为您在创建命名空间中创建的命名空间。 [镜像名称2:版本名称2]请替换为您期待的镜像名称和版本名称。 样例如下: docker tag nginx:latest test-01-2v8iom.swr.cn-east-3.myhuaweicloud.com/library/nginx:1.1.1 上传镜像至镜像仓库。 docker push [镜像仓库地址]/[命名空间名称]/[镜像名称:版本名称] 样例如下: docker push test-01-2v8iom.swr.cn-east-3.myhuaweicloud.com/library/nginx:1.1.1 终端显示如下信息,表明上传镜像成功。 fbce26647e70: Pushed fb04ab8effa8: Pushed 8f736d52032f: Pushed 009f1d338b57: Pushed 678bbd796838: Pushed d1279c519351: Pushed f68ef921efae: Pushed v1: digest: sha256:0cdfc7910db531bfa7726de4c19ec556bc9190aad9bd3de93787e8bce3385f8d size: 1780 在仓库详情页面“镜像管理 ”中可查看到对应的镜像信息。 镜像上传以后,您可以在CCE控制台创建工作负载。
  • 镜像仓库其他操作 搜索镜像 支持根据命名空间和镜像名称搜索镜像。 图3 搜索镜像 删除镜像 单击镜像所在行的“删除”即可删除镜像。为避免您误删重要数据,删除镜像时需要输入DELETE进行二次确认。 删除镜像会同时删除镜像下的所有版本,请谨慎操作。 删除镜像版本 单击镜像名称进入镜像详情,在镜像版本所在行单击“删除”即可删除镜像版本。为避免您误删重要数据,删除镜像版本时需要输入DELETE进行二次确认。