0x00 环境
Ubuntu 18.04
docker-ce 18.06
0x01 pull&run registry
官方拉registry镜像运行
docker run -dt -p PORT:5000 --restart=always --name NAME registry
#--restart=always 每次启动docker启动该容器
或者挂在本地目录到容器目录
docker run -dt -p PORT:5000 --restart=always -v /opt/data/registry:/var/lib/registry --name NAME registry
进入registry
docker exec -it CONTAINERID sh
0x02 非本机连接registry
由于现在的docker默认https,运行registry容器之后只能通过本地ip 127.0.0.1:5000上传镜像,如果需要在局域网内进行pull和push的话需要在进行pull和push的机器上设置.
证书比较麻烦,选择增加非安全连接白名单
sudo chmod 777 /etc/docker/daemon.json
vim /etc/docker/daemon.json
在{}内添加
"insecure-registries":["IP:PORT"]
注意:如果之前该文件有内容的话,比如aliyun的加速地址,那么记得在后面添加逗号
保存退出
sudo systemctl daemon-reload #reload daemon
sudo systemctl restart docker #restart docker
0x03 test
拉取一个镜像,以hello-world示例
docker pull hello-world #拉取hello-world镜像
docker tag hello-world:latest IP(or 127.0.0.1):PORT/NAME:VERSION
#给镜像贴上标签
#IP(or 127.0.0.1):PORT是必须的,用于docker识别私有仓库
#NAME:VERSION为一般格式
push标记镜像
docker push IP(or 127.0.0.1):PORT/NAME:VERSION
#IP(or 127.0.0.1):PORT/NAME:VERSION 之前写的什么就用什么
用curl查看registry中的镜像
curl IP(or 127.0.0.1):PORT/v2/_catalog
pull之前push的镜像
docker pull IP(or 127.0.0.1):PORT/NAME:VERSION