代码编织梦想

简述

docker中拉取的镜像都是在docker hub在线存储库中获取的,这个在线存储库里的docker镜像可以由任何用户发布和使用,显然这在某些场景下是不适用的,比如某些互金的隐私项目,或者是公司完全处于内网状态不能访问外网,再或者你想个性化定制某些配置等等等,所以这就需要用到私有存储库了,今天我们就基于registry镜像搭建属于我们自己的私有仓库。

拉取registry

[root@localhost ~]# docker pull registry
Using default tag: latest
latest: Pulling from library/registry
79e9f2f55bf5: Pull complete 
0d96da54f60b: Pull complete 
5b27040df4a2: Pull complete 
e2ead8259a04: Pull complete 
3790aef225b9: Pull complete 
Digest: sha256:169211e20e2f2d5d115674681eb79d21a217b296b43374b8e39f97fcf866b375
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest
[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
registry      latest    b8604a3fe854   4 months ago   26.2MB

配置私有仓库地址

[root@localhost ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://j5wsgox9.mirror.aliyuncs.com"]
}
{
"insecure-registries": ["192.168.0.110:5000"]
}
​

重启docker,加载docker配置

[root@localhost ~]# systemctl restart docker
[root@localhost ~]# systemctl daemon-reload

创建容器

[root@localhost ~]# docker run -d -p 5000:5000 --restart always --name registry docker.io/registry
2f73dcf7fc4d53cd18b993f4af80bcf205950b6bba24332869a5bad863713a59
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE      COMMAND                  CREATED         STATUS         PORTS                                       NAMES
2f73dcf7fc4d   registry   "/entrypoint.sh /etc…"   5 seconds ago   Up 3 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   registry
​

浏览器访问

192.168.0.110:5000/v2/_catalog

这里【】里没有上传有镜像,所以是空的

如果访问不到,尝试关闭防火墙:

systemctl stop firewalld
systemctl disable firewalld
iptables -F
iptables -X
iptables -Z
iptables-save

如果还是访问不不到,可以重启一下docker

sudo systemctl restart docker

然后重新运行一下容器。

验证上传镜像到私有仓库

使用HelloWorld镜像进行测试

[root@localhost ~]# docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60f
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
registry      latest    b8604a3fe854   4 months ago   26.2MB
hello-world   latest    feb5d9fea6a5   6 months ago   13.3kB

接下来我们使用 push 指令将镜像推送到刚刚搭建的registry中

先给这个镜像打一个新的标签,用于区别。使用docker tag 命令

[root@localhost ~]# docker tag hello-world 192.168.0.110:5000/hello-world:latest
[root@localhost ~]# docker images
REPOSITORY                       TAG       IMAGE ID       CREATED        SIZE
registry                         latest    b8604a3fe854   4 months ago   26.2MB
192.168.0.110:5000/hello-world   latest    feb5d9fea6a5   6 months ago   13.3kB
hello-world                      latest    feb5d9fea6a5   6 months ago   13.3kB

如果push遇到这个问题,去修改 vim /usr/lib/systemd/system/docker.service配置文件,在12行位置左右,

在Execstart后面添加 --insecure-registry ip:5000,然后重启docker服务,和配置文件。

[root@localhost ~]# vim /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target docker.socket firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket containerd.service
​
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 192.168.0.110:5000
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
​
# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3
​
# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s
​
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
"/usr/lib/systemd/system/docker.service" 47L, 1748C written

如果出现扯个报错,在/etc/docker/daemon.json下添加私有仓库镜像就好了,然后重启docker,和配置文件

[root@localhost ~]# docker push 192.168.0.110:5000/hello-world:latest
The push refers to repository [192.168.0.110:5000/hello-world]
Get "http://192.168.0.110:5000/v2/": dial tcp 192.168.0.110:5000: connect: connection refused
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS                      PORTS     NAMES
2f73dcf7fc4d   registry   "/entrypoint.sh /etc…"   34 minutes ago   Exited (2) 14 minutes ago             registry
[root@localhost ~]# docker start 2f73dcf7fc4d
2f73dcf7fc4d

重新推送

[root@localhost ~]# docker push 192.168.0.110:5000/hello-world:latest
The push refers to repository [192.168.0.110:5000/hello-world]
e07ee1baac5f: Pushed 
latest: digest: sha256:f54a58bc1aac5ea1a25d796ae155dc228b3f0e11d046ae276b39c4bf2f13d8c4 size: 525

浏览器访问

可以看到hello-world推送完成

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_51697758/article/details/123988560

centos7搭建docker私有仓库_码农致富的博客-爱代码爱编程

(一)前言 1.什么是Docker私有仓库Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么你就需要Docker Registry,它可以用来存储和管理自己的镜像。 2.准备环境 1

centos7五步搭建docker私有镜像库_doegoo的博客-爱代码爱编程

1.安装docker 参考[《Centos7五步安装Docker并解决docker官方镜像无法访问问题》](https://blog.csdn.net/doegoo/article/details/80062132) 2

centos7搭建及使用docker私有仓库_guan0005的博客-爱代码爱编程

centos7搭建及使用DOCKER私有仓库 环境: 虚拟机1:192.168.31.11,centos-7.3,docker-18.03.1-ce,私有仓库服务器 虚拟机2:192.168.31.12,centos-

centos 7搭建docker私有镜像仓库_sealir的博客-爱代码爱编程

一、环境 CentOS7.5Linux内核3.10.0Docker18.06.0-ce   二、安装Docker Registry 1、配置Docker启动参数     在Docker启动参数中添加如下参数,即开放非安全端口5000,192.168.0.99是宿主机IP,重启Docker。     --insecure-registry 192.

centos7上安装部署私有镜像仓库(docker-registry)_可乐小哥的博客-爱代码爱编程

安装部署docker私有仓库 准备环境:安装docker 此处不重复说明,详细安装步骤参考我另一篇博客 点此跳转 搭建docker私有仓库 注:以下操作在docker镜像仓库所在服务器执行(192.168.1.217

Centos7上搭建docker私有仓库-爱代码爱编程

前置:本人安装docker私有仓库的服务器IP地址为192.168.250.139 解决证书安全注册时用到该IP,所以同学们自己确认好自己服务器的IP地址,不要照搬。 1.从官网仓库拉取registry镜像 docker pull registry:latest #注意:这里我拉取的最新版本,如果生产环境,建议使用稳定版本 2.启动私有仓库容器 doc

centos7-docker部署私有镜像仓库(docker-registry)-爱代码爱编程

安装部署docker私有仓库 准备环境:安装docker 略略略略略略略略略略略略略略 搭建docker私有仓库 注:以下操作在docker镜像仓库所在服务器执行(192.168.252.18) 首先拉取镜像 # docker pull registry 查看镜像列表 # docker images 拉取成功 REPOSITORY

搭建docker私有镜像仓库,实现镜像上传下载-爱代码爱编程

准备两台linux机器,我这是两台centos7的虚拟机,registry私有仓库的IP为192.168.169.133,安装有docker客户端的机器IP为192.168.169.134。 一、搭建registry私有仓库 1、拉取私有仓库镜像registry 2、创建并启动私有仓库容器 docker run -di --name=myreg

docker搭建私有仓库-爱代码爱编程

docker官方提供了Registry镜像,可以用来搭建本地私有镜像仓库。本文示例私有镜像仓库的搭建,以及实现登录验证功能。 目录 一、启动 Docker Registry 二、上传镜像到本地私有仓库 三、配置私有仓库认证 3.1 确定宿主机IP地址 3.2 生成自签名证书 3.3 生成用户名和密码 3.4 启动Docker Registr

CentOS7 部署Harbor私有镜像仓库-爱代码爱编程

前言 目前越来越多项目上容器化了,同时项目的不断更新迭代,并且镜像也作为了项目标准交付物的时候。企业存在一个私有的镜像仓库是很有必要。而Harbor在存储与分发镜像时的安全性也是比较适合企业使用。 什么是Harbor? Harbor 是一个开源可信云原生注册表项目,用于存储、签名和扫描内容。Harbor 通过添加用户通常需要的功能(例如安全性、身份和

CentOS安装Docker和DockerCompose 及 配置私有镜像仓库-爱代码爱编程

安装Docker Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。 Docker CE 分为 stable test 和 nightly 三个更新频道。 官方网站上有各种环境下的 安装指南,这里主要介绍 Docker CE 在 CentOS上的安装。