本次实验的目标是在上安装Docker私有镜像库。

  1. 拉取官方Registry镜像最新版,执行
1
docker pull registry:2
  1. 在本地建立名为 docker_registry 的镜像保存目录
1
2
3
4
mkdir ~/docker
mkdir ~/docker/registry
mkdir ~/docker/registry/data
mkdir ~/docker/registry/config
  1. 编辑镜像库配置文件(使用文本编辑器), 内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
version: 0.1
log:
fields:
service: registry
storage:
delete:
enabled: true
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
  1. 启动镜像库容器,并映射目录和配置文件
1
docker run --name MyRegistry -d -p 5000:5000 -v /home/stu/docker/registry/data:/var/lib/registry -v /home/stu/docker/registry/config/config.yml:/etc/docker/registry/config.yml registry:2
  1. 验证安装

使用浏览器访问:

1
http://localhost:5000/v2/_catalog

或是执行:

1
curl http://localhost:5000/v2/_catalog
  1. 修改本地docker 设置文件 /etc/docker/daemon.json
    加入http的本地镜像库访问
1
sudo vi /etc/docker/daemon.json

加入如下设置:
“insecure-registries”: [“localhost:5000”]
注意,用你的实际ip替换 localhost
加入以后的文件内容为:

1
2
3
4
{
"registry-mirrors": [ "https://registry.docker-cn.com"],
"insecure-registries": ["localhost:5000"]
}

重启docker

1
sudo systemctl restart docker
  1. 上传镜像到本地私有库中
1
2
docker tag alpine-base localhost:5000/alpine-base
docker push localhost:5000/alpine-base
  1. 验证上传

使用浏览器访问:

1
http://localhost:5000/v2/_catalog

再访问

1
http://localhost:5000/v2/apline-base/tags/list
  1. 从私有库拉取镜像
    首先,删除本地的 alpine-base 镜像
1
docker rmi alpine-base

执行以下命令拉取私有库镜像

1
docker pull localhost:5000/alpine-base

执行 docker images 命令查看结果