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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 在《冬季实战营第四期:零基础容器技术实战》的学习报告

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

阿里云容器服务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}')
    

    命令运行结果如下所示:

    结果

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
SQL 分布式计算 运维
冬季实战营第五期学习报告
冬季实战营第五期学习报告
|
SQL 弹性计算 运维
冬季实战营第三期学习报告
通过本期学期,掌握了MySQL及RDS MySQL基本操作
149 2
|
SQL 弹性计算 分布式计算
学习报告:冬季实战营第五期
在《冬季实战营第五期:轻松入门学习大数据》的学习报告
156 0
学习报告:冬季实战营第五期
|
Linux 程序员 Shell
冬季实战营第二期学习报告
针对第二期的Linux操作系统实战入门,通过动手实操的体验写出感受。时间真快,从1月24日到1月28日,参与了五天不同内容的动手实战,从中发现虽然在大学里学过这门课,但是好像没有这期收获很多没有学过的知识点,每一天都在涨知识,不得不感叹,学无止境,感觉真妙,可见大学里学的东西比较浅,还需要自学其它很多新知识点,感谢第二期Linux操作系统实战入门的体验,再接再厉~ 让我们一起向未来。
153 0
冬季实战营第二期学习报告
|
弹性计算 缓存 安全
学习报告:冬季实战营第二期
在冬季实战营第二期:Linux操作系统实战入门的学习报告
218 0
学习报告:冬季实战营第二期
|
Kubernetes 监控 Docker
冬季实战营第四期学习报告
通过本期学期,掌握了容器的基本技术
95 0
|
Linux Windows
冬季实战营第二期-学习报告
冬季实战营第二期-学习报告
|
监控 Linux Shell
冬季实战营第二期 学习报告心得
针对冬季实战营第二期学习所得的阐述。
214 0
|
3天前
|
SQL 人工智能 安全
【灵码助力安全1】——利用通义灵码辅助快速代码审计的最佳实践
本文介绍了作者在数据安全比赛中遇到的一个开源框架的代码审计过程。作者使用了多种工具,特别是“通义灵码”,帮助发现了多个高危漏洞,包括路径遍历、文件上传、目录删除、SQL注入和XSS漏洞。文章详细描述了如何利用这些工具进行漏洞定位和验证,并分享了使用“通义灵码”的心得和体验。最后,作者总结了AI在代码审计中的优势和不足,并展望了未来的发展方向。
|
11天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服