news 2026/8/28 13:23:57

rock image (by quqi99)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
rock image (by quqi99)

作者:张华 发表于:2025-12-30
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

docker image

cat << EOF |tee app.py from flask import Flask import os app = Flask(__name__) @app.route('/') def hello(): greeting = os.environ.get("GREETING", "Hello") return f"{greeting} from the container!" if __name__ == '__main__': app.run(host='0.0.0.0', port=8080) EOF cat << EOF |tee Dockerfile FROM ubuntu:24.04 RUN apt update \ && apt install --yes --no-install-recommends python3 python3-pip \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY requirements.txt . COPY app.py . RUN pip3 install -r requirements.txt --root / ENV GREETING="Hello Docker" ENV PORT=8080 EXPOSE \$PORT CMD ["python3", "app.py"] EOF cat << EOF |tee requirements.txt Flask==3.1.2 EOF sudo apt install docker.io -y sudo docker build -t hello:v1 . sudo docker run -d -p 8080:8080 --name hello hello:v1

rock image

rock image将使用Pebble来代替docker image中的CMD/ENTRYPOINT来定义services.
rock image并不是以传统 Docker image的形式存储在本地 registry 里,而是:在构建过程中,rockcraft 会使用 skopeo 从远程仓库(如 public.ecr.aws/ubuntu/ubuntu:24.04)拉取 base 镜像;然后将其转换为 OCI 格式,并临时存放在 /root/images/ 目录下(注意:这是在 rockcraft 启动的 lxc容器内部,不是你主机的 /root!);最终生成的是一个.rock 文件(类似 .snap),它是一个 squashfs 或tar压缩包,包含整个 rootfs 和元数据。

cat << EOF |tee rockcraft.yaml name: hello-rock base: ubuntu@24.04 version: "0.1" summary: hello rock description: | This is a hello rock image platforms: amd64: environment: GREETING: "Hello Rock" PORT: "8080" services: app: override: replace command: python3 usr/bin/app.py startup: enabled checks: app-check: override: replace http: url: http://localhost:8080/ parts: app: plugin: nil source: . build-packages: - python3 - python3-venv - python3-pip stage-packages: - python3 override-build: | pip install -r requirements.txt --root \${CRAFT_PART_INSTALL} install -D -m 755 app.py \${CRAFT_PART_INSTALL}/usr/bin/app.py EOF sudo snap install rockcraft --classic #rockcraft clean lxc delete --project rockcraft rockcraft-hello-rock-amd64-8520382 --force #NOTE: the domain 'cloudfront.net' has been blocked rockcraft pack ls hello-rock_0.1_amd64.rock lxc list --project rockcraft lxc exec --project rockcraft rockcraft-hello-rock-amd64-8520382 -- bash curl -v https://public.ecr.aws/v2/ curl -v https://d5l0dvt14r5h8.cloudfront.net/v2/ #/snap/rockcraft/current/bin/skopeo --insecure-policy --override-arch amd64 copy --retry-times 5 docker://public.ecr.aws/ubuntu/ubuntu:24.04 oci:/root/images/ubuntu:24.04 #/snap/rockcraft/current/bin/skopeo --insecure-policy copy docker://public.ecr.aws/ubuntu/ubuntu:24.04 oci:/tmp/test-ubuntu:24.04 $ lxc list --project rockcraft |grep -i container | base-instance-rockcraft-buildd-base-v71--8246325508671f1569c1 | STOPPED | | | CONTAINER | 0 | | rockcraft-hello-rock-amd64-8520382 | STOPPED | | | CONTAINER | 0 |

在docker里测试rock image:

#tar archive can be read by skopeo $ file hello-rock_0.1_amd64.rock hello-rock_0.1_amd64.rock: POSIX tar archive sudo apt install skopeo -y sudo skopeo copy oci-archive:hello-rock_0.1_amd64.rock docker-daemon:hello-rock:0.1 sudo docker run -it --rm hello-rock:0.1 curl -v http://localhost:8080 #debug it sudo docker ps |grep rock sudo docker exec frosty_wright /usr/bin/pebble logs app sudo docker run -d -p 8080:8080 -it --rm hello-rock:0.1 curl http://localhost:8080

debug it

$ sudo docker ps |grep rock 6b09134e6413 hello-rock:0.1 "/usr/bin/pebble ent…" 3 minutes ago Up 3 minutes pensive_wozniak $ sudo docker exec -it frosty_wright ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 1233912 11520 pts/0 Ssl+ 07:29 0:00 /usr/bin/pebble enter root 16 1.1 0.2 115816 34860 pts/0 S 07:29 0:00 python3 usr/bin/app.py root 22 50.0 0.0 7888 3840 pts/1 Rs+ 07:30 0:00 ps aux #run it in the front-end without '-d' sudo docker run -p 8080:8080 -it --rm --entrypoint /bin/sh hello-rock:0.1 # python3 /usr/bin/app.py ... * Running on http://127.0.0.1:8080 Press CTRL+C to quit
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 8:26:18

Docker Run命令直连GPU算力:Miniconda-Python3.9镜像现已上线

Docker Run命令直连GPU算力&#xff1a;Miniconda-Python3.9镜像现已上线 在深度学习项目开发中&#xff0c;你是否经历过这样的场景&#xff1f;刚克隆下同事的代码仓库&#xff0c;满怀期待地运行训练脚本&#xff0c;结果却卡在“ImportError: torchvision requires PyTorch…

作者头像 李华
网站建设 2026/8/13 16:28:40

GitHub CI配置文件模板:Miniconda-Python3.9用于持续集成

GitHub CI配置文件模板&#xff1a;Miniconda-Python3.9用于持续集成 在人工智能与数据科学项目日益复杂的今天&#xff0c;一个常见的痛点浮出水面&#xff1a;为什么代码在本地运行完美&#xff0c;一到CI流水线就报错&#xff1f;更糟的是&#xff0c;有时候错误还无法复现…

作者头像 李华
网站建设 2026/8/9 14:23:47

GPU算力变现新路径:通过Miniconda-Python3.9镜像引流技术博客

GPU算力变现新路径&#xff1a;通过Miniconda-Python3.9镜像引流技术博客 在AI模型训练动辄需要数十小时、显存占用突破20GB的今天&#xff0c;许多开发者依然卡在“环境配不起来”的第一步。你有没有过这样的经历&#xff1f;看到一篇讲Transformer实战的技术文章&#xff0c;…

作者头像 李华
网站建设 2026/8/22 8:39:03

用Miniconda-Python3.9部署大模型API接口服务

用Miniconda-Python3.9部署大模型API接口服务 在AI工程化加速落地的今天&#xff0c;越来越多团队面临一个共性挑战&#xff1a;如何将实验室里跑通的大模型&#xff0c;稳定、高效地部署成对外提供服务的API&#xff1f;尤其是在多项目并行、依赖冲突频发、环境难以复现的现实…

作者头像 李华
网站建设 2026/8/26 10:06:26

清华大学开源镜像站同步:Miniconda-Python3.9安装速度提升3倍

清华大学开源镜像站同步&#xff1a;Miniconda-Python3.9安装速度提升3倍 在高校实验室和AI初创团队中&#xff0c;你是否经历过这样的场景&#xff1f;深夜调试模型前&#xff0c;想快速搭建一个干净的Python环境&#xff0c;结果conda install pytorch卡在“Solving environ…

作者头像 李华
网站建设 2026/8/22 22:57:03

Miniconda-Python3.9安装scikit-learn进行数据分析

Miniconda-Python3.9 安装 scikit-learn 进行数据分析 在数据科学项目中&#xff0c;一个常见的困扰是&#xff1a;为什么你的代码在本地跑得好好的&#xff0c;换到同事的机器上却报错一堆依赖冲突&#xff1f;或者几个月后自己想复现实验&#xff0c;却发现环境再也装不回来了…

作者头像 李华