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 运行之前,需要进行一些配置:
- 存储位置:默认情况下,所有镜像都会被存储在 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
- 认证:默认情况下,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 镜像,使得共享镜像更加容易。在生产环境中,要确保使用适当的身份验证和外部存储设置。