1分钟学会使用docker-compose部署 registry 以及可视化镜像

获取 docker-compose:

curl -L https://github.com/docker/compose/releases/download/2.2.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

docekr-compose.yaml:

version: '3.3'

services:
  registry-ui:
    image: joxit/docker-registry-ui:main
    restart: always
    ports:
      - 8080:80
    environment:
      - SINGLE_REGISTRY=true
      - REGISTRY_TITLE=Docker Registry UI
      - DELETE_IMAGES=true
      - SHOW_CONTENT_DIGEST=true
      - NGINX_PROXY_PASS_URL=http://registry-server:5000
      - SHOW_CATALOG_NB_TAGS=true
      - CATALOG_MIN_BRANCHES=1
      - CATALOG_MAX_BRANCHES=1
      - TAGLIST_PAGE_SIZE=100
      - REGISTRY_SECURED=false
      - CATALOG_ELEMENTS_LIMIT=1000
    container_name: registry-ui

  registry-server:
    image: registry:2.8.2
    restart: always
    ports: 
      - 5000:5000
    environment:
      REGISTRY_HTTP_HEADERS_Access-Control-Origin: '["*"]'
      REGISTRY_HTTP_HEADERS_Access-Control-Allow-Methods: '[HEAD,GET,OPTIONS,DELETE]'
      REGISTRY_HTTP_HEADERS_Access-Control-Credentials: '[true]'
      REGISTRY_HTTP_HEADERS_Access-Control-Allow-Headers: '[Authorization,Accept,Cache-Control]'
      REGISTRY_HTTP_HEADERS_Access-Control-Expose-Headers: '[Docker-Content-Digest]'
      REGISTRY_STORAGE_DELETE_ENABLED: 'true'
    volumes:
      - /data/registry:/var/lib/registry
    container_name: registry-server

启动:

docker-compose -d up 

查看容器运行状态:

docker-compose ps
     Name                    Command               State                    Ports                  
---------------------------------------------------------------------------------------------------
registry-server   /entrypoint.sh /etc/docker ...   Up      0.0.0.0:5000->5000/tcp,:::5000->5000/tcp
registry-ui       /docker-entrypoint.sh ngin ...   Up      0.0.0.0:8080->80/tcp,:::8080->80/tcp 

发布一个镜像到local registry:

[root@hub-117 ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
5b5fe70539cd: Downloading 
441a1b465367: Download complete 
3b9543f2b500: Download complete 
ca89ed5461a9: Download complete 
b0e1283145af: Download complete 
4b98867cde79: Download complete 
4a85ce26214d: Download complete 
latest: Pulling from library/nginx
5b5fe70539cd: Pull complete 
441a1b465367: Pull complete 
3b9543f2b500: Pull complete 
ca89ed5461a9: Pull complete 
b0e1283145af: Pull complete 
4b98867cde79: Pull complete 
4a85ce26214d: Pull complete 
Digest: sha256:593dac25b7733ffb7afe1a72649a43e574778bf025ad60514ef40f6b5d606247
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@hub-117 ~]# docker tag docker.io/library/nginx:latest 10.10.13.117:5000/nginx:latest
[root@hub-117 ~]# docker push 10.10.13.117:5000/nginx:latest
The push refers to repository [10.10.13.117:5000/nginx]
9e96226c58e7: Pushed 
12a568acc014: Pushed 
7757099e19d2: Pushed 
bf8b62fb2f13: Pushed 
4ca29ffc4a01: Pushed 
a83110139647: Pushed 
ac4d164fef90: Pushed 
latest: digest: sha256:d2b2f2980e9ccc570e5726b56b54580f23a018b7b7314c9eaff7e5e479c78657 size: 1778

查看 web ui:

 镜像详情:可删除的噢

<think>好的,我现在需要解决用户的问题,关于在Ubuntu系统中使用Docker部署Milvus和Attu时,docker-compose.yml文件的放置位置,以及是否可以将Attu集成到同一个docker-compose.yml文件中。首先,我要回顾用户之前的对话,确保不遗漏重要信息。 用户之前已经询问过如何部署Milvus和Attu,我的回答中提到了使用Docker单容器和Docker Compose两种方式。现在用户的问题集中在docker-compose.yml文件的位置以及如何将Attu集成进去。用户还提到了站内引用,其中引用了两种安装Docker Compose的方法,分别是使用apt安装和手动下载。这可能意味着用户对Docker Compose的安装方法有疑问,但当前问题更关注于文件位置和集成配置。 首先,我需要确认docker-compose.yml文件的位置。通常在Docker Compose项目中,这个文件放在项目根目录下,用户可以自行决定目录结构。常见做法是创建一个专门的目录,比如~/milvus-attu/,然后将docker-compose.yml放在里面。需要提醒用户使用绝对路径或相对路径时的注意事项,特别是卷挂载时的路径问题。 接下来,关于将Attu集成到同一个docker-compose.yml文件中。之前我的回答中分别给出了Milvus和Attu的单独部署命令,现在需要将它们合并到一个Compose文件中。需要确保两个服务都正确定义,并且Attu的环境变量MILVUS_URL正确指向Milvus服务。这里需要注意Docker Compose的网络设置,默认情况下,同一Compose文件中的服务会共享一个网络,因此Attu可以通过服务名称(如milvus)来访问Milvus的端口,而不需要使用宿主机IP。这可以避免之前提到的必须使用局域网IP的问题,因为容器间通过服务名称通信。 然后,我需要检查版本兼容性,确保Milvus和Attu的镜像版本是兼容的,比如用户之前提到的v2.4.0和v2.3.9。同时,需要解释Compose文件中的各个部分,比如services、volumes、ports等,让用户理解每个配置的作用。 可能还需要提醒用户关于端口冲突的问题,如果之前单独运行过Milvus或Attu的容器,需要先停止并删除旧的容器,避免端口占用。此外,数据持久化也是关键,通过volumes配置确保Milvus的数据不会随着容器销毁而丢失。 用户可能存在的潜在疑问包括:如何验证集成后的服务是否正常工作,如何处理网络配置,如何更新服务等。因此,在回答中需要包含验证步骤,比如检查容器状态、访问Attu界面等。 最后,总结docker-compose.yml的最佳实践,比如文件位置建议、集成配置的优势,以及常见问题的解决方法,如连接失败时的排查步骤。同时,确保引用之前的建议,比如版本兼容性和网络设置,避免重复错误。</think>以下是在Ubuntu系统中部署Milvus和Attu时关于`docker-compose.yml`文件位置及集成配置的详细说明: --- ### 一、docker-compose.yml文件位置规则 1. **自定义目录存放** - 推荐在项目根目录(如`~/milvus-attu/`)创建文件 - 任意路径均可运行,但需注意**路径中的空格和特殊字符**可能导致问题 - 示例操作: ```bash mkdir -p ~/milvus-attu && cd ~/milvus-attu touch docker-compose.yml # 在此文件中编写配置 ``` 2. **关键路径说明** -使用`volumes`挂载本地目录,需确保路径正确性(建议使用**绝对路径**) - 配置文件中如`./data:/var/lib/milvus`表示**当前目录下的data文件夹** --- ### 二、集成Attu的docker-compose.yml配置 #### 完整配置文件示例 ```yaml version: '3.5' services: # Milvus服务 milvus: image: registry.zilliz.com/milvus/milvus:v2.4.0 ports: - "19530:19530" - "9091:9091" volumes: - milvus_data:/var/lib/milvus networks: - milvus_net # Attu可视化服务 attu: image: zilliz/attu:v2.3.9 ports: - "8000:3000" environment: MILVUS_URL: milvus:19530 # 通过服务名访问 networks: - milvus_net depends_on: - milvus volumes: milvus_data: networks: milvus_net: driver: bridge ``` #### 配置要点解析 1. **网络配置** - 创建专用网络`milvus_net`,使容器间可通过**服务名称通信**(无需使用宿主机IP)[^1] - Attu的`MILVUS_URL`设置为`milvus:19530`(服务名 + 内部端口) 2. **版本兼容性** - 保持Milvus(v2.4.0)与Attu(v2.3.9)版本匹配(参考[官方兼容性列表](https://milvus.io/docs/attu.md)) 3. **数据持久化** - 使用命名卷`milvus_data`保存数据库文件,避免容器销毁时数据丢失 --- ### 三、操作流程 1. **启动服务** ```bash cd ~/milvus-attu # 进入docker-compose.yml所在目录 docker compose up -d ``` 2. **验证部署** - 检查容器状态: ```bash docker compose ps ``` - 访问Attu界面: ``` http://服务器IP:8000 ``` 3. **停止服务** ```bash docker compose down ``` --- ### 四、常见问题解决 | 问题现象 | 解决方案 | |---------|----------| | Attu连接超时 | 确认`milvus`服务在`docker compose ps`中状态为`running` | | 端口冲突 | 停止已有容器:`docker stop 旧容器名` | | 数据未保存 | 检查`volumes`配置路径权限:`chmod 777 ~/milvus-attu/data` | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一彡十

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值