且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-08-14 23:24:05

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

阿里云容器服务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,输入以下命令,安装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}')
    

    命令运行结果如下所示:

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