news 2026/2/14 8:03:20

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/2/13 19:11:33

云服务器与物联网:万物互联的算力网络

云服务器与物联网&#xff1a;万物互联的算力网络物联网设备的爆发式增长&#xff0c;对云服务器提出了新的挑战与机遇。从设备管理到数据分析&#xff0c;云平台正在成为物联网生态的核心枢纽。设备管理&#xff1a;亿级设备的规模化运维某物联网平台通过云服务器实现了对1亿设…

作者头像 李华
网站建设 2026/2/5 9:23:56

Markdown流程图语法:mermaid在Jupyter中的使用

Markdown流程图语法&#xff1a;mermaid在Jupyter中的使用 在数据科学、AI模型开发和工程协作日益复杂的今天&#xff0c;一个常见的痛点浮现出来&#xff1a;如何让技术文档既保持代码的精确性&#xff0c;又能清晰传达逻辑结构&#xff1f;我们经常看到项目中堆满了.py文件和…

作者头像 李华
网站建设 2026/2/7 7:07:00

Windows10和windows11(10)新机器(台式机)系统跳过联网方法

第一步&#xff1a; 首先同样按下“ShiftF10”或者是“FnShiftF10”快捷键调出“命令提示符”窗口&#xff0c;然后在命令提示符管理员窗口中输入 OOBE\BYPASSNRO输入命令完成后按下“回车键”&#xff08;enter&#xff09;&#xff0c;然后电脑会进入重启。 第二步&#xff1…

作者头像 李华
网站建设 2026/2/13 9:27:10

机器学习068:深度学习【卷积神经网络】YOLO(You Only Look Once)你只需看一眼,一次看穿世界的智能之眼

钢铁厂的工人不用再顶着高温和高风险去检查吊钩裂纹&#xff0c;一个经过训练的YOLO模型能实时识别出0.3毫米级的微小缺陷&#xff0c;将安全隐患扼杀在萌芽中。这正是YOLO技术改变我们与世界交互方式的一个缩影。想象一下&#xff0c;你正站在一个热闹的广场上&#xff0c;朋友…

作者头像 李华
网站建设 2026/2/10 3:24:50

Conda环境命名规范建议:Miniconda-Python3.9助力团队协作

Conda环境命名规范建议&#xff1a;Miniconda-Python3.9助力团队协作 在人工智能与数据科学项目日益复杂的今天&#xff0c;一个看似微不足道的细节——虚拟环境的命名方式——往往成为团队协作效率的隐形瓶颈。你是否经历过这样的场景&#xff1f;某位同事提交了一段无法运行的…

作者头像 李华
网站建设 2026/2/11 15:45:09

Miniconda-Python3.9创建软链接方便命令行调用

Miniconda-Python3.9 创建软链接实现命令行高效调用 在如今的 AI 开发与数据科学实践中&#xff0c;一个常见的困扰是&#xff1a;明明已经安装了 Miniconda 和 Python 3.9&#xff0c;却在终端里输入 python 时提示“command not found”。更让人头疼的是&#xff0c;Jupyter …

作者头像 李华