Docker 仓库管理


Docker 仓库管理

Docker 仓库是一个中央化的存储库,用于存储和分享 Docker 镜像。有两种类型的 Docker 仓库:公共和私人。公共 Docker 仓库是开放采用的,因此任何人都可以查询、下载和分享镜像。而私有 Docker 仓库则限制为特定的用户或组织使用。在本文中,我们将学习如何设置并管理 Docker 仓库。

安装 Docker Registry

Docker Registry 是官方的 Docker 仓库管理器,可以用于创建、管理和存储 Docker 镜像。安装 Docker Registry 非常简单。可以执行以下命令来安装:

# 安装 Docker Registry
docker run -d -p 5000:5000 --restart=always --name registry registry:2

在安装完成后,可以使用命令 docker ps 来检查 Docker Registry 是否运行:

CONTAINER ID     IMAGE        ...  PORTS                    NAMES
36f4ff9de3a1     registry:2   ...  0.0.0.0:5000 -> 5000/tcp  registry

配置 Docker Registry

在 Docker Registry 运行之前,需要进行一些配置:

  1. 存储位置:默认情况下,所有镜像都会被存储在 Docker Registry 容器的文件系统中,这可能会导致存储空间不足。因此,最好使用外部存储来存储镜像。可以在启动 registry 容器上使用 -v 标志来指定外部存储位置:
# 使用 /mnt/registry 作为 registry 的存储路径
docker run -d -p 5000:5000 --restart=always --name registry -v /mnt/registry:/var/lib/registry registry:2
  1. 认证:默认情况下,Docker Registry 不需要身份验证即可访问。但是,在生产环境中,安全性很重要,因此我们可以启用身份验证。可以通过使用 htpasswd 工具来创建一个基于密码的账户:
# 安装 htpasswd 工具
sudo apt-get install apache2-utils

# 创建名为 myuser 的账户
htpasswd -Bc /mnt/registry/auth/htpasswd myuser

然后,在启动 Docker Registry 时使用 --usernamem myuser --password-stdin 标志启用身份验证:

# 启动 registry 容器,使用指定的密码进行身份验证
docker run -d -p 5000:5000 --restart=always --name registry -v /mnt/registry:/var/lib/registry \
    -v /mnt/registry/auth:/auth \
    -e "REGISTRY_AUTH=htpasswd" \
    -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
    -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
    -e "REGISTRY_STORAGE_DELETE_ENABLED=true" \
    -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt" \
    -e "REGISTRY_HTTP_TLS_KEY=/certs/domain.key" \
    -v /mnt/certificates:/certs \
    registry:2

使用 Docker Registry

在本地系统上使用 Docker 镜像时,可以将其推送到 Docker Registry 以便以后使用或与团队分享。可以使用以下命令将镜像推送到 Docker Registry:

#打一个名为my-docker-image的tag(版本)
sudo docker tag my-image localhost:5000/my-docker-image:my-tag

#推送这个tag到Registry服务器
sudo docker push localhost:5000/my-docker-image:my-tag

要从 Docker Registry 中提取图像,则可以使用以下命令:

# 从 Registry 拉取 my-docker-image 镜像
docker pull localhost:5000/my-docker-image:my-tag

结语

通过使用 Docker Registry,可以创建、管理和存储 Docker 镜像,使得共享镜像更加容易。在生产环境中,要确保使用适当的身份验证和外部存储设置。