Docker 仓库
仓库(Repository)是集中存放镜像的地方。
一个容易混淆的概念是注册服务器( Registry )。
实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。
从这方面来说,仓库可以被认为是一个具体的项目或目录。
例如:
对于仓库地址 dl.dockerpool.com/ubuntu 来说,
- dl.dockerpool.com 是注册服务器地址,
- ubuntu 是仓库名。
大部分时候,并不需要严格区分这两者的概念。
Docker Hub
基本操作
查找官方仓库中的镜像:
docker search centos
查找镜像,增加条件(比如星星数在100以上):
docker search centos -f=stars=100
拉取镜像到本地:
docker pull centos
用户也可以在登录后通过 docker push 命令来将镜像推送到 Docker Hub。
私有仓库
docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。
容器运行
你可以通过获取官方 registry 镜像来运行。
$ docker run -d -p 5000:5000 --restart=always --name registry registry
默认情况下,仓库会被创建在容器的 /var/lib/registry 下。可以通过 -v 参数来将镜像文件存放在本地的指定路径。
例如下面的例子将上传的镜像放到本地的 /opt/data/registry 目录。
$ docker run -d \
-p 5000:5000 \
-v /opt/data/registry:/var/lib/registry \
registry
在私有仓库上传、搜索、下载镜像
创建好私有仓库之后,就可以使用 docker tag 来标记一个镜像,然后推送它到仓库。
例如私有仓库地址为 127.0.0.1:5000 。
先在本机查看已有的镜像。
$ docker tag ubuntu:latest 127.0.0.1:5000/ubuntu:latest
$ docker images
或,如下:
$ docker tag ubuntu:latest sino/ubuntu:latest
$ docker images
使用 docker push 上传标记的镜像。
$ docker push sino/ubuntu:latest
$ docker rmi 127.0.0.1:5000/ubuntu:latest
$ docker pull 127.0.0.1:5000/ubuntu:latest