Docker Hub
目前 Docker 官方维护了一个公共仓库 Docker Hub, 其中已经包括了数量超过 15000 个镜像. 大部分需求都可以通过在 Docker Hub 中直接下载镜像来使用.
注册登录
可以在 https://hub.docker.com 免费注册一个 Docker 账号. 在命令行执行 docker login 输入用户名及密码来完成在命令行界面登记 Docker Hub. 你可以通过 docker logout 退出登录.
拉取镜像
可以通过 docker search 命令来查找官方仓库中的镜像, 并利用 docker pull 命令来将它下载到本地.
推送镜像
用户也可以在登录后通过 docker push 命令来将自己的镜像推送到 Docker Hub.
修改本地镜像的名字为账号名 / 镜像名
上传镜像到公共仓库
上传过后, 查看远程公共仓库
私有仓库
有时候使用 Docker Hub 这样的公共仓库可能不方便, 用户可以创建一个本地仓库供私人使用. 比如, 基于公司内部项目构建的镜像.
docker-registry 是官方提供的工具, 可以用于构建私有的镜像仓库.
安装运行 docker-registry
可以通过获取官方 registry 镜像来运行. 默认情况下, 仓库会被创建在容器的 / var/lib/registry 目录下. 可以通过 - v 参数来将镜像文件存放在本地的指定路径.
docker run --name registry -d -p 5000:5000 --restart=always -v /opt/data/registry:/var/lib/registry registry
在私有仓库上传, 搜索, 下载镜像
创建好私有仓库之后, 就可以使用 docker tag 来标记一个镜像, 然后推送它到仓库. 先在本机查看已有的镜像.
docker image ls
使用 docker tag 将 session-web:latest 这个镜像标记为 127.0.0.1:5000/session-Web:latest 格式为 docker tag IMAGE[:TAG][REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]
docker tag session-Web:latest 127.0.0.1:5000/session-Web:latest
使用 docker push 上传标记的镜像
docker push 127.0.0.1:5000/session-Web:latest
用 curl 查看仓库中的镜像
curl 127.0.0.1:5000/v2/_catlog
如果可以看到 {"repositories":["session-web"]}, 表明镜像已经被成功上传了.
先删除已有镜像, 再尝试从私有仓库中下载这个镜像.
- docker image rm 127.0.0.1:5000/session-Web:latest
- docker pull 127.0.0.1:5000/session-Web:latest
注意事项
如果不想使用 127.0.0.1:5000 作为仓库地址, 比如想让本网段的其他主机也能把镜像推送到私有仓库. 你就得把例如 192.168.1.1:5000 这样的内网地址作为私有仓库地址, 这时你会发现无法成功推送镜像.
可以用下面方式解决
对于使用 systemd 的系统, 请在 / etc/docker/daemon.JSON 中写入如下内容 (如果文件不存在请新建该文件)
- {
- "registry-mirror":[
- "http://hub-mirror.c.163.com"
- ],
- "insecure-registries":[
- "192.168.1.1:5000"
- ]
- }
来源: http://www.bubuko.com/infodetail-3160060.html