搭建Docker本地私有镜像仓库

在使用Docker service create创建容器时,Docker首先默认从Docker Hub官方去下载镜像,这很不方便,很多时候我们的镜像都是使用Dockerfile自定义私有镜像,不对外公开,而且为了安全期间docker可能在内外环境下运行,所以我们有必要搭建一套docker本地私有镜像仓库,以供整个内外集群环境使用。

下面我们使用docker官方提供的registry镜像搭建私有仓库

一、搭建非https访问的私有镜像仓库

#私有镜像仓库服务器ip和对应域名,集群内所有服务器都提前做好解析

vi /etc/hosts #添加以下解析

192.168.21.8 hub.osyunwei.com

:wq! #保存退出

#下载镜像

docker pull registry:latest

#创建镜像挂载目录

mkdir -p /docker/data/registry

#创建容器

docker run -d -p 5000:5000 --name registry --restart always -v /docker/data/registry:/var/lib/registry registry:latest

参数说明:

-p 5000:5000 #端口映射,前面是宿主机:后面是容器内

--name registry #容器名称

--restart always #宿主机重启后容器自启动

-v /docker/data/registry:/var/lib/registry #目录映射,容器被删除后仓库内的镜像不会丢失,默认情况下仓库在容器内的/var/lib/registry目录下

registry:lates #使用的镜像名称

#查看启动的容器

docker ps -a

#默认Docker只支持https的地址,为了使用http协议的地址,集群内所有的服务器需要把私有仓库地址添加到daemon.json文件中

#在daemon.json文件中添加私有镜像仓库地址,注意要用逗号连接

cp /etc/docker/daemon.json /etc/docker/daemon.json-bak

vi /etc/docker/daemon.json

{

"insecure-registries": ["hub.osyunwei.com:5000"],

"registry-mirrors": ["https://t1fyrekt.mirror.aliyuncs.com","https://hub-mirror.c.163.com","https://mirror.baidubce.com/"]

}

:wq! #保存退出

#重启docker服务

systemctl restart docker.service

#如果不对私有仓库命名的话,docker默认访问的是官方仓库docker hub

#私有仓库镜像的命名规则:宿主机ip地址或域名:端口号/镜像名:版本

#修改镜像标签

docker tag nginx:1.20.1 hub.osyunwei.com:5000/nginx:1.20.1

docker tag php-fpm:8.0.11 hub.osyunwei.com:5000/php-fpm:8.0.11

docker tag mysql:v8.0.26 hub.osyunwei.com:5000/mysql:v8.0.26

#上传镜像

docker push hub.osyunwei.com:5000/nginx:1.20.1

docker push hub.osyunwei.com:5000/php-fpm:8.0.11

docker push hub.osyunwei.com:5000/mysql:v8.0.26

#列出私有仓库的所有镜像

curl -X GET http://hub.osyunwei.com:5000/v2/_catalog

#集群内其他服务器下载镜像

docker pull hub.osyunwei.com:5000/nginx:1.20.1

docker pull hub.osyunwei.com:5000/php-fpm:8.0.11

docker pull hub.osyunwei.com:5000/mysql:v8.0.26

 

本文参考:https://www.osyunwei.com/archives/11928.html

posted @ 2023-02-06 13:25  dkzou  阅读(177)  评论(0编辑  收藏  举报