使用 Docker 镜像构建 App

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 本文主要为大将讲解如何使用 Docker 镜像创建 App 以及如何更新镜像。

118.jpg
镜像下载、域名解析、时间同步请点击 阿里巴巴开源镜像站

一、准备 App 的 Docker 镜像

1. 制作 Docker 镜像

根据自己的需求,用户可以使用官方镜像仓库中的镜像作为基础镜像,安装需要的软件或算法,制作成 Docker 镜像,完成运行环境的定制;制作镜像有两种方法:

  • 使用 Dockfile 制作镜像
  • 使用容器快速制作镜像

具体制作方法可参考文章 Docker 镜像制作

建议:在制作 Docker 镜像时,最好带上 Tag,后续版本有更新时,只需要更新 Tag 即可。

2. 本地调试Docker镜像

Docker 镜像制作完成以后,可以参考 Docker 本地调试 进行本地调试,确保 Docker 镜像在 BatchCompute 的环境下可以正常使用。

3. 推送到镜像仓库

可以将制作好的 Docker 镜像推送到 OSS 的镜像仓库。具体方法请参考 Docker镜像上传到 OSS

二、创建 App

BatchCompute提供了 API、SDK、控制台等三种方式创建 App,下面以控制台和 Python SDK 为例,分别介绍如何使用 Docker 镜像创建 App。

1. 使用控制台创建 App

假如 Docker 镜像被推送到 OSS 镜像仓库的路径为oss://demo-bucket/dockers/,镜像名称为localhost:5000/demodockerimage:0.1
1.png
如上图所示,在创建 App 时,选择镜像类型为 Docker,填写 Docker 镜像的名称,以及 OSS Registry 的路径。

2. 使用 SDK 创建 App

使用 Python SDK 创建 App 时,参考如下的形式:

#encoding=utf-8
import sys
from batchcompute import Client, ClientError
from batchcompute import CN_BEIJING as REGION
from batchcompute.resources import (
    JobDescription, TaskDescription, DAG, AutoCluster, GroupDescription, ClusterDescription, AppDescription
)
ACCESS_KEY_ID='xxxx' # 填写您的 ACCESS_KEY_ID
ACCESS_KEY_SECRET='xxxx' # 填写您的 ACCESS_KEY_SECRET
def main():
    try:
        client = Client(REGION, ACCESS_KEY_ID, ACCESS_KEY_SECRET)
        app_desc = {
        "Name":"Docker-app-demo",
        "Daemonize":False,
        "Docker":{
            "Image":"localhost:5000/demodockerimage:0.1",
            "RegistryOSSPath":"oss://demo-bucket/dockers/"
        },
        "CommandLine":"python test.py",
        #其他参数这里不详细展示  
        }
        appName = client.create_app(app_desc).Name
        print('App created: %s' % appName)
    except ClientError, e:
        print (e.get_status_code(), e.get_code(), e.get_requestid(), e.get_msg())
if __name__ == '__main__':
    sys.exit(main())

如上面的实例代码所示,在AppDescription中填写 Docker 信息的ImageRegistryOSSPath

三、Docker 镜像更新

假如 App 中使用的 ISV 提供的软件或算法有更新,您只需要更新 Docker 镜像,并用 Tag 标识版本。然后更新 App 信息中的 Docker 镜像名称就可以。

1. 使用控制台更新

2.png
如上图所示,在 App 列表中找到需要更新的 App,点击修改按钮进入 App 的修改页面。
3.png
如上图所示,在修改页面,修改 App 的 Docker 镜像名称后,点击提交即可完成 App 的更新。

2. 使用 SDK 更新

使用 Python SDK 来更新 App 的 Docker 信息可参考如下示例:

#encoding=utf-8
import sys
from batchcompute import Client, ClientError
from batchcompute import CN_BEIJING as REGION
from batchcompute.resources import (
    JobDescription, TaskDescription, DAG, AutoCluster, GroupDescription, ClusterDescription, AppDescription
)
ACCESS_KEY_ID='xxxx' # 填写您的 ACCESS_KEY_ID
ACCESS_KEY_SECRET='xxxx' # 填写您的 ACCESS_KEY_SECRET
def main():
    try:
        client = Client(REGION, ACCESS_KEY_ID, ACCESS_KEY_SECRET)
        app_desc = {
        "Name":"Docker-app-demo",
        "Daemonize":False,
        "Docker":{
            "Image":"localhost:5000/demodockerimage:0.2",
            "RegistryOSSPath":"oss://demo-bucket/dockers/"
        },
        "CommandLine":"python test.py",
        "EnvVars": {}
        }
        res = client.modify_app("Docker-app-demo", app_desc)
        print res
    except ClientError, e:
        print (e.get_status_code(), e.get_code(), e.get_requestid(), e.get_msg())
if __name__ == '__main__':
    sys.exit(main())

对于简单的修改 Docker 版本号的情况,推荐使用控制台,操作更简单。

阿里巴巴开源镜像站 提供全面,高效和稳定的镜像下载服务。钉钉搜索 ' 21746399 ‘ 加入镜像站官方用户交流群。”

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
15天前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
19天前
|
缓存 Linux 网络安全
docker的镜像无法下载如何解决?
【10月更文挑战第31天】docker的镜像无法下载如何解决?
679 29
|
15天前
|
存储 关系型数据库 Linux
【赵渝强老师】什么是Docker的镜像
Docker镜像是一个只读模板,包含应用程序及其运行所需的依赖环境。镜像采用分层文件系统,每次修改都会以读写层形式添加到原只读模板上。内核bootfs用于加载Linux内核,根镜像相当于操作系统,上方为应用层。镜像在物理存储上是一系列文件的集合,默认存储路径为“/var/lib/docker”。
|
20天前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
100 2
|
22天前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
41 1
|
23天前
|
存储 Java 开发者
成功优化!Java 基础 Docker 镜像从 674MB 缩减到 58MB 的经验分享
本文分享了如何通过 jlink 和 jdeps 工具将 Java 基础 Docker 镜像从 674MB 优化至 58MB 的经验。首先介绍了选择合适的基础镜像的重要性,然后详细讲解了使用 jlink 构建自定义 JRE 镜像的方法,并通过 jdeps 自动化模块依赖分析,最终实现了镜像的大幅缩减。此外,文章还提供了实用的 .dockerignore 文件技巧和选择安全、兼容的基础镜像的建议,帮助开发者提升镜像优化的效果。
|
27天前
|
负载均衡 应用服务中间件 nginx
基于Nginx和Consul构建自动发现的Docker服务架构——非常之详细
通过使用Nginx和Consul构建自动发现的Docker服务架构,可以显著提高服务的可用性、扩展性和管理效率。Consul实现了服务的自动注册与发现,而Nginx则通过动态配置实现了高效的反向代理与负载均衡。这种架构非常适合需要高可用性和弹性扩展的分布式系统。
28 4
|
28天前
|
存储 缓存 Java
Java应用瘦身记:Docker镜像从674MB优化至58MB的实践指南
【10月更文挑战第22天】 在容器化时代,Docker镜像的大小直接影响到应用的部署速度和运行效率。一个轻量级的Docker镜像可以减少存储成本、加快启动时间,并提高资源利用率。本文将分享如何将一个Java基础Docker镜像从674MB缩减到58MB的实践经验。
47 1
|
14天前
|
API Docker 容器
【赵渝强老师】构建Docker Swarm集群
本文介绍了如何使用三台虚拟主机构建Docker Swarm集群。首先在master节点上初始化集群,然后通过特定命令将node1和node2作为worker节点加入集群。最后,在master节点上查看集群的节点信息,确认集群构建成功。文中还提供了相关图片和视频教程,帮助读者更好地理解和操作。
|
15天前
|
缓存 JavaScript 安全
深入理解Docker镜像构建过程
深入理解Docker镜像构建过程
51 0
下一篇
无影云桌面