Docker 镜像指南
如何准备符合共绩云要求的 docker-compose 文件
为了确保您的 docker-compose 文件能够适配共绩云服务,请按照以下指南进行操作:
指定镜像源
如果您已经上传了镜像到共绩云镜像源并需要使用它作为服务,请在
image字段中以harbor.suanleme.cn开头,后面跟上仓库名和镜像名,例如:- YAML
image: harbor.suanleme.cn/library/test-jupyter-image 如果使用 Docker Hub 上的公共镜像,请直接指定镜像名,如:
- YAML
image: jery1304/test-jupyter-image 请注意,在使用 Docker Hub 上的公共镜像的情况下,共绩云将尝试从上海交大代理镜像站拉取,很可能存在网络问题,因此不推荐这种做法。
如果需要的镜像既不在共绩云镜像源,也不在 Docker Hub 上,那么需要将镜像的 tar 文件放在任务文件夹的
images目录中,并与 docker-compose.yml 一起上传。tar 文件的命名需将正式镜像名中的/替换为_。总体来说不推荐用这种方式指定镜像源,因为这样会使任务的上传和部署过程变得非常耗时, 除非镜像文件很小。
网络模式设置: 服务的
network_mode需要设置为bridge。- YAML
network_mode: bridge
端口转发设置
对于需要转发的端口及其域名前缀,需要在服务的 labels 中的 suanleme_n.http.port 以及suanleme_n.http.prefix字段中指定。其中 n 代表这个转发端口的序号,n 从 0 开始。如果有多个端口需要转发,请按顺序使用 suanleme_n 标签,如 suanleme_0, suanleme_1, suanleme_2。【注:转发端口前必须为suanleme0,suanleme1, suanleme2。。。】每一个 http.port 标签下面需要对应一个 http.prefix 标签,这是用来告诉服务器将去往 http.port 标签中的端口的请求解析到 "http.prefix-用户前缀-任务前缀,【prefix必须是4-16位,且只能是以小写字母开头的 小写字母+数字 的格式】。run.suanleme.cn" 这个域名。这个域名中的用户前缀和任务前缀会被自动拼接,不用写在 docker compose 中。用户前缀和任务前缀不能出现点,空格,横杠等特殊字符。下面是一个示例:
在这个示例中,容器的 3000,3010,6006 和 8888 端口均被转发到了对应域名前缀的域名。
- yaml
labels: 第一个转发端口 - suanleme_0.http.port=3000 - suanleme_0.http.prefix=sd3000 # 第二个转发端口 - suanleme_1.http.port=3010 - suanleme_1.http.prefix=sd3010 # 第三个转发端口 - suanleme_2.http.port=6006 - suanleme_2.http.prefix=sd6006 # 第四个转发端口 - suanleme_3.http.port=8888 - suanleme_3.http.prefix=sd8888 - yaml
- suanleme_3.http.prefix=sd8888 #为镜像与宿主机的转发端口
其他配置
docker-compose 的其余部分可以根据应用的具体需求进行自定义配置。
以下是一个完整的 docker-compose 示例文件,展示了如何配置一个符合共绩云要求的 stable diffusion 服务:
version: '3.8'
services:
stable_diffusion:
image: harbor.suanleme.cn/library/ashleykza-stable-diffusion-webui
network_mode: bridge
labels:
# 第一个转发端口
- suanleme_0.http.port=3000
- suanleme_0.http.prefix=sd3000
# 第二个转发端口
- suanleme_1.http.port=3010
- suanleme_1.http.prefix=sd3010
# 第三个转发端口
- suanleme_2.http.port=6006
- suanleme_2.http.prefix=sd6006
# 第四个转发端口
- suanleme_3.http.port=8888
- suanleme_3.http.prefix=sd8888
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]该文件仅用于演示目的而不用于展示实际功能,请根据具体需求编写自己的 docker-compose 文件。
如何用 docker 向共绩云的 Harbor 镜像站推镜像
步骤 1: 登录到共绩云镜像站
在推送镜像之前,需要使用 docker login 命令登录到共绩云镜像站。在终端中输入以下命令:
docker login harbor.suanleme.cn输入用户名和密码进行认证。如果登录成功,将看到 Login Succeeded 的消息。
步骤 2: 标记镜像
在推送镜像之前,需要为镜像打上一个标签(tag),这个标签应该包含共绩云镜像站的地址。假设有一个本地镜像 my-image,可以使用以下命令为其打标签:
docker tag my-image harbor.suanleme.cn/library/my-image:my-tag在这个命令中,library 是共绩云镜像站上的一个公共项目的名称,my-image 是镜像的名称,my-tag 是镜像的标签。可以根据实际情况替换这些值。一般情况下,my-tag可为 "latest", 意为这个镜像的最近版本。
步骤 3: 推送镜像
打好标签后,可以使用 docker push 命令将镜像推送到共绩云镜像站:
docker push harbor.suanleme.cn/library/my-image:my-tag镜像推送过程中,会看到上传进度的信息。如果推送成功,将在共绩云镜像站的 Web 界面上看到镜像。
