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