Catálogo de series relacionadas con el tutorial de uso de Docker
Tabla de contenido
2. Conclusión del informe de análisis
Tres, resumen del gerente técnico
Inicie el contenedor e informe un error
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:
- 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.
- En términos de seguridad, Docker Registry admite TLS y autenticación basada en firmas.
- 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:
- Control de acceso basado en roles
- Copia espejo
- Interfaz de gestión de interfaz de usuario web
- Puede integrar el sistema de autenticación de usuario LDAP o AD
- Registro de auditoría
- Proporcionar API RESTful para proporcionar llamadas de clientes externos
- 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:
- Implementación simple, se puede completar iniciando un contenedor
- Admite autenticación de seguridad TLS
- Proporcionar una interfaz de administración de interfaz de usuario web
- Admite Docker Proxy, que puede realizar operaciones de proxy en el repositorio espejo de Nexus a otro repositorio espejo remoto
- Admite Docker Group, que puede combinar varios almacenes en una dirección para proporcionar servicios
- 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:
- Control de acceso detallado basado en grupo (equipo) y espacio de nombres (espacio de nombres)
- Interfaz de gestión de interfaz de usuario web
- Puede integrar el sistema de autenticación de usuario LDAP, también es compatible con OAuth
- Registro de auditoría
- Proporcione una API RESTful para que los clientes externos llamen
- 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
2. Tira de la imagen
docker pull docker.io/sonatype/nexus3
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
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
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
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
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
Después de ingresar la contraseña de la cuenta, ingrese a la guía
Establecer una nueva contraseña
Ya sea para permitir el acceso anónimo
La configuración está completa, por lo que instalamos el almacén espejo privado de Docker Nexus en el servidor.
Continuará. .
Referencia: Introducción a varios repositorios espejo de código abierto comunes
https://blog.csdn.net/Andriy_dangli/article/details/84381383