1.概念
仓库(Repository)是集中存放镜像的地方,分为公共仓库和私有仓库。一个容易与之混淆的概念是注册服务器(Registry)。实际上注册服务器是存放仓库的具体服务器,一个注册服务器上可以有多个仓库,而每个仓库下面可以有多个镜像。从这方面来说,可将仓库看做一个具体的项目或目录。例如对于仓库地址[private-docker.com/ubuntu](http://private-docker.com/ubuntu)
来说,[private-docker.com](http://private-docker.com/)
是注册服务器地址,ubuntu
是仓库名。
2.登录仓库
Usage: docker login [OPTIONS] [SERVER]
Log in to a Docker registry
Options:
-p, --password string Password
--password-stdin Take the password from stdin
-u, --username string Username
登录成功
localhost:yaf sukangshen$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: sukangshen
Password:
Login Succeeded
3.仓库中查找镜像
docker search centos
localhost:yaf sukangshen$ docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 5380 [OK]
ansible/centos7-ansible Ansible on Centos7 121 [OK]
jdeathe/centos-ssh CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86… 109 [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC session… 91 [OK]
imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 56 [OK]
根据search结果,可将镜像资源分为两类。一种是类似centos这样的镜像,称为基础或根镜像。这些镜像是由docker公司创建、验证、支持、提供。这样的镜像往往使用单个单词作为名字。还有一种类型,比如ansible/centos7-ansible镜像,它是由docker用户ansible创建并维护的,带有用户名称前缀,表明是某用户下的某仓库。可以通过用户名称前缀user_name/镜像名来指定使用某个用户提供的镜像。另外,在查找的时候通过-s N参数可以指定仅显示评价为N星级以上的镜像。
4.搭建本地私有仓库
4.1使用registry镜像创建私有仓库
//1.在本地启动registry镜像,作为私有服务器,监听5000端口
localhost:yaf sukangshen$ docker run -d -p 5000:5000 registry
Unable to find image 'registry:latest' locally
latest: Pulling from library/registry
c87736221ed0: Pull complete
1cc8e0bb44df: Pull complete
54d33bcb37f5: Pull complete
e8afc091c171: Pull complete
b4541f6d3db6: Pull complete
Digest: sha256:f87f2b82b4873e0651f928dcde9556008314543bd863b3f7e5e8d03b04e117f7
Status: Downloaded newer image for registry:latest
4d20b03dfc3a930caa986832887766cbf4bf5644e9cdeedbda4e384e60abaa52
这将自动下载并启动一个registry容器,创建本地的私有仓库服务。默认情况下,会将仓库创建在容器的/tmp/registry目录下。可以通过-v参数来将镜像文件存放在本地的指定路径。例如以下实例将上传的镜像放到/opt/data/registry目录:
//2.在本地启动registry镜像,作为私有服务器,监听5000端口,并指定本地目录数据卷
~/www/my_test/dnmp/www/registry,映射容器内/tmp/registry目录,目录不存在将会创建
localhost:yaf sukangshen$ docker run -d -p 5000:5000 -v
~/www/my_test/dnmp/www/registry:/tmp/registry registry
2d524ae16c423bef1f00b7c67b04bea70587035b9f5bb40a9d1ca0534512072c
4.2管理私有仓库
4.2.1打标签
docker tag hello-world:v1 192.168.1.205:5000/test
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.205:5000/test latest fce289e99eb9 4 months ago 1.84kB
hello-world latest fce289e99eb9 4 months ago 1.84kB
localhost:www sukangshen$ docker push 192.168.1.205:5000/test
4.2.2修改daemon.json,我直接在Docker客户端Daemon>Advanced修改后务必记得重启
{
//表示信任这个私有仓库,不进行安全证书检查
"insecure-registries":["192.168.206.128:5000"],
"registry-mirrors": ["[https://4vehewku.mirror.aliyuncs.com](https://4vehewku.mirror.aliyuncs.com/)"]</pre>
}
4.2.3开始推送
docker push
localhost:www sukangshen$ docker push 192.168.1.205:5000/test
The push refers to repository [192.168.1.205:5000/test]
af0b15c8625b: Pushed
latest: digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a size: 524
localhost:www sukangshen$
4.2.4拉取
docker pull
localhost:www sukangshen$ docker pull 192.168.1.205:5000/test
Using default tag: latest
latest: Pulling from test
Digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a
Status: Image is up to date for 192.168.1.205:5000/test:latest
网友评论