构建Docker Hub仓库
Docker官方提供了registry镜像,该镜像可以很方便的帮助我们创建Docker Hub,使用如下命令即可。
docker run -d -p 5000:5000 --restart=always --name registry registry
默认情况下,仓库会保存在容器的/var/lib/registry目录下。为了更方便的备份和移动仓库,我们希望仓库保存在本地路径下,一次在上述命令中添加-v参数。如
docker run -d \
-p 5000:5000 \
-v /opt/data/registry:/var/lib/registry \
registry
上传镜像到仓库
- 标记本地镜像
将本地已生成的镜像使用docker tag打上标签,标签格式为:
[REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]
例如本地image如下
REPOSITORY TAG IMAGE ID CREATED SIZE
sample latest 394cbb1d54f5 26 seconds ago 407MB
那么标记sample镜像的命令如下
docker tag sample:latest www.****.com:5000/sample:latest
www.****.com为域名,如果没有可用IP地址代替。
- 上传标记镜像
使用push命令上传标记的镜像到仓库。
docker push www.****.com:5000/sample:latest
- 检查上传结果
使用curl可以查看仓库中的镜像,命令如下
curl www.****.com:5000/v2/_catalog
仓库的使用
- docker命令
image前面加上自建仓库的地址即可,如
docker pull www.****.com:5000/sample:latest
- docker compose 和Dockerfile使用
compose 中image字段同命令一样添加地址,如
image: www.****.com:5000/sample:latest
Dockerfile也类似,如
FROM www.****.com:5000/sample:latest
拾遗
- 上例中www.****.com为域名,需根据实际情况修改
- 服务如是国内云服务商提供,域名需备案
- 使用域名上传下载镜像默认使用SSL验证,可在daemon.json文件中添加insecure-registries字段取消,如
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"insecure-registries": [
"www.****.com:5000"
],
}