Docker 入门实践与 AI 开发者空间使用体验
前言
最近在实际项目里同时用到了 Docker 和华为云的 AI 开发者空间(AI DevSpace)。很多人第一次接触这两个工具时容易踩坑,我把自己在华为云成长中心做任务时的真实操作经历整理出来,希望对刚入门的同学有帮助。
一、什么是 Docker,为什么要用
Docker 是一个开源的容器化平台。用通俗的话讲:它把应用运行所需的代码、运行时、系统库和配置文件打包成一个镜像,在任何安装了 Docker 的机器上都能以相同的方式运行。相比传统的虚拟机,容器共享宿主机的内核,启动在秒级,占用的磁盘和内存也更小。对开发者而言,最大的好处是环境一致性:开发、测试、生产使用同一个镜像,避免了"在我机器上能跑"的问题。
二、安装 Docker
在 Ubuntu 上安装 Docker 的步骤很直接:先更新包索引,安装依赖包 ca-certificates、curl、gnupg 和 lsb-release,然后把 Docker 官方的 GPG 密钥和 apt 源加进来,最后 apt install docker-ce docker-ce-cli containerd.io。安装完成后可以用 docker run hello-world 验证:本地会拉取 hello-world 镜像并运行,终端打印出 Welcome to Docker 就说明安装成功。
日常开发建议把当前用户加入 docker 组,这样就不需要每次加 sudo。命令是 sudo usermod -aG docker 你的用户名,之后重新登录终端即可生效。
三、用 Dockerfile 构建自己的镜像
以一段简单的 Python Flask 服务为例。目录里放两个文件:app.py 和 requirements.txt。app.py 用 Flask 写一个 / 路由,返回一段问候语;requirements.txt 只有一行 flask。
Dockerfile 的内容建议遵循最小依赖原则:
第一行指定基础镜像,比如 python:3.11-slim,slim 版比 full 版体积更小、攻击面也小。
第二行 WORKDIR /app 设定工作目录。
第三行 COPY requirements.txt . 先把依赖文件拷进去。
第四行 RUN pip install --no-cache-dir -r requirements.txt 安装依赖,--no-cache-dir 可以避免 pip 缓存增大镜像。
第五行 COPY . . 把项目其余文件拷入。
第六行 EXPOSE 5000 声明容器对外暴露的端口。
最后一行 CMD ["python", "app.py"] 声明容器启动时执行的命令。
构建并运行:docker build -t my-flask-app .,然后 docker run -p 5000:5000 my-flask-app。浏览器访问 http://localhost:5000 就能看到服务返回的内容。
几个实践中常用的好习惯:尽量用多阶段构建减小最终镜像体积;用 .dockerignore 排除 node_modules、.git 和本地缓存;固定基础镜像的具体版本或 SHA256 摘要,保证构建可重现;生产环境不要用 root 用户跑容器,可以在 Dockerfile 里用 USER 切换到普通用户。
四、AI 开发者空间(AI DevSpace)的使用体验
在华为云成长中心里,AI DevSpace 有一个"每日体验"任务。从实践任务页点进去会跳转到 AI DevSpace 的页面,版本选择页默认选中免费的体验版。体验版的特点是零配置启动、不消耗个人云资源额度,会话结束后数据不保留,非常适合用来上手和短期验证。
点"立即进入"后,页面会弹出一个临时凭据自动配置的确认框,会把同步临时 AK/SK 到 AI 开发者空间沙箱的权限交出来,确认后几秒就出现一个三小时的倒计时。这说明后端正在拉起一个云端开发环境,包含终端、代码编辑器和常用的开发工具链。倒计时归零之前环境一直在,适合做演示、跑小项目或者跟着教程一步步试。
使用中我注意到几点:网络是容器侧统一出的,拉开源镜像和包的速度基本稳定;沙箱里预装的环境会随时间更新,遇到版本差异时不要硬靠记忆里的命令,先在终端里用 --version 确认;倒计时快到的时候如果有没保存的代码要及时导出,因为体验版会话结束数据会清空。
另外提一下持久化版:如果做需要保留环境的长期项目,可以去 AI DevSpace 主页选持久化版,它会把工作空间持久化到云存储,但会涉及资源配置和计费,和体验版的定位不同。新手先体验、确认工作流再决定是否上持久化版,是比较稳妥的路径。
五、给新手的实操建议
先用体验版把 AI DevSpace 的终端和编辑器跑通,再在里面实操 Docker:拉一个官方镜像、写一个最简的 Dockerfile、build 再 run 起来。把"容器启动"和"端口映射"这两个概念亲手过一次,比看十篇教程更管用。遇到报错时,docker logs 容器ID 是第一个要跑的命令,大多数问题从日志里就能定位。
最后建议把 Docker 镜像管理、容器网络和 AI 开发者空间的云端开发这三个知识点串联起来:本地写代码、Dockerfile 打包、推到云端容器跑,再把 AI DevSpace 当成一个现成的云 IDE 来写 Dockerfile 和做演示,这三样互相串联效率更高。
- 点赞
- 收藏
- 关注作者
评论(0)