一、registry仓库(简单)

1.1、仓库搭建:

1.1.1、安装docker

1.1.2、下载registry镜像(这里下载的是registry:2)

docker pull registry:2

1.1.3、启动registry容器,(设置持久化目录,重启)

docker run -d -v /docker/registry:/var/lib/registry -p 5000:5000 --restart always --name registry registry:2

1.1.4、将主机与容器挂载,防止容器删除,镜像丢失

Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了。

1.1.5、访问

http://127.0.0.1:5000/v2

1.1.6、查看镜像

http://127.0.0.1:5000/v2/_catalog`<br />curl -XGET http://localhost:5000/v2/_catalog`

1.1.7、查看tag

http://192.100.3.26:5000/v2/rabbitmq/tags/list

1.1.8、API

https://docs.docker.com/registry/spec/api/

1.2、服务端配置本地仓库

1.2.1、vim /etc/docker/daemon.json

  1. tee /etc/docker/daemon.json <<-'EOF'
  2. {
  3. "insecure-registries":["192.100.3.26:5000"]
  4. }
  5. EOF

1.2.2、加载配置重启

  1. systemctl daemon-reload
  2. systemctl restart docker

1.2.3、推送镜像

  1. docker tag hello-world 192.100.3.26:5000/hello-world:latest
  2. docker push 192.100.3.26:5000/hello-world:latest

二、nexus3仓库(强大)

CentOS7下使用Sonatype Nexus3搭建Docker私有仓库
权限问题

2.1、仓库搭建

2.1.1、安装docker

yum install docker -y

2.1.2、安装nexus3仓库

docker pull sonatype/nexus3

2.1.3、启动容器

  1. docker run -d --name nexus3 --restart=always -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 8084:8084 -p 8085:8085 -v /nexus-data:/nexus-data -u root --privileged=true sonatype/nexus3
  2. #容器默认启动是以nexus用户启动的,所以在/nexus-data没有w权限,需要将目录权限改为777或使容器以root权限运行,须加入u root --privileged=true参数
  3. #8081问管理端口,其他未预留端口

2.1.4、访问管理页面

http://localhost:8081

2.1.5、登录

  1. //在docker目录下查找admin.password文件并查看
  2. cat /nexus-data/admin.password
  3. //这一串guid就是默认密码
  4. d374c028-9760-4dd8-b911-3cb67ebddba5

2.1.6、修改密码

admin/admin

2.1.7、安全设置

2.1.8、服务端设置私有仓库

  1. //编辑docker服务端设置
  2. vim /etc/docker/daemon.json
  3. //将下面内容加到配置文件中
  4. "insecure-registries":["http://localhost:5000"]
  5. //重载配置文件
  6. systemctl daemon-reload
  7. //重启Docker
  8. systemctl restart docker
  9. //查看设置是否生效
  10. docker info

2.1.9、测试

  1. 1.登录nexus私有仓库,测试是否可以连接成功
  2. //输入admin账号密码
  3. docker login http://localhost:5000
  4. **登录后用户信息保存在$HOME/.docker/config.json,如果需要切换账号就清空该文件内容即可。
  5. docker pull hello-world
  6. docker tag hello-world localhost:5000/hello-world
  7. docker push localhost:5000/hello-world
  8. #查看

2.2、docker仓库创建

2.2.1、创建docker-hosted

image.png

2.2.2、创建docker-proxy

image.png
image.png

2.2.3、创建docker-group

image.png

2.2.4、使用配置

vim /etc/docker/daemon.json

  1. {
  2. "registry-mirrors": ["http://192.100.5.140:8084"],
  3. "insecure-registries":["192.100.5.140:8082"]
  4. }

registry-mirrors:配置镜像仓库,这里可以是docker-group的地址,也可以是单个代理镜像的地址
拉去镜像时:需要填写完整的镜像,否则会报错:docker search 时也会报错:
Error response from daemon: Get https://index.docker.io/v1/search?q=zookeeper&n=25: dial tcp: lookup index.docker.io on 10.0.0.1:53: server misbehaving