云服务器内容精选
-
操作步骤 单击资源池名称,进入资源池详情。 单击左侧“配置管理”。 图1 配置管理 在镜像预热中单击编辑图标,填写镜像预热信息。 表1 镜像预热参数 参数名称 说明 镜像来源 可选择“预置”或“自定义”的镜像。 预置:可选择SWR服务上自有的或他人共享的镜像。 自定义:可直接填写镜像地址。 添加镜像密钥 若本租户不具有预热的镜像的权限(即非公开/非本租户私有/非他人共享的镜像),此时需要添加镜像密钥。在开启镜像密钥开关后,选择命名空间及对应密钥。创建密钥方法可参考创建密钥,密钥类型须为kubernetes.io/dockerconfigjson类型。 若需添加多个密钥,可以单击“+”新增密钥数。 添加镜像预热配置 若需添加多个镜像,可单击此按键。 图2 预置镜像预热 图3 预置镜像选择 图4 自定义镜像 预热 创建密钥所需的仓库地址、用户名、密码、可以参考对应租户的SWR登录指令。 图5 创建密钥 图6 登录指令 上图中为临时登录指令,若需长期有效登录指令,可单击图中的“如何获取长期有效指令”链接获取指导。 单击“确认”后,在预热信息框中可以看到已成功预热的镜像信息。 图7 镜像预热成功 若镜像预热失败,请检查镜像地址以及密钥是否正确。
-
迁移方案 表1 迁移方案及适用场景对比 方案类型 适用场景 注意事项 使用docker命令迁移镜像至SWR 待迁移的镜像数量较少 依赖磁盘存储,需要及时进行本地镜像的清理,而且落盘形成多余的时间开销,难以胜任生产场景中大量镜像的迁移。 依赖docker程序,docker daemon对pull/push的并发数进行了严格的限制,没法进行高并发同步。 一些功能只能经过HTTP api进行操作,单纯使用docker cli 没法做到,使脚本变得复杂。 使用image-syncer迁移镜像至SWR 待迁移的镜像数量庞大 支持多对多镜像仓库同步。 支持基于Docker Registry V2搭建的docker镜像仓库服务 (如Docker Hub、Quay、Harbor等)。 同步只通过内存和网络,不依赖磁盘存储,同步速度快。 增量同步, 经过对同步过的镜像blob信息落盘,不重复同步已同步的镜像。 并发同步,能够通过配置文件调整并发数。 自动重试失败的同步任务,能够解决大部分镜像同步中的网络抖动问题。 不依赖 docker 以及其余程序。 使用image-migrator迁移镜像至SWR 待迁移的镜像数量庞大 支持将基于Docker Registry v2搭建的Docker镜像仓库中的镜像迁移到华为云SWR中。 跨云harbor同步镜像至华为云SWR 部分客户存在多云场景,并且使用某一家云上的自建Harbor作为镜像仓库 仅支持 Harbor V1.10.5 及以上版本
-
操作步骤 购买一个CCE集群。 登录CCE控制台。 在购买CCE集群页面配置集群参数,详细请参考创建集群参数配置。 等待集群创建成功。创建成功后在集群管理下会显示一个运行中的集群,且集群节点数量为0。 创建CCE节点。 集群创建成功后,您还需要在集群中创建运行工作负载的节点。CCE节点默认安装了Linux操作系统和Docker。我们可以用它创建基础镜像。 在下面的步骤中,我们将以Centos7.6为例,详细介绍如何创建JDK8基础镜像,并将它上传到SWR。 登录CCE控制台。 单击1中创建的集群,进入集群控制台。 在左侧菜单栏选择节点管理,进入节点页签,单击右上角“创建节点”,在弹框中配置节点的参数。 在网络配置中,选择“自动创建”1个弹性公网IP,带宽为5Mbit/s。 图1 网络配置 单击“下一步: 规格确认”。 查看节点规格无误后,阅读页面上的使用说明,勾选“我已阅读并知晓上述使用说明和《云容器引擎服务声明》”,单击“提交”。 等待节点创建成功。创建成功后在节点管理下会显示一个运行中的节点。 图2 CCE节点示例 下载JDK软件包。 节点创建成功后,单击节点名称,进入云服务器详情页。 在云服务器详情页,单击右上角“远程登录”。 选择一种登录方式,单击“登录”。 以root用户登录弹性云服务器。 新建一个目录image。 mkdir image 进入image目录。 cd image 下载JDK软件包。 wget https://builds.openlogic.com/downloadJDK/openlogic-openjdk/8u352-b08/openlogic-openjdk-8u352-b08-linux-x64.tar.gz 构建一个镜像。 执行vi dockerfile命令,编写一个Dockerfile,并写入以下信息: FROM centos #使用centos作为基础镜像 RUN useradd -d /home/springboot -m springboot #在工作目录下创建一个用户 ADD ./openlogic-openjdk-8u352-b08-linux-x64.tar.gz /home/springboot #拷贝jdk软件包到镜像,并自动解压 RUN chown springboot:springboot /home/springboot/openlogic-openjdk-8u352-b08-linux-x64 -R USER springboot #指定用户为springboot ENV JAVA_HOME=/home/springboot/openlogic-openjdk-8u352-b08-linux-x64 #设置环境变量 ENV PATH=$JAVA_HOME/bin:$PATH \ CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar WORKDIR /home/springboot/ #指定镜像的工作目录 按ESC,输入:wq,保存Dockerfile,并退出编辑。 执行下面的命令,构建一个镜像。 docker build -t openjdk:8 . 使用docker images命令,查看镜像是否构建成功。 图3 查看镜像是否创建成功 登录容器镜像服务控制台,并创建一个组织。 示例:这里我们创建一个名为testawa0306的组织。 上传镜像到5的组织下。 以root用户登录容器镜像服务控制台。 为镜像打标签。 示例如下:docker tag openjdk:8 swr.cn-north-4.myhuaweicloud.com/testawa0306/0penjdk:v8.8 上传镜像到步骤5的组织下。 docker push swr.cn-north-4.myhuaweicloud.com/testawa0306/0penjdk:v8.8 镜像上传成功后,我们可以在容器镜像服务控制台-“我的镜像”中找到刚刚上传成功的镜像。 (可选)镜像上传成功后,您可以使用已上传的镜像在CCE中部署工作负载。
-
是否支持跨区域同步镜像? 目前SWR界面仅支持“华北-北京一”、“华北-北京四”、“华北-乌兰察布一”、“华东-上海一”、“华东-上海二”、“华南-广州”、“西南-贵阳一”、“中国-香港”、亚太-曼谷”、“亚太-新加坡”、“非洲-约翰内斯堡”区域同步镜像,其他区域没有此功能。 如果您想把最新推送的镜像同步到其他区域镜像仓库内,您可以先将镜像下载到本地,然后上传到需要同步区域的镜像仓库中。 父主题: 镜像同步
-
步骤三:本地验证 启动docker容器 docker run -u 1003:1003 -p 8000:8000 custom_container_event_example:latest 打开一个新的命令行窗口,向开放的8000端口发送消息,访问模板代码中指定的/init路径 curl -XPOST -H 'Content-Type: application/json' localhost:8000/init 按照模块代码中返回 Hello init 打开一个新的命令行窗口,向开放的8000端口发送消息,访问模板代码中指定的/invoke路径 curl -XPOST -H 'Content-Type: application/json' -d '{"message":"HelloWorld"}' localhost:8000/invoke 按照模块代码中返回 Hello invoke 在容器启动端口可以看到 Listening on http://localhost:8000 receive {} receive { message: 'HelloWorld' } 或者使用docker logs命令获取容器的日志
-
五、上传镜像 在安装容器引擎的虚拟机上执行以下命令,为2048镜像打标签。 docker tag [镜像名称1:版本名称1] [镜像仓库地址]/[组织名称]/[镜像名称2:版本名称2] 其中, [镜像名称1:版本名称1]:请替换为您所要上传的实际镜像的名称和版本名称。 [镜像仓库地址]:可在SWR控制台上查询,四、连接容器镜像服务中登录指令末尾的 域名 即为镜像仓库地址。 [组织名称]:请替换为三、创建组织中创建的组织。 [镜像名称2:版本名称2]:请替换为您期待的镜像名称和镜像版本。 示例: docker tag 2048:latest swr.cn-north-4.myhuaweicloud.com/cloud-develop/2048:v1 上传镜像至镜像仓库。 docker push [镜像仓库地址]/[组织名称]/[镜像名称2:版本名称2] 示例: docker push swr.cn-north-4.myhuaweicloud.com/cloud-develop/2048:v1 终端显示如下信息,表明上传镜像成功。 The push refers to repository [swr.cn-north-4.myhuaweicloud.com/cloud-develop/2048] fbce26647e70: Pushed fb04ab8effa8: Pushed 8f736d52032f: Pushed 009f1d338b57: Pushed 678bbd796838: Pushed d1279c519351: Pushed f68ef921efae: Pushed v1: digest: sha256:0cdfc7910db531bfa7726de4c19ec556bc9190aad9bd3de93787e8bce3385f8d size: 1780 返回SWR管理控制台,在“我的镜像”页面,执行刷新操作后可查看到对应的镜像信息。 镜像上传成功后,你可以使用已上传的镜像在云容器引擎中部署工作负载。
-
一、安装容器引擎 首先,您需要准备一台虚拟机并安装docker容器引擎,请确保容器引擎为1.11.2及以上版本。 参考购买并登录Linux弹性云服务器创建一台带有弹性公网IP的Linux弹性云服务器。 作为演示,弹性云服务器和公网IP的规格不需要太高,例如弹性云服务器的规格为“1vCPUs | 2GB”、公网IP带宽为“1 Mbit/s”即可,操作系统以选择“CentOS 7.5”为例。 您也可以使用其他机器安装容器引擎,不创建弹性云服务器。 如果您使用的操作系统为EulerOS,请参考EulerOS操作系统下安装。 如果您使用的是Centos操作系统,建议选择CentOS7、CentOS7.2、CentOS7.3、CentOS7.4、CentOS7.5、CentOS7.6操作系统版本,否则可能导致安装异常。 创建完成后返回弹性云服务器列表,单击操作列的“远程登录”,以root用户登录弹性云服务器。 使用如下命令快速安装容器引擎。 curl -fsSL get.docker.com -o get-docker.sh sh get-docker.sh sudo systemctl daemon-reload sudo systemctl restart docker
-
入门指引 容器镜像服务是一种支持容器镜像全生命周期管理的服务,提供简单易用、安全可靠的镜像管理功能,帮助用户快速部署容器化服务。本文档以一个2048应用为例,帮助您学习如何安装容器引擎并构建镜像,以及如何使用容器引擎客户端上传镜像到容器镜像仓库。 上传镜像到容器镜像仓库支持两种方式:使用容器引擎客户端和console页面,console页面上传请参见页面上传。 上传镜像暂时没有开放镜像上传的API。 您将按以下流程学习如何使用容器镜像服务。 图1 入门流程
-
二、构建镜像 在安装docker容器引擎的虚拟机上执行以下命令,下载2048应用的源码。 git clone https://gitee.com/jorgensen/2048.git 若提示“git: command not found”表示未安装Git工具,请先安装该工具(可使用yum install git命令)。 下载成功后,进入“2048”目录。 cd 2048 修改Dockerfile文件。 vim Dockerfile FROM nginx COPY . /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] FROM:指定基础镜像nginx。 COPY:将2048源码拷贝到容器内的“/usr/share/nginx/html”目录。 EXPOSE:暴露容器的80端口。 CMD:指定容器运行时的默认命令。 按“Esc”,输入:wq,保存并退出。 使用docker build命令构建镜像。 docker build -t 2048 . 其中, -t表示给镜像加一个标签,也就是给镜像取名,这里镜像名为2048。 . 表示上下文路径,镜像构建命令将该路径下的所有内容打包给容器引擎帮助构建镜像。 执行以下命令,查看已成功构建的2048镜像,版本为默认的latest。 docker images # docker images REPOSITORY TAG IMAGE ID CREATED SIZE 2048 latest 8d421c503ed0 About a minute ago 134MB nginx latest dd34e67e3371 6 days ago 133MB 您还可以看到一个nginx镜像,这个镜像是从镜像仓库下载下来,作为2048镜像的基础镜像使用的。 (可选)运行容器镜像。 镜像构建成功后,您可以执行docker run命令运行容器镜像。 docker run -p 8080:80 2048 docker run命令会启动一个容器,命令中-p是将虚拟机的8080端口映射到容器的80端口,即虚拟机的8080端口的流量会映射到容器的80端口,当您在本地机器的浏览器访问“http://E CS 的弹性公网IP:8080”时,就会访问到容器中,此时浏览器返回的内容就是2048应用页面。
-
问题描述 假设在本地Docker客户端上制作了一个nginx镜像,版本号为v5,使用docker images命令查询SIZE为22.8MB: $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx v5 22f2bf2e2b4f 9 days ago 22.8MB 通过客户端(即执行docker push命令)上传该镜像至SWR镜像仓库,查询大小为9.5MB。 在本地Docker客户端将镜像打包为tar格式,将nginx.tar下载至本地后,通过页面方式上传至SWR镜像仓库,查询大小为23.2MB。 可以发现,通过客户端和页面上传的镜像大小不一样。
-
操作步骤 根据所需要的环境拉取镜像。 拉取Ascend+PyTorch镜像: # 配套Snt9b的容器镜像,包含pytorch 1.11 + mindspore-lite 2.2.0 + Ascend CANN Toolkit 7.0.1 docker pull swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_1_11_ascend:pytorch_1.11.0-cann_7.0.1-py_3.9-euler_2.10.7-aarch64-snt9b-20231107190844-50a1a83 拉取Ascend+Mindspore镜像: # 配套Snt9b的容器镜像,包含mindspore 2.2.0 + mindspore-lite 2.2.0 + Ascend CANN Toolkit 7.0.1 docker pull swr.cn-southwest-2.myhuaweicloud.com/atelier/mindspore_2_2_ascend:mindspore_2.2.0-cann_7.0.1-py_3.9-euler_2.10.7-aarch64-snt9b-20231107190844-50a1a83 启动容器镜像,注意多人多容器共用机器时,需要将卡号做好预先分配,不能使用其他容器已使用的卡号: # 启动容器,请注意指定容器名称、镜像信息。ASCEND_VISIBLE_DEVI CES 指定容器要用的卡,0-1,3代表0 1 3这3块卡,-用于指定范围 # -v /home:/home_host是指将宿主机home目录挂载到容器home_host目录,建议在容器中使用该挂载目录进行代码和数据的存储以便持久化 docker run -itd --cap-add=SYS_PTRACE -e ASCEND_VISIBLE_DEVICES=0 -v /home:/home_host -p 51234:22 -u=0 --name 自定义容器名称 上一步拉取的镜像SWR地址 /bin/bash 进入容器: docker exec -ti 上一命令中的自定义容器名称 bash 进入conda环境: source /home/ma-user/.bashrc cd ~ 查看容器中可以使用的卡信息: npu-smi info 如果命令报如下错误,则代表容器启动时指定的“ASCEND_VISIBLE_DEVICES”卡号已被其他容器占用,此时需要重新选择卡号并重新启动新的容器。 图1 报错信息 npu-smi info检测正常后,可以执行一段命令进行简单的容器环境测试,能正常输出运算结果代表容器环境正常可用。 pytorch镜像测试: python3 -c "import torch;import torch_npu; a = torch.randn(3, 4).npu(); print(a + a);" mindspore镜像测试: # 由于mindspore的run_check程序当前未适配Snt9B,需要先设置2个环境变量才能测试 unset MS_GE_TRAIN unset MS_ENABLE_GE python -c "import mindspore;mindspore.set_context(device_target='Ascend');mindspore.run_check()" # 测试完需要恢复环境变量,实际跑训练业务的时候需要用到 export MS_GE_TRAIN=1 export MS_ENABLE_GE=1 图2 进入conda环境并进行测试
-
使用特定的标签 当镜像没有指定标签时,将默认使用latest标签。因此,FROM ubuntu指令等同于FROM ubuntu:latest。当镜像更新时,latest标签会指向不同的镜像,这时构建镜像有可能失败。 如下示例中使用16.04作为标签。 FROM ubuntu:16.04 RUN apt-get update && apt-get install -y nodejs ADD . /app RUN cd /app && npm install CMD npm start
-
删除多余文件 假设更新了apt-get源,下载解压并安装了一些软件包,它们都保存在“/var/lib/apt/lists/”目录中。 但是,运行应用时Docker镜像中并不需要这些文件。因此最好将它们删除,因为它会使Docker镜像变大。 示例Dockerfile中,删除“/var/lib/apt/lists/”目录中的文件。 FROM ubuntu:16.04 RUN apt-get update \ && apt-get install -y nodejs \ && rm -rf /var/lib/apt/lists/* ADD . /app RUN cd /app && npm install CMD npm start
-
选择合适的基础镜像 在示例中,选择了ubuntu作为基础镜像。但是只需要运行node程序,没有必要使用一个通用的基础镜像,node镜像应该是更好的选择。 更好的选择是alpine版本的node镜像。alpine是一个极小化的Linux发行版,只有4MB,这让它非常适合作为基础镜像。 FROM node:7-alpine ADD . /app RUN cd /app && npm install CMD npm start
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格