我现在有一个 docker 镜像,里面装了一些基础工具,然后我的代码是需要用到这个环境,比如代码里写subprocess.run(["ls", "-l", "/dev/null"])
执行一些这个环境的命令,然后再把我的代码基于这个镜像再打包成一个新的镜像。
这个做法合理吗?我在开发的时候应该怎么做呢?
是不管这个镜像,直接在本地装好这些环境,然后打包的时候再基于这个镜像打包呢?
还是可以怎么利用上这个镜像,启动个容器再连接上去感觉也不太好,到时候打包还得改代码吧?
1
binux 2021-04-11 08:45:03 +08:00 via Android
当然可以了,我也没见谁 FROM scratch 建一个镜像啊
|
2
k9982874 2021-04-11 08:47:40 +08:00 via iPhone
合理,docker 也有方案。google docker multi stage build
|
3
hanxiV2EX 2021-04-11 08:56:15 +08:00 via Android
基础镜像可以推到 hub 上去
|
4
hanxiV2EX 2021-04-11 09:00:47 +08:00 via Android
但是一般为了保持很小镜像的,都会用楼上说的多个 stage 来写 dockerfile 的,区分编译阶段和运行阶段。
|
6
shm7 2021-04-11 10:42:52 +08:00 via iPhone
以 docker 基础镜像 为基础,添加自己的组件和代码,制成自己的镜像,是基本操作。没听说过这方面的法律问题,如果有这个基础镜像的制作者会专门说明,你去找找。
|
7
psyer 2021-04-11 10:48:18 +08:00 via Android
@hanxiV2EX 好家伙,搜了一下 multi stage,感觉很不错。我有个高可用 Hadoop HBase HA 镜像本地 1.5G 左右,不过仓库显示才 500 多 M,是真的大大大。
|
8
SjwNo1 2021-04-11 10:51:48 +08:00 via iPhone
临时就起个基础镜像 exec 进去开发
否则甚至可以 commit 打一个新镜像 |