在过去几年中我需要在不同的机器上开发 Python 项目、训练模型(主要基于 torch cuda ),为了解决环境、依赖、工具差异,提升干活效率,于是自己封一个专门用于 Python 开发的 docker 镜像。在此分享给大家
典型的使用场景:
感觉昨天的简介有些意思没有表达清楚,刚刚更新了一下简介
Goals
Usage session). Hence this project could be extend to support variant scope development.|  |      1liushuigs      2022-06-27 22:53:57 +08:00 要是能支持 web 端编程就牛逼了。可以了解下这个: https://github.com/pyscript/pyscript | 
|  |      3yazoox      2022-06-27 23:44:29 +08:00 via Android “容器内部已经装好常见 python 插件”什么意思?这个插件是 vscode 的? vscode 不是远程 ssh 进入的么? | 
|  |      4moeik      2022-06-28 00:01:12 +08:00 | 
|  |      5huntzhan OP @yazoox 指 vscode 插件,vscode ssh 登陆后会检测远端机器的 code-server 有没有装,如果没有装会自动装上,然后才能在远端装 vscode 插件。先装好,这样就不用每次都从头开始,毕竟 code server + vscode python 插件加起来 500 多 M 。见 https://github.com/vkit-x/wden/blob/ac6a2d0af78e03bcc16ae5aaed942b699639453c/build/install_openssh_server.sh#L21-L39 | 
|  |      6junnplus      2022-06-28 00:12:44 +08:00 https://github.com/tensorchord/envd 和这个项目好像有点类似 | 
|  |      7huntzhan OP @junnplus 这个项目之前看过,当时试了一下解决不了我的问题,所以才选择自己封装 其一,envd 的 build 对于我来说没什么用,因为依赖管理我是基于 python package 机制做的(这也是最佳工程实践),不需要 envd 来接管 其二是 envd 作为一个 DSL 灵活程度有限,比如就解决不了我想要自动常驻一个 screen daemon session 的需求,而写 Bash 也不是那么难的事情(确实需要多试错) 其三,上生产环境离不开手写 Dockerfile ,所以干脆一并弄了 | 
|  |      8gaocegege      2022-06-28 13:02:20 +08:00 @huntzhan 你好,想问问什么是 python package 机制?指的是用 conda env.yaml 或者 python requirements.txt 这样的方式么? | 
|  |      9huntzhan OP | 
|  |      10ruanimal      2022-06-29 09:59:11 +08:00 hunt 哥还是这么顶 | 
|      11yucongo      2022-06-30 09:21:09 +08:00 via Android 试试 okteto ,可能正是你想要的 | 
|  |      12molezznet      2022-06-30 12:58:28 +08:00 这类用 lxd 构建管理是不是比 docker 有点优势? | 
|  |      15codehz      2022-07-02 18:46:39 +08:00 via iPhone 说起来 vscode 不是有原生容器连接支持?可能不需要 ssh 来一下) | 
|  |      16huntzhan OP @codehz 你指的应该是 `[Visual Studio Code Remote - Containers]( https://code.visualstudio.com/docs/remote/create-dev-container)` 吧?还是要的,有跑在远程机器上的场景 | 
|  |      17codehz      2022-07-03 18:18:10 +08:00 via iPhone | 
|  |      18huntzhan OP @codehz 嗯,不冲突 你刚刚发的这个链接( https://code.visualstudio.com/docs/containers/ssh ),主要讲的是如何在 client side 配置 ssh ,我做的实际上更多的是整体体验,比如保证 container ssh host key 的不变性( https://github.com/vkit-x/wden/blob/f6b8b07961a97371fad4f291e5b75fd7ae28e3f9/build/install_openssh_server.sh#L10 )这样每次 login 不需要手动 trust host (加入 ~/.ssh/known_hosts )。 解决一个问题的方法多种多样,我只是分享了我的解决方案,只能说这种方案比较符合我的习惯,并不一定适合所有人 | 
|  |      19codehz      2022-07-03 19:03:00 +08:00 @huntzhan 主要是,如果不在容器内安装 ssh ,即直接在远程主机上,就消除了 host key 可变的可能性( 不过确实,容器内还有其他开发环境需要配置(比如远程 vscode 的安装),我只是提供了一个解决 ssh 问题的另一个方向( |