云服务器内容精选
-
操作步骤 下载image-syncer到执行机上,解压并运行工具。 以v1.3.1版本为例,您也可以选择其他版本。 wget https://github.com/AliyunContainerService/image-syncer/releases/download/v1.3.1/image-syncer-v1.3.1-linux-amd64.tar.gz tar -zvxf image-syncer-v1.3.1-linux-amd64.tar.gz 创建镜像仓库的认证信息文件auth.json。 image-syncer支持基于Docker Registry V2搭建的docker镜像仓库,按格式填写即可。将源仓库及目标仓库认证信息写入,示例如下。 { "swr.××××.myhuaweicloud.com": { "username": "××××@F1I3Q……", "password": "2fd4c869ea0……" }, "swr.××××.myhuaweicloud.com": { "username": "××××@4N3FA……", "password": "f1c82b57855f9d35……" } 其中swr.××××.myhuaweicloud.com 为镜像仓库地址,username、password可以在登录命令中获取,获取方法如下: 登录SWR控制台,在总览页面右上角单击“登录指令”,在弹出的窗口中获取登录指令,如下图所示。 图1 登录指令 创建同步镜像描述文件images.json。 如下示例,左边是源仓库的地址,右边是目的仓库地址。image-syncer还支持其他描述方式,具体请参见README-zh_CN.md。 { "swr.cn-north-4.myhuaweicloud.com/org-ss/canary-consumer": "swr.cn-east-3.myhuaweicloud.com/dev-container/canary-consumer" } 执行如下命令将镜像迁移至SWR。 ./image-syncer --auth=./auth.json --images=./images.json --namespace=dev-container --registry=swr.cn-east-3.myhuaweicloud.com --retries=3 --log=./log 表1 命令行参数说明 参数 说明 --config 设置用户提供的配置文件路径,使用之前需要创建此文件,默认为当前工作目录下的config.json文件。这个参数与 --auth和--images 的作用相同,分解成两个参数可以更好地区分认证信息与镜像仓库同步规则。建议使用 --auth 和 --images。 --images 设置用户提供的镜像同步规则文件所在路径,使用之前需要创建此文件,默认为当前工作目录下的images.json文件。 --auth 设置用户提供的认证文件所在路径,使用之前需要创建此认证文件,默认为当前工作目录下的auth.json文件。 --log 打印出来的log文件路径,默认打印到标准错误输出,如果将日志打印到文件将不会有命令行输出,此时需要通过cat对应的日志文件查看。 --namespace 设置默认的目标namespace,当配置文件内一条images规则的目标仓库为空,并且默认registry也不为空时有效,可以通过环境变量DEFAULT_NAMESPACE设置,同时传入命令行参数会优先使用命令行参数值。 --proc 并发数,进行镜像同步的并发goroutine数量,默认为5。不建议修改该参数。 --retries 失败同步任务的重试次数,默认为2,重试会在所有任务都被执行一遍之后开始,并且也会重新尝试对应次数生成失败任务的生成。一些偶尔出现的网络错误比如io timeout、TLS handshake timeout,都可以通过设置重试次数来减少失败的任务数量。 --registry 设置默认的目标registry,当配置文件内一条images规则的目标仓库为空,并且默认namespace也不为空时有效,可以通过环境变量DEFAULT_REGISTRY设置,同时传入命令行参数会优先使用命令行参数值。 迁移命令执行后,可登录目标镜像仓库,查看已迁移的镜像。
-
操作步骤 从源仓库下载镜像。 使用docker pull命令下载镜像。 示例:docker pull nginx:latest 使用docker images命令查看是否下载成功。 # docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 22f2bf2e2b4f 5 hours ago 22.8MB 将步骤1中下载的镜像上传到SWR。 登录到目标端容器所在虚拟机,并登录SWR。详细步骤请参考客户端上传镜像。 给镜像打标签。 docker tag [镜像名称:版本名称] [镜像仓库地址]/[组织名称]/[镜像名称:版本名称] 示例: docker tag nginx:v1 swr.cn-east-3.myhuaweicloud.com/cloud-develop/nginx:v1 上传镜像至目标镜像仓库。 docker push [镜像仓库地址]/[组织名称]/[镜像名称:版本名称] 示例: docker push swr.cn-east-3.myhuaweicloud.com/cloud-develop/nginx:v1 终端显示如下信息,表明上传镜像成功。 The push refers to repository [swr.cn-east-3.myhuaweicloud.com/cloud-develop/nginx:v1] fbce26647e70: Pushed fb04ab8effa8: Pushed 8f736d52032f: Pushed 009f1d338b57: Pushed 678bbd796838: Pushed d1279c519351: Pushed f68ef921efae: Pushed v1: digest: sha256:0cdfc7910db531bfa7726de4c19ec556bc9190aad9bd3de93787e8bce3385f8d size: 1780 返回 容器镜像服务 控制台,在“我的镜像”页面,执行刷新操作后可查看到对应的镜像信息。
-
迁移方案 表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 及以上版本
-
应用现状 随着容器化技术的发展,越来越多的企业使用容器代替了虚拟机完成应用的运行部署。目前许多企业选择自建Kubernetes集群,但是自建集群往往有着沉重的运维负担,需要运维人员自己配置管理系统和监控解决方案。企业自运维大批镜像资源,意味着要付出高昂的运维、人力、管理成本,且效率不高。 容器 镜像服务 支持Linux、ARM等多架构容器镜像托管。企业可以将镜像仓库迁移到容器镜像服务,节省运维成本。 如何把已有的镜像仓库平滑地迁移到容器镜像服务?这里将介绍4种常见的方案,用户可以根据自己的实际使用场景来选择。
-
操作步骤 购买一个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界面仅支持“华北-北京一”、“华北-北京四”、“华北-乌兰察布一”、“华东-上海一”、“华东-上海二”、“华南-广州”、“西南-贵阳一”、“中国-香港”、亚太-曼谷”、“亚太-新加坡”、“非洲-约翰内斯堡”区域同步镜像,其他区域没有此功能。 如果您想把最新推送的镜像同步到其他区域镜像仓库内,您可以先将镜像下载到本地,然后上传到需要同步区域的镜像仓库中。 父主题: 镜像同步
-
五、上传镜像 在安装容器引擎的虚拟机上执行以下命令,为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管理控制台,在“我的镜像”页面,执行刷新操作后可查看到对应的镜像信息。 镜像上传成功后,你可以使用已上传的镜像在云容器引擎中部署工作负载。
-
入门指引 容器镜像服务是一种支持容器镜像全生命周期管理的服务,提供简单易用、安全可靠的镜像管理功能,帮助用户快速部署容器化服务。本文档以一个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容器引擎,请确保容器引擎为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
-
问题描述 假设在本地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。 可以发现,通过客户端和页面上传的镜像大小不一样。
-
使用特定的标签 当镜像没有指定标签时,将默认使用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
-
使用VOLUME管理数据库逻辑卷 VOLUME指令用于暴露任何数据库存储文件、配置文件或容器创建的文件和目录。强烈建议使用VOLUME来管理镜像中的可变部分和用户可以改变的部分。 下面示例中填写一个媒体目录。 FROM node:7-alpine ENV PROJECT_DIR=/app WORKDIR $PROJECT_DIR COPY package.json $PROJECT_DIR RUN npm install COPY . $PROJECT_DIR ENV MEDIA_DIR=/media \ APP_PORT=3000 VOLUME $MEDIA_DIR EXPOSE $APP_PORT ENTRYPOINT ["./entrypoint.sh"] CMD ["start"]
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格