学习报告:冬季实战营第四期

简介: 在《冬季实战营第四期:零基础容器技术实战》的学习报告

冬季实战营第四期:零基础容器技术实战

阿里云容器服务Kubernetes版快速入门

部署并公开应用

本步骤指导您如何在ACK集群中快速部署一个无状态应用(Deployment)

即魔方游戏,并将该应用向公网公开

关于创建Deployment的详细参数描述,请参见创建无状态工作负载Deployment

  • 双击打开虚拟桌面的Firefox ESR浏览器,在RAM用户登录框中点击“下一步”,复制云产品资源列表中子用户密码,粘按CTRL+V把密码粘贴到密码输区,登陆子账户(后续在远程桌面里的粘贴操作均使用CTRL + V快捷键)

    复制容器服务管理控制台地址,在Firefox浏览器打开新页签,粘贴并访问容器服务管理控制台。

    https://cs.console.aliyun.com/
    
  • 集群列表页面中,单击目标集群名称

    结果

  • 在集群管理页左侧导航栏中,选择工作负载 > 无状态

    结果

  • 无状态页面中,单击使用镜像创建

    结果

  • 应用基本信息页签,设置应用名称,例如ack-cube,单击下一步

    结果

  • 容器配置页签,依次设置 镜像名称、镜像Tag、资源限制、所需资源、端口

    单击下一步

    结果

    参数说明:

    • 镜像名称:输入registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cube
    • 镜像Tag:单击选择镜像Tag选择镜像的版本。若不指定,默认为最新版。示例:1.0
    • 资源限制:设置CPU为1 Core,内存为1024 MiB
    • 所需资源:设置CPU为0.25 Core,内存为512 MiB
    • 端口:设置容器的端口,输入名称ack-cube,容器端口80
  • 高级配置页签,单击服务(Service)右侧的创建

    结果

  • 在创建服务对话框中,设置服务的相关参数,单击创建,以通过该服务公开应用
参数说明:

- 名称:输入服务的名称。示例:ack-cube-svc
- 类型:选择负载均衡>公网访问>新建SLB
- 服务端口:设置服务端口为80
- 容器端口:设置服务端口为80

![结果](https://ucc.alicdn.com/pic/developer-ecology/7b433e3e7a17448180d6f55b3b1e2806.png)
  • 在高级配置页签,单击页面右下角的创建

    结果

    返回如下页面,表示应用创建成功,单击查看应用详情。

    结果

  • 在应用详情页面,您可以查看应用的容器组、访问方式、事件、容器伸缩、历史版本、日志、触发器等信息

    结果

测试应用

本步骤指导您如何通过服务(Service)来访问新部署的容器化应用

  1. 切换回容器服务管理控制台页签。在左侧导航栏中,选择网络 > 服务
  2. 在服务列表页面,找到新创建的服务(即ack-cube-svc),记录外部端点的IP地址

结果

  1. 打开您本地的浏览器,在地址栏中输入并访问外部端点列的IP地址,您即可体验魔方游戏

结果

Docker镜像管理快速入门

搭建Docker服务

Docker 是一个开源的容器引擎,用于创建、管理和编排容器,可以轻松为任何应用创建一个轻量级、可移植、自给自足的容器。本步骤将在ECS上部署一个Docker服务,并配置DockerHub的镜像加速器

  1. 点击右侧Web Terminal ,切换至Web Terminal,输入以下命令,安装Docker的依赖库

    yum install -y yum-utils device-mapper-persistent-data lvm2

  2. 添加Docker CE的软件源信息

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  3. 安装Docker CE

    yum makecache fast &&
    yum -y install docker-ce

  4. 启动Docker服务

    systemctl start docker

  5. 配置DockerHub镜像加速器

    tee /etc/docker/daemon.json <<-'EOF'
    {

    "registry-mirrors": ["https://registry.docker-cn.com"]

    }
    EOF

  6. 重启Docker服务

    systemctl restart docker

准备应用代码和Dockerfile

本步骤操作将在工作空间下创建一个基于Golang的HelloWorld代码文件和一个用来构建运行Hello代码所需环境镜像的Dockerfile文件

  1. 创建工作空间

    mkdir -p /tmp/demo && cd /tmp/demo
    
  2. 在工作空间下创建HelloWorld代码文件,用来在容器环境中监听HTTP服务,输出HelloWorld字符串

    cat > /tmp/demo/main.go << EOF
    package main
    
    import (
        "fmt"
        "net/http"
    )
    
    func main() {
        http.HandleFunc(
            "/", 
            func(w http.ResponseWriter, r *http.Request) {
                fmt.Fprintf(w, "Hello! World\n")
            }
        )
    
        fmt.Println("start to serve...")
        http.ListenAndServe(":80", nil)
    }
    EOF
    
  3. 在工作空间下创建Dockerfile文件

    cat > /tmp/demo/Dockerfile << EOF
    FROM golang:1.12-alpine
    
    # change current working dir
    WORKDIR /go/src/app
    
    # copy main.go into /go/src/app
    COPY . .
    
    # go build and install the app
    RUN go install -v ./...
    
    # run the app by default
    CMD ["app"]
    EOF

本地构建镜像并运行镜像

本步骤将指导您使用Docker基本命令构建和运行镜像

  1. 使用docker build命令构建镜像

    docker build . -t demo:v1
    

    命令运行结果如下所示:

    结果

说明:

* 参数 `.` : 表示指定当前路径作为构建上下文,即Dockerfile所在的本地路径
* 参数 `-t` : demo:v1指定镜像名称和标签

  1. 使用docker run命令运行镜像

    docker run -d -p 8000:80 demo:v1
    

    命令运行结果如下所示:

    结果

    说明:

    • 参数 -d : 设置容器运行模式为后台运行
    • 参数 -p : 8000:80将容器内部使用的网络端口映射到主机上,其中8000为主机端口,80为容器内部使用端口
  2. 使用curl工具访问容器中的HelloWorld服务

    curl localhost:8000
    

    命令运行结果如下所示:

    结果

  3. 使用docker rm命令删除容器

    docker rm -f $(docker ps -a | grep "demo:v1" | awk '{print $1}')
    

    命令运行结果如下所示:

    结果

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
XML 开发框架 .NET
|
人工智能 自然语言处理 搜索推荐
AI原生企业级Agent构建平台具备哪些特性?一篇文章看明白
AI原生企业级Agent构建平台有哪些特性?澜码正式发布AskXBOT平台为业界揭晓答案。
901 0
|
搜索推荐 架构师 应用服务中间件
Nginx极简入门(三)基于端口的虚拟主机配置
前面讲了如何配置基于IP的虚拟主机,今天讲一讲Nginx如何基于端口的虚拟主机。 需要说明的是:由于本文章是nginx系列文章中的一篇,文章里面很多其他的配置,可能前面的文章已经说讲过,然后后续就没有在介绍,如果出现有些配置没有讲,大家可能需要去看看前面的文章。
Nginx极简入门(三)基于端口的虚拟主机配置
|
JavaScript 数据安全/隐私保护
Discuz! X3.5 注册页面提示语的修改方法
Discuz! X3.5 注册页面提示语的修改方法
614 2
|
安全 Android开发 Kotlin
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?
**Kotlin中的`by lazy`和`lateinit`都是延迟初始化技术。`by lazy`用于只读属性,线程安全,首次访问时初始化;`lateinit`用于可变属性,需手动初始化,非线程安全。`by lazy`支持线程安全模式选择,而`lateinit`适用于构造函数后初始化。选择依赖于属性特性和使用场景。**
555 5
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?
|
安全 Ubuntu Linux
Ubuntu解密:Root账户登录问题一网打尽
Ubuntu解密:Root账户登录问题一网打尽
474 1
|
供应链 监控 数据可视化
餐饮业数字化转型:低代码平台的实现策略
**Zoho Creator助力餐饮业数字化转型:**利用低代码平台实现自动化菜单、库存与订单管理,提升效率,增强顾客体验。通过定制应用,轻松跟踪订单、管理顾客信息及财务,确保无缝运营。无论何时何地,都能远程监控餐厅状态。Zoho Creator提供多语言支持、可视化构建、模板库、流程自动化、数据分析及安全保证,降低开发成本,赋能餐饮企业快速适应市场变化。
216 1
|
测试技术 API Android开发
Android经典实战之简化 Android 相机开发:CameraX 库的全面解析
CameraX是Android Jetpack的一个组件,旨在简化相机应用开发,提供了易于使用的API并支持从Android 5.0(API级别21)起的设备。其主要特性包括广泛的设备兼容性、简洁的API、生命周期感知、简化实现及方便的集成与测试。通过简单的几个步骤即可实现如拍照、视频录制等功能。此外,还提供了最佳实践指导以确保应用的稳定性和性能。
565 0
|
存储 算法 区块链
数字指纹在区块链上如何生成和验证
区块链利用哈希函数(如SHA-256)将数据转化为固定长度的数字指纹,确保内容唯一标识。Merkle树加速批量交易验证,通过比较交易哈希、Merkle根及路径哈希来确认交易真实性。直接哈希对比则用于单一数据的完整性检查。这种方式增强了数据不可篡改性和可验证性,支持版权保护和数据完整性。