构建镜像并上传镜像仓库
要将已有的应用部署在云容器实例上运行,首先,需要将应用构建镜像并上传镜像仓库,再在云容器实例创建负载时,拉取上传的镜像。
安装容器引擎
上传镜像前,您需要安装容器引擎,如果您已经安装了容器引擎,请确保容器引擎为1.11.2及以上版本。
- 参考购买弹性云服务器创建一台带有公网IP地址的Linux弹性云服务器。
作为演示,弹性云服务器和公网IP的规格不需要太高,例如弹性云服务器的规格为“1vCPUs | 2GiB”、公网IP带宽为“1 Mbit/s”即可,操作系统请选择“CentOS 7.6”。
您也可以使用其他机器安装容器引擎,不创建弹性云服务器。
- 返回弹性云服务器列表,单击“远程登录”登录购买的弹性云服务器。
- 使用如下命令快速安装容器引擎。
curl -fsSL get.docker.com -o get-docker.sh sh get-docker.sh sudo systemctl daemon-reload sudo systemctl restart docker
构建镜像
此处以如何使用Dockerfile,并使用nginx为基础镜像构建镜像2048为例。在构建镜像之前,需要先创建Dockerfile文件。
- 从镜像仓库拉取nginx镜像,作为基础镜像:
docker pull nginx
- 下载2048静态页面应用:
git clone https://gitee.com/jorgensen/2048.git
- 构建Dockerfile。
- 输入命令:
vi Dockerfile
- 编辑Dockerfile文件内容:
FROM nginx MAINTAINER Allen.Li@gmail.com COPY . /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
- nginx为基础镜像,基础镜像可根据创建的应用类型进行选择,例如创建的是Java应用,基础镜像可选择Java镜像。
- /usr/share/nginx/html为nginx存放web静态页面的路径。
- 80为容器端口。
Dockerfile内容格式,详情请参考Dockerfile reference。
- 输入命令:
- 构建镜像2048。
- 输入命令:
docker build -t='2048' .
创建镜像成功,如下图:
图1 成功构建镜像
- 查询镜像:
docker images
显示如下图,说明镜像构建成功:
图2 查询镜像
- 输入命令:
上传镜像
- 连接容器镜像服务
- 登录管理控制台,展开“服务列表”,选择“容器服务 > 容器镜像服务”。
- 在左侧菜单栏选择“我的镜像”,单击右侧“客户端上传”,在弹出的页面中单击“生成临时登录指令”,单击复制登录指令。
此处生成的临时登录指令有效期为24小时,若需要长期有效的登录指令,请参见获取长期有效登录指令。
- 在安装容器引擎的机器中执行上一步复制的登录指令。
- 上传镜像
- 在安装容器引擎的机器给2048镜像打标签。
docker tag [镜像名称:版本名称] [镜像仓库地址]/[组织名称]/[镜像名称:版本名称]
样例如下:
docker tag 2048:latest swr.cn-north-4.myhuaweicloud.com/cloud-develop/2048:latest
其中:
- swr.cn-north-4.myhuaweicloud.com为容器镜像服务的镜像仓库地址,本实验在北京四环境,则该地址为swr.cn-north-4.myhuaweicloud.com。
- cloud-develop为镜像的组织名称。
- 2048:latest为镜像名称和版本号。
- 上传镜像至镜像仓库。
docker push [镜像仓库地址]/[组织名称]/[镜像名称:版本名称]
样例如下:
docker push swr.cn-north-4.myhuaweicloud.com/cloud-develop/2048:latest
终端显示如下信息,表明上传镜像成功。
6d6b9812c8ae: Pushed 695da0025de6: Pushed fe4c16cbf7a4: Pushed v1: digest: sha256:eb7e3bbd8e3040efa71d9c2cacfa12a8e39c6b2ccd15eac12bdc49e0b66cee63 size: 948
返回容器镜像服务控制台,在“我的镜像”页面,执行刷新操作后可查看到对应的镜像信息。
- 在安装容器引擎的机器给2048镜像打标签。