Docker学习之仓库

仓库Repository 是集中存放镜像的地方。nginx

Docker官方目前维护公共仓库叫 docker hub,能够在 https://cloud.docker.com 免费注册帐号;docker


Docker Hubjson

登陆 ubuntu

执行命令 docker login 交互式输入用户名密码登陆docker hubcentos

退出登陆 docker logoutcurl


拉取镜像pullide

docker search <NAME> 查找官方仓库的镜像工具

docker pull <NAME> 下载镜像到本地测试

docker search <NAME> --filter=stars=N 指定仅显示STARS为N以上的镜像ui

例如:# docker search centos --filter=stars=100 显示centos收藏数量大于100的镜像列表

QQ截图20180515111442.jpg


镜像分类:

一、基础镜像或根镜像 相似centos;由docker公司官方提供;通常使用单个名词做为名字;

二、docker用户建立并维护的,username/image


推送镜像push

docker push 推送本身的镜像到Docker hub上

例如 # docker push username/ubuntu:17.10


自动建立 Automated Builds

自动建立(Automated Builds)功能对于须要常常升级镜像内程序来讲,十分方便。

有时候,用户建立了镜像,安装了某个软件,若是软件发布新版本则须要手动更新镜像。



私有仓库

docker-registry 官方提供的工具,能够构建私有的镜像仓库。


安装运行docker-registry

容器运行,本地没有registry镜像会自动下载。

# docker run -d -p 5000:5000 --restart=always --name registry registry

使用官方registry镜像启动私有仓库。默认状况下,仓库会被建立再容器 /var/lib/registry 目录下。能够经过-v 参数讲镜像文件存放本地的指定路径。例如 /opt/registry 没有目录的话须要建立;

# docker run -d -p 5000:5000 -v /opt/registry/:/var/lib/registry registry

76d011a935ef352efb6e6722c9b403540112bd5a7c6dea417fdbcfd6e19d3d9c


在私有仓库上传、搜索、下载镜像

docker tag 标记一个镜像,并推送到仓库。例如私有仓库地址127.0.0.1:5000

格式为 docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]


使用 docker tag 将 ubuntu:latest 这个镜像标记为 127.0.0.1:5000/ubuntu:latest。

# docker tag ubuntu:latest 127.0.0.1:5000/ubuntu:latest

# docker image ls

REPOSITORY              TAG           IMAGE ID            CREATED             SIZE

127.0.0.1:5000/ubuntu   latest   452a96d81c30        2 weeks ago         79.6MB

ubuntu                  latest              452a96d81c30        2 weeks ago         79.6MB

registry                  latest             d1fd7d86a825        4 months ago        33.3MB


docker push 上传标记的镜像(只有上传以后才会在本地保存)

# docker push 127.0.0.1:5000/ubuntu:latest

The push refers to repository [127.0.0.1:5000/ubuntu]

059ad60bcacf: Pushed

8db5f072feec: Pushed

67885e448177: Pushed

ec75999a0cb1: Pushed

65bdd50ee76a: Pushed

latest: digest: sha256:90f24abe180424046a5d53f6fc6f9fdb8f79b835cb2fd7d1a782e4c30dfb5dcc size: 1357


用curl 查看仓库中的镜像

# curl 127.0.0.1:5000/v2/_catalog

{"repositories":["ubuntu"]}

代表镜像已经被成功上传。


删除已有镜像,再从私有仓库下载镜像

# docker image rm 127.0.0.1:5000/ubuntu:latest

# docker pull 127.0.0.1:5000/ubuntu:latest

latest: Pulling from ubuntu

Digest: sha256:90f24abe180424046a5d53f6fc6f9fdb8f79b835cb2fd7d1a782e4c30dfb5dcc

Status: Downloaded newer image for 127.0.0.1:5000/ubuntu:latest

# docker image ls

REPOSITORY              TAG           IMAGE ID            CREATED             SIZE

127.0.0.1:5000/ubuntu   latest   452a96d81c30        2 weeks ago         79.6MB



注意事项

若是你不想使用 127.0.0.1:5000 做为仓库地址,好比想让本网段的其余主机也能把镜像推送到私有仓库。你就得把例如 192.168.20.11:5000 这样的内网地址做为私有仓库地址,这时你会发现没法成功推送镜像。

由于 Docker 默认不容许非 HTTPS 方式推送镜像。

经过 Docker 的配置选项来取消这个限制.


修改以下,若是没有daemon.json文件须要新建

# cat /etc/docker/daemon.json

{

"registry-mirror": [ "https://registry.docker-cn.com" ],

"insecure-registries": [ "192.168.20.11:5000" ]

}

重启docker生效  systemctl restart docker.service



本地创建私有仓库,内网其余机器经过私有仓库下载镜像

私有仓库ip 192.168.20.11 内网测试机器192.168.20.10


步骤以下:

2台机器都须要安装docker,并新建daemon.json文件,内容保持一致;

私有仓库机器:

# docker tag nginx:latest 192.168.20.11:5000/nginx:latest

# docker push 192.168.20.11:5000/nginx:latest

QQ截图20180515155015.jpg


内网测试机器下载:

# docker pull 192.168.20.11:5000/nginx:latest

QQ截图20180515155224.jpg


内网机器,测试push镜像到私有仓库机器

# docker tag ubuntu:latest 192.168.20.11:5000/ubuntu:latest

# docker push 192.168.20.11:5000/ubuntu:latest

QQ截图20180515161553.jpg


私有仓库机器pull 内网机器push的镜像

# docker pull 192.168.20.11:5000/ubuntu:latest

# docker image ls

REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE

192.168.20.11:5000/ubuntu  latest              452a96d81c30        2 weeks ago         79.6MB


测试OK;

相关文章
相关标签/搜索