当前位置:首页 > 技术文章 > 正文内容

如何在Linux上搭建本地Docker Registry并实现远程连接

douba32个月前 (07-14)技术文章17

在Linux上搭建本地Docker Registry并实现远程连接,可以按照以下步骤操作:

一、安装Docker

确保Linux系统上已经安装了Docker。如果尚未安装,可以使用以下命令进行安装(以Ubuntu系统为例):

1 更新软件库索引:

sudo apt-get update

2 安装必要的包:

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

3 加入Docker官方的GPG密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

4 加入Docker软件库:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $le"

5 再次更新软件库索引:

sudo apt-get update

6 安装Docker CE:

sudo apt-get install docker-ce

二、搭建Docker Registry

1 拉取Docker Registry镜像:

docker pull registry:2

2 创建一个本地目录来存储Registry数据(可选,但推荐):

sudo mkdir -p /opt/registry/data

3 运行Registry容器:

sudo docker run -d -p 5000:5000 --restart=always --name registry -v /opt/registry/data:/var/lib/registry registry:2

这条命令会启动一个名为“registry”的容器,并将宿主机的5000端口映射到容器的5000端口。默认情况下,这个Registry是不加密的,只能在本地访问。若需远程连接,需进行额外配置。

三、配置远程连接

要实现远程连接,需要配置Docker客户端来使用本地的Registry,并确保Registry可以通过公网访问。以下是具体步骤:

1 配置Docker守护进程以信任Registry(如果Registry使用了自签名证书):

在每台需要远程连接Registry的机器上,对Docker Daemon进行配置以信任自签名证书。这通常涉及将证书复制到Docker的配置目录中的特定位置,并重启Docker服务。

例如,如果证书存放在“certs”目录下,可以使用以下命令:

sudo mkdir -p /etc/docker/certs.d/myregistry.com:5000

sudo cp certs/domain.crt /etc/docker/certs.d/myregistry.com:5000/ca.crt

sudo service docker restart

注意:将“myregistry.com:5000”替换为你的Registry的实际域名和端口。

2 使用cpolar等工具实现公网访问:

如果你的Registry部署在内网环境中,可以使用cpolar等内网穿透工具来实现公网访问。

a. 安装cpolar:按照cpolar的官方文档进行安装。

b. 创建隧道:在cpolar的Web UI管理界面中创建一个隧道,将本地5000端口映射到公网地址。

c. 获取公网地址:隧道创建成功后,可以在cpolar的在线隧道列表中查看所生成的公网访问地址。

d. 使用公网地址访问Registry:现在,你可以使用生成的公网地址来远程推送和拉取镜像了。

例如:

docker tag your-image
myregistry.cpolar.io:5000/your-image (将“myregistry.cpolar.io”替换为你的实际的cpolar域名)

docker push myregistry.cpolar.io:5000/your-image

docker pull myregistry.cpolar.io:5000/your-image

请注意,使用自签名证书时,需要确保Docker守护进程信任该证书,否则会遇到TLS握手错误。另外,还需要确保防火墙规则允许外部访问5000端口。如果希望避免每次配置新机器都需要复制证书,可以考虑使用权威CA签发的证书。

相关文章

Linux 系统中的 SSH 是什么?如何使用 SSH 进行远程登录和文件传输?

SSH(Secure Shell)是一种加密网络协议,用于在不安全的网络上安全地进行远程登录和文件传输。它提供了一种安全的通信渠道,使用户能够通过一个加密的连接与远程主机进行交互。首先,让我们来了解一...

Linux 中,查找文件指令用法解析(linux查找文件夹命令)

find 命令是 linux 系统中一种强大的搜索命令,用来在系统中精准定位到所需文件的位置,并可以提供各个参数方便筛选查找。用法find [起始路径] [选项] [表达式]起始路径:搜索的根目录选项...

如何在 Linux 中查找大文件和目录?这些命令直接起飞!

在 Linux 系统中,磁盘空间管理是一项至关重要的任务。随着时间的推移,系统可能会积累大量文件和目录,导致磁盘空间不足。无论是清理无用文件、释放空间,还是定位占用大量磁盘空间的“罪魁祸首”,掌握查找...

手机混用闪存到底是真是假?教你查手机闪存型号

来源:太平洋电脑网最近,网上传言某手机混用闪存,将UFS 3.0和UFS 3.1的闪存混用在了同一型号的机器上,买不同容量的手机,闪存协议不一样。光从这个描述来看,这做法相当不厚道,消费者买手机等于抽...

linux的查查大法(linux 查wwn)

1.查文件find命令,用来查找指定目录下的目录或文件。(1.1)一般用法find -name keyword:当前目录及子目录下查找与keyword完全一致的目录或文件;find -name *ke...

linux系统日志查看命令(linux系统查看日志的详细信息)

cattail -f日 志 文 件 说 明/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一/var/log/secure 与安全相关的日志信...