欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Docker私有仓库

程序员文章站 2022-03-12 16:56:03
...

一、前言

   Docker hub为我们提供了很多官方镜像和个人上传的镜像,我们可以下载机构或个人提供的镜像(如ubuntu,busybox...),也可以上传我们自己的本地镜像,然后我们需要的时候也可以随时下载。看着很是方便,但是也有不方便的地方:

      (1)那就是我们在从dockerhub上下载和上传镜像速度可能受影响,有时可能docker主页都打不开。

      (2)我们在生产上所使用的docker镜像可能存放着我们的code,tools,不想被外部人员获取,只允许内网的开发人员下载。如果上传到dockerhub上所有人都可以看到。这和github上的公共库是一样的。

      (3)在内部网络搭建docker私有仓库可以使内网人员下载和上传都非常快速,不受外网带宽等因素的影响,同时不在内网的人员无法下载我们的镜像,上述两个缺点都很好的解决了

二、搭建docker私有仓库  

1.下载registry镜像
docker pull registry

默认情况下,会将仓库存放于容器内的/var/lib/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录

2. 创建本地存储目录
mkdir -p /data/docker_registry

3. 启动镜像容器并挂载本地目录
docker run -d -p 5000:5000 -v /data/docker_registry:/var/lib/registry registry

  至此就创建了一个私有仓库,地址在本机的5000端口上。

三、使用docker私有仓库

  1)修改docker配置文件  

docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报错误。为了解决这个问题需要在启动docker server时增加启动参数为默认使用http访问。修改docker启动配置文件

参数:
--insecure-registry <host_ip>:5000

配置文件:
vim /lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd --registry-mirror=https://registry.docker-cn.com --insecure-registry 172.16.60.95:5000

  2)上传镜像到本地仓库

1.拉取一个镜像
docker pull busybox:latest

2. 为镜像打tag
docker tag busybox 172.16.60.95:5000/busybox

3.上传到私有仓库
docker push 172.16.60.95:5000/busybox

4. 查看
curl http://172.16.60.95:5000/v2/_catalog
{"repositories":["busybox"]}

  3)自制镜像上传

当我们使用Dockerfile自制的镜像上传是,在生成镜像的时候可以就为其打tag

1.制作镜像
docker build -t 172.16.60.95/nginx:v1.0.1 .

# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
172.16.60.95:5000/nginx      v1.0.1              34db4ba2c2ce        40 minutes ago 

2.上传镜像
# docker push 172.16.60.95:5000/nginx:v1.0.1
The push refers to repository [172.16.60.95:5000/nginx]
cf46d45fea5f: Pushed 
7419ae91748c: Pushed 
d503658d51c7: Pushed 
c0f69d032a84: Pushed 
5e9b5165a04f: Pushed 
a4fdd7463c3e: Pushed 
43e653f84b79: Pushed 
v1.0.1: digest: sha256:ab928a5ecfa51d3bdc1ec9ebe58e89b7ec78fcbe48275e3d368c9d8845540a01 size: 1784

  4)获取私有仓库镜像

# docker pull 172.16.60.95:5000/nginx:v1.0.1
v1.0.1: Pulling from nginx
Digest: sha256:ab928a5ecfa51d3bdc1ec9ebe58e89b7ec78fcbe48275e3d368c9d8845540a01
Status: Image is up to date for 172.16.60.95:5000/nginx:v1.0.1

# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
172.16.60.95:5000/nginx      v1.0.1              34db4ba2c2ce        43 minutes ago      408MB