Encontré varios repositorios de imágenes de código abierto de Docker para el gerente técnico. ¿Por qué el gerente eligió Sonatype Nexus (Parte 1)?

Catálogo de series relacionadas con el tutorial de uso de Docker


Tabla de contenido

Uno, la escena

2. Conclusión del informe de análisis

Tabla de análisis general

1 、 Registro de Docker

2, puerto de VMware

3 、 Sonatype Nexus

4 、 SUSE Portus

Tres, resumen del gerente técnico

Cuatro, introducción a Nexus

Cinco, tira del espejo

1. Encuentra el espejo

2. Tira de la imagen 

Seis, enciende el contenedor

Inicie el contenedor e informe un error

solución:

Siete, acceder y configurar nexus


Uno, la escena

El ciudadano Zhao Tiezhu trabaja como ingeniero de desarrollo en la empresa A.

El gerente técnico le pidió a Zhao Tiezhu que buscara un almacén de imágenes de código abierto de Docker adecuado para la empresa, que formara un informe de análisis y se lo enviara al gerente. Zhao Tiezhu finalmente seleccionó cuatro almacenes mediante consultas con sus contactos personales y buscando información en Internet.

1 、 Registro de Docker

2, puerto de VMware

3 、 Sonatype Nexus

4 、 SUSE Portus

2. Conclusión del informe de análisis

Tabla de análisis general

Características del programa

Registro de Docker

Puerto de VMware

Sonatype Nexus

SUSE Portus

Complejidad del sistema

sencillo

complejo

sencillo

general

Dificultad de configuración

sencillo

complejo

general

general

Interfaz de gestión de interfaz de usuario web

No

Tengo

Tengo

Tengo

Integración con LDAP / AD externo

No

Tengo

Tengo

Tengo

Control de acceso

débil

Fuerte

débil

Fuerte

Copia espejo

No

Admite la copia a otra biblioteca espejo de Harbour

Admite proxy proxy a otra biblioteca espejo

débil

Escaneo de espejo

No

Clair se puede integrar

No

Clair se puede integrar

1 、 Registro de Docker

Docker Registry es el almacén espejo privado de código abierto más popular. Se publica en formato espejo. Después de la descarga, ejecute un contenedor de Docker Registry para iniciar un servicio de almacén espejo privado.

Los puntos de Docker Registry son los siguientes:

  1. La mayor ventaja de Docker Registry es su simplicidad. Solo necesita ejecutar un contenedor para administrar de forma centralizada una réplica de todo el clúster y otras máquinas pueden descargar la réplica desde el almacén de réplicas.
  2. En términos de seguridad, Docker Registry admite TLS y autenticación basada en firmas.
  3. Docker Registry también proporciona Restful API para proporcionar llamadas al sistema externo y administrar las imágenes en la biblioteca de imágenes.

2, puerto de VMware

El proyecto VMware Harbour (Harbour para abreviar) es un sistema de almacenamiento de imágenes de contenedores de código abierto desarrollado por el equipo de I + D de VMware China. Se basa en Docker Registry y tiene muchas mejoras. Las características principales incluyen:

  1. Control de acceso basado en roles
  2. Copia espejo
  3. Interfaz de gestión de interfaz de usuario web
  4. Puede integrar el sistema de autenticación de usuario LDAP o AD
  5. Registro de auditoría
  6. Proporcionar API RESTful para proporcionar llamadas de clientes externos
  7. Escaneo de vulnerabilidad de seguridad espejo (integrado con la herramienta de escaneo de escenas Clair desde v1.2)

En comparación con Docker Registry, Harbour proporciona una mejor gestión de usuarios, gestión de derechos de función, registros de auditoría y funciones de replicación de réplicas entre varios repositorios de réplica de Harbour, y se puede utilizar como servidor para repositorios de réplica privados de empresas. Sin embargo, debido a los muchos componentes de Harbour, la integración con el mundo exterior es más complicada.

3 、 Sonatype Nexus

Sonatype Nexus es un administrador de almacén de software, principalmente en dos versiones principales 2.X y 3.X. La versión 2.X admite principalmente software de almacén como Maven, P2, OBR, Yum; la versión 3.X admite principalmente software de almacén como Docker, NuGet, npm, Bower, PyPI, Ruby Gems, Apt, Conam, R, CPAN, Raw , Helm, etc., también es compatible con la herramienta de compilación Maven.

Las características de Sonatype Nexus son las siguientes:

  1. Implementación simple, se puede completar iniciando un contenedor
  2. Admite autenticación de seguridad TLS
  3. Proporcionar una interfaz de administración de interfaz de usuario web
  4. Admite Docker Proxy, que puede realizar operaciones de proxy en el repositorio espejo de Nexus a otro repositorio espejo remoto
  5. Admite Docker Group, que puede combinar varios almacenes en una dirección para proporcionar servicios
  6. Además de admitir la duplicación de Docker, también admite la administración de otros repositorios de software, como Yum, Npm, etc.

4 、 SUSE Portus

SUSE Portus es otra biblioteca espejo de código abierto, sus características incluyen:

  1. Control de acceso detallado basado en grupo (equipo) y espacio de nombres (espacio de nombres)
  2. Interfaz de gestión de interfaz de usuario web
  3. Puede integrar el sistema de autenticación de usuario LDAP, también es compatible con OAuth
  4. Registro de auditoría
  5. Proporcione una API RESTful para que los clientes externos llamen
  6. Escaneo de vulnerabilidades de seguridad de la imagen (herramienta integrada de escaneo de imágenes de Clair)

Tres, resumen del gerente técnico

1. La empresa ya está utilizando Nexus como servidor privado para Maven, y Nexus 3 es compatible con Docker. Para entonces, un conjunto de almacenes de servidores privados se puede utilizar para múltiples propósitos.

2. Harbour es poderoso, pero con muchos componentes, la complejidad de configuración, operación y mantenimiento es alta, lo que aumenta la dificultad de operación y mantenimiento.

3. Docker Registry no satisface las necesidades de la empresa, y no hay gestión de interfaz gráfica, SUSE Portus tiene funciones similares a Nexus, y finalmente la empresa eligió Nexus3.

Cuatro, introducción a Nexus

La velocidad de acceso del "repositorio espejo oficial de Docker" es muy lenta. Sonatype Nexus permite construir nuestro propio repositorio espejo para facilitar la implementación del espejo pull y push.

Sonatype Nexus es un administrador de almacén de software, principalmente en dos versiones principales 2.X y 3.X. La versión 2.X admite principalmente software de almacén como Maven, P2, OBR, Yum; la versión 3.X admite principalmente software de almacén como Docker, NuGet, npm, Bower, PyPI, Ruby Gems, Apt, Conam, R, CPAN, Raw , Helm, etc., también es compatible con la herramienta de compilación Maven.

Cinco, tira del espejo

1. Encuentra el espejo

docker search nexus3

0

2. Tira de la imagen 

docker pull  docker.io/sonatype/nexus3

0

Seis, enciende el contenedor

Especificar el volumen de datos para evitar la pérdida de datos en el contenedor cada vez que se inicia el contenedor y realizar el intercambio de datos entre el contenedor y la máquina virtual.

指定虚拟机与容器共享的文件夹
mkdir /usr/local/docker/nexus/nexus-data

0

Necesita modificar los permisos de la carpeta

chmod 777 /usr/local/docker/nexus/nexus-data

"8716903d1912" es el ID de imagen de nexus

 docker run -p 8081:8081 --name nexus -v /usr/local/docker/nexus/nexus-data:/nexus-data 8716903d1912

Inicie el contenedor e informe un error

0

Error: sin permiso para crear

mkdir: cannot create directory '../sonatype-work/nexus3/log': Permission denied
mkdir: cannot create directory '../sonatype-work/nexus3/tmp': Permission denied
OpenJDK 64-Bit Server VM warning: Cannot open file ../sonatype-work/nexus3/log/jvm.log due to No such file or directory

Warning:  Cannot open log file: ../sonatype-work/nexus3/log/jvm.log
Warning:  Forcing option -XX:LogFile=/tmp/jvm.log
java.io.FileNotFoundException: ../sonatype-work/nexus3/tmp/i4j_ZTDnGON8hezynsMX2ZCYAVDtQog=.lock (No such file or directory)
	at java.io.RandomAccessFile.open0(Native Method)
	at java.io.RandomAccessFile.open(RandomAccessFile.java:316)
	at java.io.RandomAccessFile.<init>(RandomAccessFile.java:243)
	at com.install4j.runtime.launcher.util.SingleInstance.check(SingleInstance.java:72)
	at com.install4j.runtime.launcher.util.SingleInstance.checkForCurrentLauncher(SingleInstance.java:31)
	at com.install4j.runtime.launcher.UnixLauncher.checkSingleInstance(UnixLauncher.java:88)
	at com.install4j.runtime.launcher.UnixLauncher.main(UnixLauncher.java:67)
java.io.FileNotFoundException: /nexus-data/karaf.pid (Permission denied)
	at java.io.FileOutputStream.open0(Native Method)
	at java.io.FileOutputStream.open(FileOutputStream.java:270)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:101)
	at org.apache.karaf.main.InstanceHelper.writePid(InstanceHelper.java:127)
	at org.apache.karaf.main.Main.launch(Main.java:243)
	at org.sonatype.nexus.karaf.NexusMain.launch(NexusMain.java:113)
	at org.sonatype.nexus.karaf.NexusMain.main(NexusMain.java:52)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:85)
	at com.install4j.runtime.launcher.UnixLauncher.main(UnixLauncher.java:69)
java.lang.RuntimeException: /nexus-data/log/karaf.log (No such file or directory)
	at org.apache.karaf.main.util.BootstrapLogManager.getDefaultHandlerInternal(BootstrapLogManager.java:102)
	at org.apache.karaf.main.util.BootstrapLogManager.getDefaultHandlersInternal(BootstrapLogManager.java:137)
	at org.apache.karaf.main.util.BootstrapLogManager.getDefaultHandlers(BootstrapLogManager.java:70)
	at org.apache.karaf.main.util.BootstrapLogManager.configureLogger(BootstrapLogManager.java:75)
	at org.apache.karaf.main.Main.launch(Main.java:244)
	at org.sonatype.nexus.karaf.NexusMain.launch(NexusMain.java:113)
	at org.sonatype.nexus.karaf.NexusMain.main(NexusMain.java:52)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:85)
	at com.install4j.runtime.launcher.UnixLauncher.main(UnixLauncher.java:69)
Caused by: java.io.FileNotFoundException: /nexus-data/log/karaf.log (No such file or directory)
	at java.io.FileOutputStream.open0(Native Method)
	at java.io.FileOutputStream.open(FileOutputStream.java:270)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
	at org.apache.karaf.main.util.BootstrapLogManager$SimpleFileHandler.open(BootstrapLogManager.java:193)
	at org.apache.karaf.main.util.BootstrapLogManager$SimpleFileHandler.<init>(BootstrapLogManager.java:182)
	at org.apache.karaf.main.util.BootstrapLogManager.getDefaultHandlerInternal(BootstrapLogManager.java:100)
	... 12 more
Error creating bundle cache.

solución:

Eliminar el contenedor primero

docker rm nexus

Ejecutar de nuevo para iniciar un nuevo comando

Se agregó "--privileged = true" al comando original

docker run -p 8081:8081 --privileged=true --name nexus -v /usr/local/docker/nexus/nexus-data:/nexus-data 8716903d1912

Nota: --privileged , este parámetro puede establecer si se otorgan privilegios del contenedor de la ventana acoplable. Si este parámetro es verdadero, el permiso de root en el contenedor de la ventana acoplable es el permiso de root del host, no solo el permiso de root en el contenedor.

Compruebe si el servicio se inicia normalmente

docker ps

0

Siete, acceder y configurar nexus

Abra el navegador y visite http: //: 8081 /

Nota: A veces, el inicio será más lento, por lo que tendrá que esperar un poco. . Si no puede esperar, puede consultar el registro

docker logs nexus

 Cuando aparece esta interfaz, significa que el inicio es exitoso

0

La contraseña de inicio de sesión del administrador está en el archivo que comienza con admin en / usr / local / docker / nexus / nexus-data, simplemente cópielo e ingréselo

0

Después de ingresar la contraseña de la cuenta, ingrese a la guía

0

Establecer una nueva contraseña

0

Ya sea para permitir el acceso anónimo

0

La configuración está completa, por lo que instalamos el almacén espejo privado de Docker Nexus en el servidor.

0

Continuará. .

Encontré varios repositorios de imágenes de código abierto de Docker para el gerente técnico, ¿por qué el gerente eligió Sonatype Nexus (abajo)?

Referencia: Introducción a varios repositorios espejo de código abierto comunes

https://blog.csdn.net/Andriy_dangli/article/details/84381383

Supongo que te gusta

Origin blog.csdn.net/shi_hong_fei_hei/article/details/115049919
Recomendado
Clasificación