news 2026/4/16 10:38:41

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/4/11 19:59:30

GitHub热门项目复现难?Miniconda-Python3.9镜像精准还原实验环境

GitHub热门项目复现难&#xff1f;Miniconda-Python3.9镜像精准还原实验环境 在人工智能和数据科学领域&#xff0c;你是否曾遇到这样的尴尬&#xff1a;看到一篇顶会论文开源了代码&#xff0c;兴冲冲地克隆下来&#xff0c;结果运行第一行就报错——“ModuleNotFoundError”&…

作者头像 李华
网站建设 2026/4/15 10:28:22

“秋风”的回响 “根脉相连·爱国同心”

——“川港读者共话家国情怀暨《我爱秋风劲》读者分享会&#xff08;北川站&#xff09;”纪实 &#xff08;作者石中英受到北川中学学生们的热烈欢迎并与其逐一签名留念&#xff09; “如今走在校园里&#xff0c;看见秋风卷起片片银杏&#xff0c;听见风穿过教学楼的走廊&a…

作者头像 李华
网站建设 2026/4/7 17:51:19

Anaconda环境克隆:conda create --clone 实战

Anaconda环境克隆&#xff1a;conda create --clone 实战 在数据科学和AI开发中&#xff0c;你有没有遇到过这样的情况——某个项目在你的机器上运行完美&#xff0c;换到同事的电脑上却报错一堆依赖冲突&#xff1f;又或者你在几个月后想复现一个实验结果&#xff0c;却发现当…

作者头像 李华
网站建设 2026/4/14 20:40:44

100t 1yuan VS 1t 100yuan

100吨1元纸币 约12987万 100吨1元硬币 约1640万 1吨100元纸币 约8700万基于第五套人民币的官方标准重量&#xff1a; 1 张 100 元纸币&#xff1a;约 1.15 克 1 张 1 元纸币&#xff1a;约 0.77 克1. 计算 1 吨 100 元 的总金额 1 吨 1000 千克 1000000 克总张数 1000000 …

作者头像 李华
网站建设 2026/4/12 20:53:03

number axis cosine(cos)

number axis & cosine&#xff08;cos&#xff09; 数轴与余弦&#xff0c;相似度cos&#xff08;a&#xff09; A * B / |A| * |B|cos &#xff08;a) 1 向量相同 cos &#xff08;a) 0 向量垂直 cos &#xff08;a) -1 向量相反数轴与余弦&#xff0c;相…

作者头像 李华