Docker Compose 指南
为了确保您的 docker-compose 文件能够适配共绩算力服务,请按照以下指南进行操作:
指定镜像源
- 如果您已经上传了镜像到共绩算力镜像源并需要使用它作为服务,请在
image
字段中以harbor.suanleme.cn
开头,后面跟上仓库名和镜像名,例如:
image: harbor.suanleme.cn/library/test-jupyter-image
- 如果使用 Docker Hub 上的公共镜像,请直接指定镜像名,如:
image: jery1304/test-jupyter-image
请注意,在使用 Docker Hub 上的公共镜像的情况下,共绩算力将尝试从上海交大代理镜像站拉取,很可能存在网络问题,因此不推荐这种做法。
- 如果需要的镜像既不在共绩算力镜像源,也不在 Docker Hub 上,那么需要将镜像的 tar 文件放在任务文件夹的
images
目录中,并与 docker-compose.yml 一起上传。tar 文件的命名需将正式镜像名中的/
替换为_
。总体来说不推荐用这种方式指定镜像源,因为这样会使任务的上传和部署过程变得非常耗时, 除非镜像文件很小。
- 网络模式设置: 服务的
network_mode
需要设置为bridge
。
network_mode: bridge
端口转发设置
对于需要转发的端口及其域名前缀,您需要在服务的 labels
中指定 suanleme_n.http.port
和 suanleme_n.http.prefix
字段。
其中,n 代表转发端口的序号,从 0 开始。如果有多个端口需要转发,请按顺序使用 suanleme_n 标签,例如 suanleme_0, suanleme_1, suanleme_2。
注:转发端口的标签必须依次为 suanleme_0, suanleme_1, suanleme_2。
每个 http.port
标签必须对应一个 http.prefix
标签,用于指示服务器将请求转发到 http.port
指定的端口,并解析到形如 "http.prefix-[用户前缀]-[任务前缀].run.suanleme.cn"
的域名。其中,用户前缀和任务前缀会自动拼接,无需在 Docker Compose 中指定。用户前缀和任务前缀不能包含点、空格、横杠等特殊字符。以下是一个示例:
labels:
# 第一个转发端口
- suanleme_0.http.port=3000
- suanleme_0.http.prefix=3000_sd1
# 第二个转发端口
- suanleme_1.http.port=3010
- suanleme_1.http.prefix=3010_sd1
# 第三个转发端口
- suanleme_2.http.port=6006
- suanleme_2.http.prefix=6006_sd1
# 第四个转发端口
- suanleme_3.http.port=8888
- suanleme_3.http.prefix=8888_sd1
在这个示例中,容器的 3000,3010,6006 和 8888 端口均被转发到了对应域名前缀的域名。
其他配置
docker-compose 的其余部分可以根据应用的具体需求进行自定义配置。
以下是一个完整的 docker-compose 示例文件,展示了如何配置一个符合共绩算力要求的 stable diffusion 服务:
version: '3.8'
services:
stable_diffusion_1: # 第一个服务
image: harbor.suanleme.cn/library/ashleykza-stable-diffusion-webui
network_mode: bridge
labels:
# 第一个转发端口
- suanleme_0.http.port=3000
- suanleme_0.http.prefix=3000_sd1
# 第二个转发端口
- suanleme_1.http.port=3010
- suanleme_1.http.prefix=3010_sd1
# 第三个转发端口
- suanleme_2.http.port=6006
- suanleme_2.http.prefix=6006_sd1
# 第四个转发端口
- suanleme_3.http.port=8888
- suanleme_3.http.prefix=8888_sd1
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
stable_diffusion_2: # 第二个服务
image: harbor.suanleme.cn/library/ashleykza-stable-diffusion-webui
network_mode: bridge
labels:
# 第一个转发端口
- suanleme_0.http.port=3000
- suanleme_0.http.prefix=3000_sd2
# 第二个转发端口
- suanleme_1.http.port=3010
- suanleme_1.http.prefix=3010_sd2
# 第三个转发端口
- suanleme_2.http.port=6006
- suanleme_2.http.prefix=6006_sd2
# 第四个转发端口
- suanleme_3.http.port=8888
- suanleme_3.http.prefix=8888_sd2
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
该文件仅用于演示目的而不用于展示实际功能,请根据具体需求编写自己的 docker-compose 文件。
推送镜像
请看 镜像仓库 指南。