Docker Registry 私有的 Docker 镜像仓库
Docker Registry 是存储和分发 Docker 镜像的服务。Docker 镜像仓库可以存储和分发各种 Docker 镜像,包括官方镜像和用户自定义镜像。Docker Registry 还支持镜像的版本控制和标签,可以方便地管理和使用镜像。
Registry 官方链接
Registry 镜像下载
一. 官方镜像下载
registry 最新镜像下载
docker pull registry:latest
registry:2.8.2 镜像下载
docker pull registry:2.8.2
二. 国内备份镜像下载
Registry 服务部署
一. cli 命令部署
- 启动简单的 registry 容器
$ docker run -d -p 5000:5000 --name registry registry:latest
- 开启 registry 容器自启动功能。 添加
--restart=always
参数,表示 registry 容器在 Docker 重启或者退出后会跟随自动重启。
docker run -d \
-p 5000:5000 \
--restart=always \
--name registry \
registry:latest
- 自定义存储本机存储位置。 添加
-v /path/to/registry:/var/lib/registry
参数,将 registry 容器内的/var/lib/registry
目录映射到本机的/path/to/registry
目录。
docker run -d \
-p 5000:5000 \
-v /path/to/registry:/var/lib/registry \
--restart=always \
--name registry \
registry:latest
- 部署 registry 容器,允许删除镜像。
docker run -d \
-p 5000:5000 \
-e REGISTRY_STORAGE_DELETE_ENABLED=true \
--restart=always \
--name registry \
registry:latest
- 更改 registry 容器内的监听端口。 如果想要更改容器内的监听端口,可以使用
-e REGISTRY_HTTP_ADDR=0.0.0.0:5001
参数,将 registry 容器内的监听端口更改为 5001。
docker run -d \
-e REGISTRY_HTTP_ADDR=0.0.0.0:5001 \
-p 5001:5001 \
--name registry-test \
registry:2
- 创建一个带有基本的身份验证的 registry 容器。 registry 容器默认是公开的,任何人都可以访问。为了保护镜像的安全,可以使用基本的身份验证来限制访问。可以使用 htpasswd 命令来创建一个用户名和密码的文件,然后将该文件挂载到容器中。
- 创建一个 htpasswd 文件,其中包含用户名和密码。 示例中使用了用户名
username
和密码password
。
docker pull httpd:latest
mkdir auth
docker run \
--entrypoint htpasswd \
httpd:latest -Bbn username password > auth/htpasswd
- 创建一个带有身份验证的 registry 容器,并将 htpasswd 文件挂载到容器中。
docker run -d \
-p 5000:5000 \
--restart=always \
--name registry \
-v /path/to/registry/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
registry:latest
二. docker-compose 部署
使用 docker-compose 部署 registry 容器,可以方便地管理和扩展 registry 服务。
- 创建一个名为 docker-compose.yml 的文件,并在其中添加以下内容:
services:
registry:
container_name: registry
image: registry:latest
restart: always
volumes:
- /path/to/registry/data/registry:/var/lib/registry # 存储目录挂载
- /path/to/registry/auth:/auth # 身份验证
environment:
- REGISTRY_AUTH=htpasswd # 身份验证
- REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd # 身份验证
- REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm # 身份验证
- REGISTRY_STORAGE_DELETE_ENABLED=true # 允许删除镜像
ports:
- "5000:5000"
其他
////
使用 httpd 创建基本身份验证
- 拉取 httpd 镜像
docker pull httpd:2.4.62
- 生成密码文件
docker run \
--entrypoint htpasswd \
httpd:2.4.62 -Bbn [user] [password] > auth/htpasswd
请将[user]
和[password]
替换为实际的用户名和密码。
创建 Docker Compose 文件
要创建一个 Docker Compose 文件,可以按照以下步骤进行操作:
创建一个名为 docker-compose.yml 的文件。
在 docker-compose.yml 文件中添加以下内容:
docker run -d \
-p 5000:5000 \
--restart=always \
--name registry \
-v /Users/martin/Documents/AppData/registry/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
registry:2.8.2
services:
registry:
container_name: registry
image: registry:2.8.2
restart: always
ports:
- "5000:5000"
volumes:
- /Users/martin/Documents/AppData/registry/data/registry:/var/lib/registry
- /Users/martin/Documents/AppData/registry/auth:/auth
environment:
- REGISTRY_AUTH=htpasswd
- REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
- REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
- REGISTRY_STORAGE_DELETE_ENABLED=true
browser:
container_name: browser
image: klausmeyer/docker-registry-browser:1.7.4
restart: always
ports:
- "8280:8080"
environment:
- DOCKER_REGISTRY_URL=http://10.0.0.2:5000/v2
- ENABLE_DELETE_IMAGES=true
depends_on:
- registry
Docker Registry 的安装和配置
Docker Registry 可以使用 Docker 官方提供的 Docker Registry 镜像来安装和配置。以下是在 Ubuntu 上安装和配置 Docker Registry 的步骤:
安装 Docker
sudo apt-get update sudo apt-get install docker.io
下载 Docker Registry 镜像
docker pull registry
运行 Docker Registry 容器
docker run -d -p 5000:5000 --restart=always --name registry registry
这将在本地的 5000 端口上运行 Docker Registry 容器,并将其命名为 registry。
配置 Docker Registry
Docker Registry 的配置文件位于 /etc/docker/registry/config.yml。可以使用以下命令编辑配置文件:
sudo nano /etc/docker/registry/config.yml
在配置文件中,可以设置 Docker Registry 的存储路径、认证方式、镜像仓库的访问权限等。
重启 Docker Registry
docker restart registry
Docker Registry 的使用
使用 Docker Registry 需要使用 Docker 命令行工具。以下是一些常用的 Docker Registry 命令:
登录 Docker Registry
docker login <registry-url>
这将提示输入用户名和密码,用于登录 Docker Registry。
上传镜像到 Docker Registry
bashdocker tag <image-name> <registry-url>/<repository-name>:<tag> docker push <registry-url>/<repository-name>:<tag>
这将把本地的镜像上传到 Docker Registry,并指定镜像的仓库名和标签。
从 Docker Registry 下载镜像
docker pull <registry-url>/<repository-name>:<tag>
这将从 Docker Registry 下载指定的镜像。
删除 Docker Registry 中的镜像
docker rmi <registry-url>/<repository-name>:<tag>
这将删除 Docker Registry 中的指定镜像。
Docker Registry 的安全性
Docker Registry 的安全性非常重要,因为它存储了所有的 Docker 镜像。以下是一些提高 Docker Registry 安全性的建议:
使用 HTTPS
Docker Registry 支持使用 HTTPS 协议进行通信,这可以确保通信的安全性。可以使用 Let's Encrypt 等证书颁发机构来获取免费的 SSL 证书。
使用认证
Docker Registry 支持使用认证来保护镜像的访问权限。可以使用 Docker Registry 的认证插件来实现认证功能。
使用镜像签名
Docker Registry 支持使用镜像签名来验证镜像的完整性和来源。可以使用 Docker Content Trust 来实现镜像签名功能。
定期更新 Docker Registry
定期更新 Docker Registry 可以修复已知的安全漏洞,提高 Docker Registry 的安全性。
Docker Registry 的备份和恢复
Docker Registry 的备份和恢复非常重要,因为它存储了所有的 Docker 镜像。以下是一些备份和恢复 Docker Registry 的建议:
备份 Docker Registry 数据
Docker Registry 的数据存储在文件系统中,可以使用以下命令备份 Docker Registry 数据:
sudo tar -cvzf registry-data.tar.gz /var/lib/registry
这将把 Docker Registry 的数据压缩成一个 tar.gz 文件。
恢复 Docker Registry 数据
如果 Docker Registry 数据丢失或损坏,可以使用以下命令恢复 Docker Registry 数据:
sudo tar -xvzf registry-data.tar.gz -C /var/lib/registry
这将把备份的 Docker Registry 数据解压到 /var/lib/registry 目录中。
使用 Docker Registry 的备份和恢复功能
Docker Registry 支持使用备份和恢复功能来备份和恢复 Docker Registry 数据。可以使用以下命令备份 Docker Registry 数据:docker run -d --name registry-backup --restart=always -v /var/lib/registry:/var/lib/registry -v /backup:/backup registry:2.7 backup
这将在后台运行一个 Docker 容器,用于备份 Docker Registry 数据。备份的数据将存储在 /backup 目录中。
如果需要恢复 Docker Registry 数据,可以使用以下命令:
bashdocker run -d --name registry-restore --restart=always -v /var/lib/registry:/var/lib/registry -v /backup:/backup registry:2.7 restore
这将在后台运行一个 Docker 容器,用于恢复 Docker Registry 数据。恢复的数据将存储在 /var/lib/registry 目录中。
以上是 Docker Registry 的安装、配置、使用、安全性、备份和恢复的介绍。希望对你有所帮助。