Docker 安装与配置 Docker Registry 指南

server/2024/10/19 3:35:35/
一、安装 Docker
  1. 解压docker.tar文件

    root@iZbp1h35mcqj4eppj2bo1rZ:/data/dw# tar xf docker.tar
    

    解压后检查当前目录,发现解压出一个名为 docker_install 的目录。

  2. 进入解压出的目录并查看内容

    root@iZbp1h35mcqj4eppj2bo1rZ:/data/dw# cd docker_install/
    root@iZbp1h35mcqj4eppj2bo1rZ:/data/dw/docker_install# ls
    docker-20.10.24-aarch64.tgz  docker-20.10.24-nvidia-x86_64.tgz  install.sh  README.md  uninstall.sh  upgrade.sh  VERSION
    

    解压出的目录包含多个文件,其中 install.sh 脚本用于安装 Docker。

  3. 执行安装脚本并指定安装路径和注册表地址

    root@iZbp1h35mcqj4eppj2bo1rZ:/data/dw/docker_install# bash install.sh /data/docker 127.0.0.1:5000
    

    安装完成后,Docker 服务处于 inactive (dead) 状态。

  4. 创建目录并检查 Docker 镜像

    root@iZbp1h35mcqj4eppj2bo1rZ:/data# mkdir images
    root@iZbp1h35mcqj4eppj2bo1rZ:/data# docker images
    

    初始状态下没有任何镜像。

  5. 加载registry.tar镜像文件

    root@iZbp1h35mcqj4eppj2bo1rZ:/data/dw# docker load < registry.tar
    

    加载成功后,镜像 ID 为 2d4f4b5309b1

  6. 给镜像打标签并成功

    root@iZbp1h35mcqj4eppj2bo1rZ:/data/images# docker tag 2d4f4b5309b1 registry:latest
    
  7. 检查镜像是否打标签成功

    root@iZbp1h35mcqj4eppj2bo1rZ:/data/images# docker images
    REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
    registry     latest    2d4f4b5309b1   4 years ago   26.2MB
    

总结:

  • 成功解压并安装了 Docker。
  • 加载了 registry.tar 镜像。
  • 成功为镜像打上了 registry:latest 标签。
  • 需要注意的是,安装完成后 Docker 服务未启动,可能需要手动启动 Docker 服务。

二、准备 Docker Registry 配置文件
  1. 创建并编辑 config.yml 文件

    root@iZbp1h35mcqj4eppj2bo1rZ:/data/images# vim config.yml
    

    config.yml 文件中添加以下内容:

    version: 0.1
    log:fields:service: registry
    storage:delete:enabled: truecache:blobdescriptor: inmemoryfilesystem:rootdirectory: /var/lib/registry
    http:addr: :5000headers:X-Content-Type-Options: [nosniff]
    health:storagedriver:enabled: trueinterval: 10sthreshold: 3
    

    配置文件说明:

    • version:配置文件版本。
    • log.fields.service:日志服务名称。
    • storage.delete.enabled:启用删除镜像功能。
    • storage.cache.blobdescriptor:缓存策略。
    • storage.filesystem.rootdirectory:镜像存储目录。
    • http.addr:注册表服务监听地址。
    • http.headers.X-Content-Type-Options:HTTP 头配置。
    • health.storagedriver:存储驱动健康检查配置。

三、运行 Docker Registry 容器
  1. 运行 Docker Registry 容器

    docker run -d -e REGISTRY_STORAGE_DELETE_ENABLED="true" --name docker-registry --restart=always -p 5000:5000 -v $PWD/registry:/var/lib/registry -v $PWD/config.yml:/etc/docker/registry/config.yml registry
    

    该命令执行后输出一个容器 ID bb88dec8a383eb0155bd7485f4fbbb031354658a8a3d1a7761795e123259c4d9,表示容器启动成功。

    具体参数解释:

    • -d:后台运行容器。
    • -e REGISTRY_STORAGE_DELETE_ENABLED="true":设置环境变量,启用删除镜像功能。
    • --name docker-registry:为容器指定名称 docker-registry
    • --restart=always:设置容器自动重启策略。
    • -p 5000:5000:将主机的 5000 端口映射到容器的 5000 端口。
    • -v $PWD/registry:/var/lib/registry:将当前目录下的 registry 目录挂载到容器内的 /var/lib/registry 目录。
    • -v $PWD/config.yml:/etc/docker/registry/config.yml:将当前目录下的 config.yml 文件挂载到容器内的 /etc/docker/registry/config.yml 文件。
    • registry:使用的镜像名称。
  2. 查看运行中的 Docker 容器

    root@iZbp1h35mcqj4eppj2bo1rZ:/data/images# docker ps
    CONTAINER ID   IMAGE      COMMAND                  CREATED         STATUS         PORTS                                       NAMES
    bb88dec8a383   registry   "/entrypoint.sh /etc…"   6 seconds ago   Up 5 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   docker-registry
    

    可以看到容器 docker-registry 正在运行,且端口映射正确,状态正常。

  3. 检查当前目录内容

    root@iZbp1h35mcqj4eppj2bo1rZ:/data/images# ls
    config.yml  registry
    

    当前目录下有两个文件/目录:

    • config.yml:Docker Registry 的配置文件。
    • registry:挂载到容器内 /var/lib/registry 的目录,用于存储镜像数据。

总结:

  • 成功运行了一个 Docker Registry 容器,并通过环境变量启用了删除镜像功能。
  • 通过端口映射和卷挂载,确保主机和容器之间的配置和数据共享。
  • 容器运行状态正常,可以通过 docker ps 命令确认。

四、配置 Docker Daemon 以支持私有注册表
  1. 编辑 Docker Daemon 配置文件

    root@iZbp1h35mcqj4eppj2bo1rZ:/data/dw# cat /etc/docker/daemon.json
    {"exec-opts": ["native.cgroupdriver=systemd"],"max-concurrent-downloads": 10,"log-driver": "json-file","log-level": "warn","log-opts": {"max-size": "10m","max-file": "3"},"bip":"172.16.0.1/16","insecure-registries":["127.0.0.1:5000","47.251.16.255:5000"],"data-root":"/data/docker"
    }
    

    配置文件说明:

    • exec-opts:Docker 容器的执行选项。
    • max-concurrent-downloads:最大并发下载数。
    • log-driver:日志驱动类型。
    • log-level:日志级别。
    • log-opts:日志选项。
    • bip:Docker 网桥 IP 地址。
    • insecure-registries:不安全的注册表地址列表。
    • data-root:Docker 数据目录。
  2. 重启 Docker 服务

    root@iZbp1h35mcqj4eppj2bo1rZ:/data/images# systemctl restart docker
    

五、从私有注册表拉取镜像
  1. 拉取镜像

    root@iZbp1h35mcqj4eppj2bo1rZ:/data/images# docker pull 47.251.16.255:5000/openmmlab/lmdeploy:latest
    

    拉取成功后,输出如下信息:

    latest: Pulling from openmmlab/lmdeploy
    846c0b181fff: Pulling fs layer 
    846c0b181fff: Pull complete 
    61b1f751e984: Pull complete 
    ...
    Digest: sha256:5fd5c031bf1cf2aa23153cfd5dd2bb8c9d9ce7062454c8f81d9b09ac5677fee2
    Status: Downloaded newer image for 47.251.16.255:5000/openmmlab/lmdeploy:latest
    47.251.16.255:5000/openmmlab/lmdeploy:latest
    
  2. 检查镜像是否拉取成功

    root@iZbp1h35mcqj4eppj2bo1rZ:/data/dw# docker images
    REPOSITORY                              TAG       IMAGE ID       CREATED       SIZE
    47.251.16.255:5000/openmmlab/lmdeploy   latest    177c26fffb4d   3 weeks ago   20.1GB
    registry                                latest    2d4f4b5309b1   4 years ago   26.2MB
    

六、推送镜像到私有注册表
  1. 标记镜像

    root@iZbp1h35mcqj4eppj2bo1rZ:/data/dw# docker tag 47.251.16.255:5000/openmmlab/lmdeploy 127.0.0.1:5000/openmmlab/lmdeploy
    
  2. 推送镜像

    root@iZbp1h35mcqj4eppj2bo1rZ:/data/dw# docker push 127.0.0.1:5000/openmmlab/lmdeploy
    

    推送成功后,输出如下信息:

    Using default tag: latest
    The push refers to repository [127.0.0.1:5000/openmmlab/lmdeploy]
    54444fae79ec: Pushed 
    5f70bf18a086: Pushed 
    ee3dcf62fd47: Pushed 
    ...
    latest: digest: sha256:5fd5c031bf1cf2aa23153cfd5dd2bb8c9d9ce7062454c8f81d9b09ac5677fee2 size: 6421
    
  3. 检查推送结果

    root@iZbp1h35mcqj4eppj2bo1rZ:/data/dw# docker images
    REPOSITORY                              TAG       IMAGE ID       CREATED       SIZE
    127.0.0.1:5000/openmmlab/lmdeploy       latest    177c26fffb4d   3 weeks ago   20.1GB
    47.251.16.255:5000/openmmlab/lmdeploy   latest    177c26fffb4d   3 weeks ago   20.1GB
    registry                                latest    2d4f4b5309b1   4 years ago   26.2MB
    

总结:

  • 成功标记并推送镜像到本地私有注册表。
  • 确保镜像在私有注册表中可用。


http://www.ppmy.cn/server/104379.html

相关文章

【图文并茂】ant design pro 如何对接登录接口

我们拥有 12 年建站编程经验 虚拟产品交易平台定制开发ant design pro & nodejs 多角色权限管理系统源码WordPress 外贸电商独立站建站 我的网站 ant design pro 如何去对接登录呢。 首先你后端要有登录接口。 例如我的&#xff1a; const login handleAsync(async …

科研绘图系列:Python语言时间趋势图

介绍 不同指标在时间上的变化,可以用时间序列线图表示趋势。 加载Python包 import sys import pandas as pd import numpy as np import scipy as sp from scipy import stats import randomimport seaborn as sns import matplotlib.pyplot as plt from matplotl

Qt+ffmpeg环境搭建

Qtffmpeg环境搭建 各平台常见视频开发库举例: iOS&#xff1a;AVFoundation AudioUnitAndroid&#xff1a;MediaPlayer&#xff0c;MediaCodecWindows&#xff1a;DirectShowLinux&#xff1a;GStreamer FFmpeg 库是一个跨平台的视频开发库, 还有 libVLC 也是一个跨平台的视频开…

vue3模拟生成并渲染10万条数据,并实现本地数据el-table表格分页

效果图&#xff1a; 一点都不卡 话不多说&#xff0c;直接上码 <template><div class"container"><h3 class"table-title">el表格 分页</h3><el-table :data"tableList.slice((currentPage-1)*pageSize, currentPage*p…

Information Processing Technician

信息处理技术员试题 🔥SeptemberZone 1.信息是一种() A.资源 B.物质 C.能量 D.载体 2.以下关于信息的表达中,不正确的选项是() A.一切数据都能产生信息 B.信息的产生、处理和传递依靠于物质和能量 C.同一信息在不同的时间可能具有不同的价值 D.信息的屡次使用不会使信息…

Redis (day 3)

一、通过jedis连接数据库 1.首先导入依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>5.1.0</version></de…

XML 实例:深入解析与实际应用

XML 实例&#xff1a;深入解析与实际应用 XML&#xff08;可扩展标记语言&#xff09;是一种用于存储和传输数据的标记语言。它由万维网联盟&#xff08;W3C&#xff09;开发&#xff0c;并已成为在不同系统和应用程序之间交换数据的标准格式。本文将提供对XML的深入解析&…

【Kubernetes】K8s中Container(容器)、Pod(小组)和node(节点)概念讲解

Kubernetes学习之路 第一章 Kubernetes学习入门之Container(容器)、Pod(小组)和node(节点)概念 文章目录 Kubernetes学习之路前言一、Container&#xff08;容器&#xff09;二、Pod&#xff08;小组&#xff09;1.单容器 Pod2.多容器 Pod 三、Container&#xff08;容器&…