Docker仓库的基本操作

2019-05-28  本文已影响0人  苏康申

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
上一篇下一篇

猜你喜欢

热点阅读