基础教程

一.相关知识

今天来讲docker的第三个组成部分仓库(Registry)。仓库是用来保存用户创建的镜像,仓库分共有和私有两种。

  • 公有仓库
    Docker公司自己提供了最大的公有仓库docker hub,可以在Docker Hub上创建账户,保存分享自己创建的镜像,如下图所示。
  • 私有仓库
    可以部署在自己公司服务器,其原理性和gitlab相差无几,下面我们来进行私有仓库搭建实操
二.案例讲解
1. 创建镜像仓库

拉取私有仓库镜像文件registry ,并生成容器(Container),命令如下:

$ docker run -d -p 5000:5000 --restart always --name registry registry:2
  • docker run-- docker 命令
  • -p 5000:5000 -- 宿主机和容器的映射端口
  • --restart always -- 出错或重启物理机器后总是自动重启
  • --name registry -- 容器的名称
  • registry:2 -- 所需镜像及版本
  • kubernetes怎么使用镜像仓库 kubernetes 镜像_云原生


到此,我们的私有镜像已经搭建完毕,非常简单。 此时,仓库只能本地访问,要想远程访问,接下来要做以下配置

2. 远程访问

所有安装docker的机器都要配置如下远程配置

$ vim /etc/docker/daemon.json

# docker 默认不允许向http推送,参考: https://docs.docker.com/registry/deploying/#run-an-externally-accessible-registry,
# 没有信任证书,通过配置daemon来跳过验证
{
 "registry-mirrors":[
        "https://8ov1n2lo.mirror.aliyuncs.com"
  ],
  "insecure-registries":[
  "192.168.1.152:5000"
  ]
}

重启docker 服务

$ systemctl restart docker
(1). 内存限制(选作,一般用不到)

如果想要控制容器的运行内存,在创建容器的时候可以添加以下选项

$ docker run --memory=500m nginx:alpine
(2). 安装界面(选作,一般用不到)
$ docker pull hyper/docker-registry-web
$ docker run -d --restart=always -p 5001:8080 --name registry-web --link registry -e REGISTRY_URL=http://192.168.1.152:5000/v2 -e REGISTRY_NAME=192.168.1.15:5000 hyper/docker-registry-web
3. 推送本地镜像到仓库中
(1). 给镜像打tag,并推送

我们以上个案例的nginx:v1 容器为例进行操作,推送到仓库可以是本地访问的镜像,亦可以是远程访问的镜像

  • 本机访问
$ docker tag nginx:alpine localhost:5000/nginx:v1
$ docker push localhost:5000/nginx:v1
  • 远程访问
$ docker tag nginx:alpine 192.168.1.152:5000/nginx:v1  # 打tag标签
$ docker push 192.168.1.152:5000/nginx:v1  #推送

kubernetes怎么使用镜像仓库 kubernetes 镜像_k8s_02

(2). 查看仓库内镜像元素是否存在
$ curl -X GET http://localhost:5000/v2/_catalog
$ curl -X GET http://localhost:5000/v2/nginx/tags/list

通过上面的命令可以看出,仓库已经存在“nginx”,v1的版本的镜像文件。

kubernetes怎么使用镜像仓库 kubernetes 镜像_k8s_03

------------------------------------------------------------------------------------------------------