云服务器内容精选
-
迁移方案 表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界面仅支持“华北-北京一”、“华北-北京四”、“华北-乌兰察布一”、“华东-上海一”、“华东-上海二”、“华南-广州”、“西南-贵阳一”、“中国-香港”、亚太-曼谷”、“亚太-新加坡”、“非洲-约翰内斯堡”区域同步镜像,其他区域没有此功能。 如果您想把最新推送的镜像同步到其他区域镜像仓库内,您可以先将镜像下载到本地,然后上传到需要同步区域的镜像仓库中。 父主题: 镜像同步
-
入门指引 容器镜像服务是一种支持容器镜像全生命周期管理的服务,提供简单易用、安全可靠的镜像管理功能,帮助用户快速部署容器化服务。本文档以一个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应用页面。
-
五、上传镜像 在安装容器引擎的虚拟机上执行以下命令,为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
-
问题描述 假设在本地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。 可以发现,通过客户端和页面上传的镜像大小不一样。
-
设置WORKDIR和CMD WORKDIR指令可以设置默认目录,也就是运行RUN / CMD / ENTRYPOINT指令的地方。 CMD指令可以设置容器创建时执行的默认命令。另外,您应该将命令写在一个数组中,数组中每个元素为命令的每个单词。 FROM node:7-alpine WORKDIR /app ADD . /app RUN npm install CMD ["npm", "start"]
-
不要在构建中升级版本 为了降低复杂性、减少依赖、减小文件大小、节约构建时间,您应该避免安装任何不必要的包。例如,不要在数据库镜像中包含一个文本编辑器。 如果基础镜像中的某个包过时了,但您不知道具体是哪一个包,您应该联系它的维护者。如果您确定某个特定的包,比如foo需要升级,使用apt-get install -y foo就行,该指令会自动升级foo包。 apt-get upgrade会使得镜像构建过程非常不稳定,在构建时不确定哪些包会被安装,此时可能会产生不一致的镜像。因此通常会删掉apt-get upgrade。 删掉apt-get upgrade后,Dockerfile如下: FROM ubuntu ADD . /app RUN apt-get update RUN apt-get install -y nodejs RUN cd /app && npm install CMD npm start
-
设置默认的环境变量、映射端口和数据库逻辑卷 运行Docker容器时很可能需要一些环境变量。在Dockerfile设置默认的环境变量是一种很好的方式。另外,应该在Dockerfile中设置映射端口和数据库逻辑卷。示例如下: FROM node:7-alpine ENV PROJECT_DIR=/app WORKDIR $PROJECT_DIR COPY package.json $PROJECT_DIR RUN npm install COPY . $PROJECT_DIR ENTRYPOINT ["./entrypoint.sh"] CMD ["start"] ENV指令指定的环境变量在容器中可以使用。如果您只是需要指定构建镜像时的变量,您可以使用ARG指令。
-
使用EXPOSE暴露端口 EXPOSE指令用于指定容器将要监听的端口。因此,您应该为您的应用程序使用常见的端口。例如,提供Apache web服务的镜像应该使用EXPOSE 80,而提供MongoDB服务的镜像使用EXPOSE 27017。 对于外部访问,用户可以在执行docker run时使用一个标志来指示如何将指定的端口映射到所选择的端口。 FROM node:7-alpine ENV PROJECT_DIR=/app WORKDIR $PROJECT_DIR COPY package.json $PROJECT_DIR RUN npm install COPY . $PROJECT_DIR ENV APP_PORT=3000 EXPOSE $APP_PORT ENTRYPOINT ["./entrypoint.sh"] CMD ["start"]
-
一个容器只运行一个进程 从技术角度讲,Docker容器中可以运行多个进程,您可以将数据库、前端、后端、ssh等都运行在同一个Docker容器中。但是,这样跟未使用容器前没有太大区别,且这样容器的构建时间非常长(一处修改就要构建全部),镜像体积大,横向扩展时非常浪费资源(不同的应用需要运行的容器数并不相同)。 通常所说的容器化改造是对应用整体微服务进行架构改造,改造后,再容器化。这样做可以带来如下好处: 单独扩展:拆分为微服务后,可单独增加或缩减每个微服务的实例数量。 提升开发速度:各微服务之间解耦,某个微服务的代码开发不影响其他微服务。 通过隔离确保安全:整体应用中,若存在安全漏洞,一旦被攻击,所有功能的权限都可能会被窃取。微服务架构中,若攻击了某个服务,只可获得该服务的访问权限,无法入侵其他服务。 提升稳定性:如果其中一个微服务崩溃,其他微服务还可以持续正常运行。 因此,上述企业门户网站可以进行如下改造,Web应用和MySQL运行在不同容器中。 MySQL运行在独立的镜像中,这样的好处就是,可以对它们分别进行修改,且不会牵一发而动全身。如下面这个例子所示,可以删除MySQL,只安装node.js。 FROM ubuntu ADD . /app RUN apt-get update RUN apt-get upgrade -y RUN apt-get install -y nodejs RUN cd /app && npm install CMD npm start
-
合理调整COPY与RUN的顺序 将变化最少的部分放在Dockerfile的前面,这样可以充分利用镜像缓存。 示例中,源代码会经常变化,则每次构建镜像时都需要重新安装NPM模块,这显然不是希望看到的。因此可以先拷贝package.json,然后安装NPM模块,最后才拷贝其余的源代码。这样的话,即使源代码变化,也不需要重新安装NPM模块。 FROM node:7-alpine WORKDIR /app COPY package.json /app RUN npm install COPY . /app ENTRYPOINT ["./entrypoint.sh"] CMD ["start"]
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格