No CoreOS, configure seu próprio registro do Docker

Todos conhecemos e amamos o Docker, uma plataforma para criar, gerenciar e distribuir contêineres de aplicativos em várias máquinas. A Docker Inc. fornece um serviço para hospedar contêineres de código aberto para serem baixados (ou extraídos) como um repositório git conhecido como "Registro do Docker". Pense nisso como um contêiner do GitHub for Docker.

Mas e se você quiser hospedar seu próprio registro separado do público? Bem, a Docker Inc. abriu seu aplicativo de registro no GitHub.

Este tutorial levará você ao processo de configuração de um registro privado do Docker usando o CoreOS em um novo VPS.

CoreOS + Docker

Não vamos gastar muito tempo analisando exatamente o que o Docker e o CoreOS podem fazer, pois está fora do escopo deste tutorial. Em essência, o CoreOS foi projetado para grandes clusters de servidores, é pequeno, rápido e recebe atualizações regulares de segurança automaticamente. Seu sistema de arquivos raiz também é somente leitura, o que significa que você deve usar o Docker para executar qualquer tipo de software que não esteja incluído na instalação base.

Isso faz do Core OS um sistema host perfeito para o Docker!

Puxando e executando o registro mais recente

A Docker Inc. forneceu o Registro como uma imagem de nível superior, isso significa que podemos removê-lo com uma simples:

docker pull registry

Isso pode levar alguns minutos, dependendo da velocidade da conexão.

Uma vantagem de ser uma imagem de nível superior também significa que ela recebe suporte e atualizações regulares.

Agora vamos testar o registro. Podemos criar um novo contêiner usando a imagem do registro:

docker run -p 5000:5000 -d --name=basic_registry registry

Para aqueles que não usaram muito o Docker, o -psinalizador significa PORT, ou seja, estamos expondo a porta 5000 do contêiner para a porta 5000 do host.

O -dsinalizador significa que daemonisso fará com que o contêiner seja executado em segundo plano e não imprima a saída na sessão SSH atual. Também queremos nomear esse contêiner de teste básico usando a --nameopção para que possamos gerenciá-lo facilmente mais tarde.

Verifique se o contêiner básico do registro está sendo executado docker ps. A saída deve ser semelhante a:

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                    NAMES
edfb54e4a8c4        registry:0.8.1      "/bin/sh -c 'exec do   7 seconds ago       Up 6 seconds        0.0.0.0:5000->5000/tcp   basic_registry

Além disso, visite http://YOUR_IP:5000seu navegador da Web e você receberá uma mensagem como a seguinte:

"docker-registry server (dev) (v0.8.1)"

Observe a palavra deventre parênteses. Isso significa que o servidor está atualmente executando a configuração do desenvolvedor. Veremos mais configurações em breve.

Agora você tem seu próprio registro de contêiner (muito básico) em execução! Mas ainda não terminamos.

Talvez você queira manter isso privado de olhares indiscretos, ou talvez armazene suas imagens no Amazon S3 em vez de armazenamento local. Vamos examinar as várias opções de configuração na próxima seção.

Antes de prosseguirmos, vamos matar o contêiner de teste para não encontrarmos portas conflitantes.

docker kill basic_registry

Configuração do registro

Há duas maneiras pelas quais podemos passar a configuração para o Docker Registry. Uma maneira é passar variáveis ​​de ambiente para um novo contêiner e a outra é adicionar um arquivo de configuração.

Aqui estão algumas das opções de configuração comuns que usaremos:

  • loglevel- A quantidade mínima de informações para efetuar logon no console. O padrão é info.
  • standalone- Este registro deve agir por conta própria? (Nunca consulta o registro público.) O padrão é true.
  • index_endpoint- Se não for autônomo, que outro índice iremos consultar? Padrão index.docker.io.
  • cachee cache_lru- Opções referentes ao uso de um cache Redis para arquivos pequenos, abordaremos isso mais adiante.
  • storage- Que back-end de armazenamento devemos usar para este servidor? (Neste tutorial, usaremos local).
  • storage_path - Se estiver usando armazenamento local, qual diretório devemos usar para manter os arquivos?

Antes de começarmos a trabalhar com a configuração, precisamos de um arquivo base para trabalhar. O arquivo do repositório do Docker Registry no GitHub funcionará perfeitamente:

wget https://raw.githubusercontent.com/docker/docker-registry/0.8/config/config_sample.yml

O arquivo deve ser salvo com êxito com uma saída como:

2014-09-14 14:09:01 (156 MB/s) - 'config_sample.yml' saved [5384/5384]

Ótimo! Agora podemos modificar esse arquivo para atender às nossas necessidades.

O único editor de texto que acompanha o Core OS é vim, mas não se preocupe se você nunca o usou antes, isso explicará passo a passo o que editar e como fazê-lo.

vim config_sample.yml

Depois de abrir o arquivo, pressione o Icanto inferior direito e deve aparecer: -- INSERT --no modo de inserção. Role até a parte inferior do arquivo usando as teclas de seta. Você verá uma seção rotulada prod.

Vamos mudar as duas linhas, as alterações estão abaixo

prod:
    <<: *local
    storage_path: _env:STORAGE_PATH:/data

O que fizemos foi alterar a prodconfiguração para derivar da localseção em vez da s3seção. Em seguida, substituímos o storage_pathpara usar o caminho /datadentro do novo contêiner.

Depois de confirmar que todas as alterações estão corretas, pressione ESCpara sair do modo de inserção e digite :wq(isso significa gravar as alterações no arquivo e sair do vim).

Agora vamos renomear o arquivo para apenas config.yml

mv config_sample.yml config.yml

Cache Redis (opcional)

Se você deseja usar o redis para acelerar o registro do contêiner, é tão simples quanto extrair um novo contêiner do registro público e adicionar mais algumas linhas de configuração.

Primeiro, puxe a imagem de nível superior do Redis:

docker pull redis

Depois que a imagem é extraída com êxito, podemos executá-la e nomeá-la exatamente como fizemos no registro de teste:

docker run -d --name registry-redis redis

Como o redis está na memória, não precisamos fazer nenhuma configuração, pois o vincularemos ao contêiner do registro nas etapas posteriores.

Mais uma vez, verifique se está sendo executado usando docker ps:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
54f65641eccf        redis:2.8           "redis-server"      2 seconds ago       Up 1 seconds        6379/tcp            registry-redis

Agora re-abrir o config.ymlem vime entrar modo de inserção apenas como a primeira vez que editou.

Adicione as seguintes linhas abaixo da prodseção, certificando-se de recuar corretamente. Desta vez, estamos apenas adicionando cachee cache_lru.

cache:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 0

cache_lru:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 1

As variáveis ​​de ambiente REDIS_PORT_6379_TCP_ADDRe REDIS_PORT_6379_TCP_PORTsão passadas para o contêiner do registro mediante ligação com o contêiner Redis.

Com isso, agora você configurou um contêiner Redis que funcionará lado a lado com o contêiner do registro. Agora, para criar o registro!

Construindo o contêiner

Temos todas as configurações definidas e prontas, agora precisamos construir o contêiner de registro real.

Inicie vim Dockerfilepara criar um novo Dockerfile. Entre no modo de inserção e siga as edições abaixo.

FROM registry:latest

# Add the custom configuration file we made 
ADD ./config.yml /docker-registry/config/config.yml

# Create the data directory
RUN mkdir /data

# Set the configuration file to config.yml
env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml

# Make sure we use the prod configuration settings 
env SETTINGS_FLAVOR prod

O que fizemos acima é essencialmente estender a imagem do registro para que ele use nosso arquivo de configuração e configurações. Um Dockerfile é um conjunto de instruções de construção para o Docker ler e criar. Se você quiser saber mais sobre os Dockerfiles e sua sintaxe, consulte a documentação oficial do site Docker.

Em seguida, precisamos construir o contêiner para uso.

docker build -t my_registry .


Sending build context to Docker daemon 13.82 kB
Sending build context to Docker daemon 
Step 0 : FROM registry
 ---> e42d15ec8417
Step 1 : ADD ./config.yml /docker-registry/config/config.yml
 ---> 4339f026d459
Removing intermediate container 2d5138fbcd34
Step 2 : RUN mkdir /data
 ---> Running in a090f0bdbfd1
 ---> 8eb27ba6e12a
Removing intermediate container a090f0bdbfd1
Step 3 : env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml
 ---> Running in 565b5bfb2b22
 ---> 914462e46dc0
Removing intermediate container 565b5bfb2b22
Step 4 : env SETTINGS_FLAVOR prod
 ---> Running in 31a92847b851
 ---> b5949575c374
Removing intermediate container 31a92847b851
Successfully built b5949575c374

Agora estamos prontos para correr!

Vamos criar um diretório em nosso sistema host para montar no contêiner como o /datavolume.

mkdir registry-data

Agora podemos girar um novo contêiner. Se você planeja usar o cache Redis, use o segundo comando abaixo.

# For a non-Redis cache registry
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg my_registry

# For a Redis cached registry (Must have followed Redis Caching section above)
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg --link registry-redis:redis my_registry

Para garantir que seu servidor esteja funcionando corretamente, visite http://YOUR_IP:5000. Você verá a seguinte mensagem:

"docker-registry server (prod) (v0.8.1)"

Observe o (prod)significado de nossas alterações na configuração!

Configure seu cliente Docker local

Agora que temos nosso próprio registro em execução, queremos que o cliente Docker em nossas máquinas locais comece a usá-lo. Normalmente você usaria o comando:, docker loginmas para nosso uso, precisamos adicionar mais um argumento ao comando login:

docker login YOUR_IP:5000

Digite um nome de usuário e senha (pense nisso como criar uma nova conta) e ignore a mensagem que indica que você deve ativá-la.

Em seguida, vamos puxar uma imagem de estoque e enviá-la para o nosso próprio repositório.

# Pull the busybox image from the public registry
docker pull busybox

# Tag it with our IP/URL
docker tag busybox YOUR_IP:5000/busybox

# Push it to our newly made registry
docker push YOUR_IP:5000/busybox

Se tudo correr corretamente, a mensagem final deve estar na linha de:

Pushing tag for rev [a9eb17255234] on 

Parabéns! Você configurou seu próprio repositório docker.

Qual é o próximo?

Aqui estão algumas idéias sobre como melhorar seu novo registro privado:

  • Proxy reverso usando Nginx ou Apache para colocar segurança adicional à sua frente, como autenticação HTTP simples.
  • Obtenha um domínio para o seu servidor e configure-o para que você possa acessar seu registro com algo como: registry.mysite.com
  • Compre (ou faça sua autoassinatura) um certificado SSL para adicionar ainda mais proteção se seus contêineres contiverem informações confidenciais.


Leave a Comment

Instalando o Docker no Ubuntu 14.04

Instalando o Docker no Ubuntu 14.04

Usando um sistema diferente? O Docker é um aplicativo que permite implantar programas executados como contêineres. Foi escrito no popular programa Go

Configurar Sentry via Docker no Ubuntu 16.04

Configurar Sentry via Docker no Ubuntu 16.04

Usando um sistema diferente? Introdução O Sentry é uma solução de código aberto para rastreamento de erros. O Sentry rastreia exceções e outras mensagens úteis

Instale o Rancher Server no RancherOS

Instale o Rancher Server no RancherOS

O RancherOS é um sistema operacional incrivelmente leve (apenas cerca de 60 MB) que executa um daemon do Docker do sistema como PID 0 para executar serviços do sistema

Como instalar o Harbor no CentOS 7

Como instalar o Harbor no CentOS 7

O Harbor é um servidor de registro de classe empresarial de código aberto que armazena e distribui imagens do Docker. Harbor estende o Docker Distribution b de código aberto

Como usar o Docker: Criando seu primeiro contêiner Docker

Como usar o Docker: Criando seu primeiro contêiner Docker

Este tutorial explica os conceitos básicos de introdução ao Docker. Presumo que você já tenha o Docker instalado. As etapas deste tutorial funcionarão em um

Equilíbrio de carga com o Docker

Equilíbrio de carga com o Docker

Ao executar um aplicativo Web, normalmente você deseja aproveitar ao máximo seus recursos sem precisar converter seu software para usar multithreading

Implantar um aplicativo Node.js usando o Docker

Implantar um aplicativo Node.js usando o Docker

Este artigo mostra como implantar o aplicativo Node em um contêiner do Docker. Nota: Este tutorial pressupõe que você tenha o Docker instalado e leia

Criar um enxame Docker no Alpine Linux 3.9.0

Criar um enxame Docker no Alpine Linux 3.9.0

Introdução Este guia mostra como criar e configurar um enxame Docker usando vários servidores Alpine Linux 3.9.0 e o Portainer. Esteja ciente de que

Implante o Kubernetes com o Kubeadm no CentOS 7

Implante o Kubernetes com o Kubeadm no CentOS 7

Visão geral Este artigo tem como objetivo ajudá-lo a colocar um cluster do Kubernetes em funcionamento com o kubeadm rapidamente. Este guia estará implantando dois servidores, em

Instalando o docker-compose no CoreOS

Instalando o docker-compose no CoreOS

Este artigo explica como instalar o docker-compose no CoreOS. No CoreOS, a pasta / usr / é imutável, portanto o caminho padrão / usr / local / bin não está disponível para

Implante e gerencie com segurança contêineres LXC no Ubuntu 14.04

Implante e gerencie com segurança contêineres LXC no Ubuntu 14.04

Os contêineres LXC (contêineres do Linux) são um recurso do sistema operacional no Linux que pode ser usado para executar vários sistemas Linux isolados em um único host. Thes

Instale o Docker CE no Ubuntu 18.04

Instale o Docker CE no Ubuntu 18.04

Introdução O Docker é um aplicativo que nos permite implantar programas executados como contêineres. Foi escrito na popular linguagem de programação Go

Introdução ao Kubernetes no CentOS 7

Introdução ao Kubernetes no CentOS 7

O Kubernetes é uma plataforma de código aberto desenvolvida pelo Google para gerenciar aplicativos em contêineres em um cluster de servidores. Ele se baseia em uma década e

Implantar um aplicativo PHP usando o Docker-compone

Implantar um aplicativo PHP usando o Docker-compone

Os aplicativos PHP geralmente são compostos por um servidor da web, um sistema de banco de dados relacional e o próprio interpretador de linguagem. Neste tutorial, estaremos alavancando

Instale o Rancher no Ubuntu 16.04

Instale o Rancher no Ubuntu 16.04

Usando um sistema diferente? Introdução O Rancher é uma plataforma de código aberto para executar contêineres e criar um serviço de contêiner particular. Rancheiro é a base

Sessão complicada com Docker Swarm (CE) no Debian 9

Sessão complicada com Docker Swarm (CE) no Debian 9

Usando um sistema diferente? Introdução O Docker Swarm transforma seus servidores individuais em um cluster de computadores; facilitando o dimensionamento, alta disponibilidade e

Instalando o Docker CE no CentOS 7

Instalando o Docker CE no CentOS 7

A tecnologia de contêiner do Docker permite executar aplicativos em um ambiente específico e isolado. Docker Community Edition (CE) é o novo nome para o fre

Introdução ao SQL Server 2017 (MS-SQL) no CentOS 7 com Docker

Introdução ao SQL Server 2017 (MS-SQL) no CentOS 7 com Docker

Pré-requisitos Docker engine 1.8+. Mínimo de 4 GB de espaço em disco. Mínimo de 4 GB de RAM. Etapa 1. Instalar o Docker Para instalar o SQL-Server, o Docker deve

Instalando o Docker CE no Debian 9

Instalando o Docker CE no Debian 9

Usando um sistema diferente? Introdução O Docker é um aplicativo que permite a implantação de software em contêineres virtuais. Foi escrito no G

A IA pode lutar contra o aumento do número de ataques de ransomware

A IA pode lutar contra o aumento do número de ataques de ransomware

Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane

ReactOS: Este é o futuro do Windows?

ReactOS: Este é o futuro do Windows?

ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+

Como a IA pode levar a automação de processos ao próximo nível?

Como a IA pode levar a automação de processos ao próximo nível?

Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

O que é um sistema de arquivos de registro no diário e como ele funciona?

O que é um sistema de arquivos de registro no diário e como ele funciona?

Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true

Singularidade tecnológica: um futuro distante da civilização humana?

Singularidade tecnológica: um futuro distante da civilização humana?

À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

O impacto da inteligência artificial na saúde 2021

O impacto da inteligência artificial na saúde 2021

A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA ​​na área da saúde ainda está crescendo dia a dia.