搭建docker内网私服的方法(docker-registry with nginx&ssl on centos)

yizhihongxing

下面是搭建docker内网私服的方法(docker-registry with nginx&ssl on centos)的完整攻略,包含了两个示例说明:

准备工作

  • 确保已经安装dockerdocker-compose
  • 安装nginxopenssl

示例一:使用纯docker-registry搭建私服

  1. 创建配置文件config.yml

version: 0.1
log:
level: debug
formatter: json
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
tls:
certificate: /usr/local/nginx/ssl/registry.crt
key: /usr/local/nginx/ssl/registry.key

其中:
- http.addr设置为:5000表示服务监听在本机的5000端口。
- http.tls表示开启SSL/TLS加密;certificatekey分别指定证书和私钥的路径。
- storage指定镜像的存储路径;filesystem表示使用本地文件系统存储,rootdirectory指定存储路径为/var/lib/registry

  1. 运行服务:

docker run -dit --name registry -p 5000:5000 \
-v `pwd`/config.yml:/etc/docker/registry/config.yml \
registry:2

其中:
- -p参数指定了服务暴露的端口5000
- -v参数将本地的config.yml配置文件挂载到容器中的/etc/docker/registry/config.yml路径下。

  1. 验证服务是否正常:

curl -k https://localhost:5000/v2/

如果输出{}表示服务正常运行。

示例二:使用docker-registrynginx结合搭建私服

  1. 创建docker-compose.yml配置文件:

version: '3'
services:
nginx:
image: nginx:latest
ports:
- "443:443"
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./ssl:/etc/nginx/ssl:ro
depends_on:
- registry
restart: always
registry:
image: registry:2
volumes:
- ./registry:/var/lib/registry
environment:
REGISTRY_HTTP_TLS_CERTIFICATE: /etc/nginx/ssl/registry.crt
REGISTRY_HTTP_TLS_KEY: /etc/nginx/ssl/registry.key
REGISTRY_STORAGE_DELETE_ENABLED: "true"
restart: always

其中:
- nginx服务使用nginx镜像,开放44380端口,挂载nginx.confssl目录,通过depends_on依赖于registry服务。
- registry服务使用registry:2镜像,挂载registry目录,设置SSL/TLS证书和私钥的路径,开启镜像删除功能。

  1. 创建nginx.conf配置文件:

```
events {
worker_connections 1024;
}

http {
upstream docker-registry {
server registry:5000;
}

   server {
       listen 443 ssl;
       server_name example.com;

       ssl_certificate /etc/nginx/ssl/registry.crt;
       ssl_certificate_key /etc/nginx/ssl/registry.key;

       location /v2/ {
           proxy_pass                  https://docker-registry;
           proxy_set_header    Host            $http_host;
           proxy_set_header    X-Real-IP       $remote_addr;
           proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header    X-Forwarded-Proto $scheme;
           proxy_read_timeout             900;
       }
   }

}
```

其中:
- upstream定义了docker-registry后端服务。
- server定义了nginx服务器,监听443端口,设置SSL/TLS证书和私钥的路径。
- location定义了请求的URL前缀为/v2/的请求转发到docker-registry后端服务。

  1. 创建SSL/TLS证书:

openssl req \
-newkey rsa:2048 -nodes -keyout ssl/registry.key \
-x509 -days 365 -out ssl/registry.crt

这个命令会生成一个自签名的证书。

  1. 启动服务:

docker-compose up -d

  1. 验证服务是否正常:

curl -k https://example.com/v2/

如果输出{}表示服务正常运行。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:搭建docker内网私服的方法(docker-registry with nginx&ssl on centos) - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • 为什么会出现Docker

    背景介绍:   一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协助我们需要关心的问题很多,这也是很多互联网公司不得不面对的问题, 特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验。 Docker之所以发展如此迅速,也是运维它给出了一个标准化的解决方案。 环境配置如此麻烦,换一台机器,就要重新来一次,费力费时。…

    Docker 2023年4月12日
    00
  • Docker中数据卷(volume)管理的两种方式

    Docker中数据卷是一种用于在容器和主机之间共享和保留数据的机制。有两种方式可以管理Docker中的数据卷:命令行管理和Docker Compose管理。以下是它们的详细说明。 命令行管理 创建数据卷 要创建一个数据卷并将其附加到容器上,可以在运行容器时使用-v选项。例如: $ docker run -d -v my-data:/data nginx 在这…

    Docker 2023年5月15日
    00
  • docker gitlab意外强制关机导致gitlab启动后报错unexpected end of JSON input

    报错如下 2019-03-20_09:49:06.47576 level=error ts=2019-03-20T09:49:06.475516078Z caller=main.go:624 err=”opening storage failed: block dir: \”/var/opt/gitlab/prometheus/data/01D5NZDASZ…

    Docker 2023年4月13日
    00
  • Docker 容器和宿主机相互拷贝文件

    1、从容器里面拷文件到宿主机      答:在宿主机里面执行以下命令              docker cp 容器名:要拷贝的文件在容器里面的路径       要拷贝到宿主机的相应路径       示例: 假设容器名为testtomcat,要从容器里面拷贝的文件路为:/usr/local/tomcat/webapps/test/js/test.js, …

    Docker 2023年4月13日
    00
  • 通过UI管理docker的方法

    下面来详细讲解通过UI管理Docker的方法的完整攻略。本文将提供两个例子以说明如何使用UI管理Docker。 使用Portainer管理Docker Portainer 是一个免费的开源工具,它提供了一个基于 Web 的用户界面,用于管理 Docker 容器,镜像和卷。 安装Portainer 首先,需要使用 Docker 安装 Portainer,可以使…

    Docker 2023年5月16日
    00
  • docker之docker-machine用法详解

    Docker之docker-machine用法详解 什么是docker-machine Docker Machine 是 Docker 官方提供的一个工具,用于在多种平台和云上快速安装 Docker 环境。Docker Machine 通过安装 VirtualBox 虚拟机,为开发人员提供一种简单的安装Docker的方式,使我们可以在各种平台上创建和管理不同…

    Docker 2023年5月16日
    00
  • docker运行容器远程挂载卷的方法

    下面是关于“docker运行容器远程挂载卷的方法”的完整攻略: 什么是docker远程挂载卷 在docker容器中,挂载卷(volume)是一种常用的将主机目录(或文件)映射到容器内部的方式,使得容器内部的数据可以在容器删除后依然保留在主机上。而远程挂载卷则是将主机目录(或文件)映射到另一个主机或者云存储服务的方式,这样可以在多个主机之间共享数据。 远程挂载…

    Docker 2023年5月16日
    00
  • docker<容器数据卷-v>对容器内数据持久化详解(备份)

    Docker容器数据卷(v)对容器内数据持久化详解(备份) 什么是Docker容器数据卷 Docker容器数据卷是一个可供容器使用的目录,位于容器的文件系统之外。容器可以读取和写入数据卷中的文件,而无需将数据复制到容器本身的文件系统中。这使得数据卷允许容器之间共享数据,同时也可以让容器在不删除其数据卷的情况下被删除和重新创建。 创建数据卷 使用以下命令创建一…

    Docker 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部