CoreOS에서 고유 한 Docker 레지스트리 설정

우리는 여러 시스템에서 애플리케이션 컨테이너를 생성, 관리 및 배포 할 수있는 플랫폼 인 Docker를 알고 있습니다. Docker Inc.는 "Docker Registry"라고하는 git 저장소와 같이 오픈 소스 컨테이너를 다운로드 (또는 풀)하는 서비스를 제공합니다. Docker 컨테이너의 GitHub와 같은 것으로 생각하십시오.

그러나 공개 레지스트리와 분리 된 자체 레지스트리를 호스팅하려면 어떻게해야합니까? Docker Inc.는 GitHub에서 레지스트리 응용 프로그램을 오픈 소스로 제공했습니다.

이 자습서에서는 새 VPS에서 CoreOS를 사용하여 개인 Docker 레지스트리를 설정하는 과정을 안내합니다.

CoreOS + 도커

Docker와 CoreOS가 할 수있는 일을이 튜토리얼에서 다루지 않기 때문에 많은 시간을 소비하지 않을 것입니다. 본질적으로 CoreOS는 대규모 서버 클러스터 용으로 설계되었으며 작고 빠르며 정기적 인 보안 업데이트를 자동으로받습니다. 루트 파일 시스템도 읽기 전용이므로 Docker를 사용하여 기본 설치에 포함되지 않은 모든 종류의 소프트웨어를 실행해야합니다.

코어 OS는 Docker를위한 완벽한 호스트 시스템입니다!

최신 레지스트리 가져 오기 및 실행

Docker Inc.는 레지스트리를 최상위 이미지로 제공했습니다. 즉, 다음과 같이 간단하게 풀다운 할 수 있습니다.

docker pull registry

연결 속도에 따라 몇 분이 걸릴 수 있습니다.

최고 수준의 이미지가 더 해지면 정기적 인 지원과 업데이트를받을 수 있습니다.

이제 레지스트리를 테스트 해 봅시다. 레지스트리 이미지를 사용하여 새 컨테이너를 만들 수 있습니다.

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

Docker를 너무 많이 사용하지 않은 사람들의 경우 -p플래그는의 약자입니다 PORT. 즉 컨테이너에서 포트 5000을 호스트 포트 5000에 노출시킵니다.

-d플래그가 약자 daemon이 컨테이너가 백그라운드에서 실행하고 현재 SSH 세션에 출력하지하게됩니다, 우리는 또한 사용하여이 기본 테스트 컨테이너 이름을 지정할 --name우리가 나중에 쉽게 관리 할 수 있도록 옵션을 선택합니다.

를 사용하여 기본 레지스트리 컨테이너가 실행 중인지 확인하십시오 docker ps. 출력은 다음과 유사해야합니다.

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

또한 http://YOUR_IP:5000웹 브라우저를 방문 하면 다음과 같은 메시지가 나타납니다.

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

dev괄호 안의 단어 를 주목하십시오 . 이는 서버가 현재 dev 구성을 실행 중임을 의미합니다. 우리는 더 많은 구성을 곧 살펴볼 것입니다.

이제 고유 한 (매우 기본적인) 컨테이너 레지스트리가 실행 중입니다! 그러나 아직 끝나지 않았습니다.

어쩌면이 개인 정보를 감시하지 않을 수도 있고 로컬 스토리지 대신 Amazon S3에 이미지를 저장할 수도 있습니다. 다음 섹션에서 다양한 구성 옵션을 살펴 보겠습니다.

계속 진행하기 전에 충돌하는 포트가 발생하지 않도록 테스트 컨테이너를 종료하십시오.

docker kill basic_registry

레지스트리 구성

Docker Registry로 구성을 전달할 수있는 두 가지 방법이 있습니다. 한 가지 방법은 환경 변수를 새 컨테이너에 전달하는 것이고 다른 하나는 구성 파일을 추가하는 것입니다.

우리가 사용할 일반적인 구성 옵션은 다음과 같습니다.

  • loglevel-콘솔에 기록 할 정보의 최소량. 기본값은 info입니다.
  • standalone-이 등록 소가 독자적으로 행동해야합니까? 공용 레지스트리를 쿼리하지 마십시오. 기본값은 true입니다.
  • index_endpoint-독립형이 아닌 경우 어떤 다른 인덱스를 쿼리합니까? 기본 index.docker.io.
  • cachecache_lru- 작은 파일에 대한 레디 스 캐시를 사용하여 관련된 옵션, 우리는 나중에에 접촉 것이다.
  • storage-이 서버에 어떤 스토리지 백엔드를 사용해야합니까? (이 튜토리얼에서는 로컬을 사용합니다).
  • storage_path -로컬 저장소를 사용하는 경우 파일을 보관하기 위해 어떤 디렉토리를 사용해야합니까?

구성 작업을 시작하기 전에 작업 할 기본 파일이 필요합니다. GitHub의 Docker Registry 저장소 파일은 정상적으로 작동합니다.

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

파일은 다음과 같은 출력으로 성공적으로 저장되어야합니다.

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

큰! 이제 필요에 맞게이 파일을 수정할 수 있습니다.

Core OS와 함께 제공되는 유일한 텍스트 편집기는 vim이지만, 이전에 사용해 본 적이 없는지 걱정하지 마십시오. 단계별로 편집하고 수행하는 방법을 단계별로 설명합니다.

vim config_sample.yml

파일을 연 후를 누르면 I오른쪽 하단 모서리에 다음 과 같이 표시됩니다 : -- INSERT --삽입 모드. 화살표 키를 사용하여 파일 맨 아래까지 스크롤하면 섹션이 표시 prod됩니다.

우리는 두 줄을 바꿀 것입니다.

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

우리가 한 것은 섹션 대신 섹션 prod에서 파생 되도록 구성을 변경하는 local것입니다 s3. 그런 다음 새 컨테이너 내부의 storage_path경로를 사용 하도록를 덮어 썼습니다 /data.

모든 변경 사항이 올바른지 확인한 후에는 ESC삽입 모드를 종료하고 입력하십시오 :wq(변경 사항을 파일에 쓰고 vim을 종료해야 함).

이제 파일 이름을 config.yml

mv config_sample.yml config.yml

Redis 캐싱 (선택 사항)

redis를 사용하여 컨테이너 레지스트리 속도를 높이려면 공용 레지스트리에서 새 컨테이너를 가져 와서 몇 줄의 구성을 추가하는 것만 큼 간단합니다.

먼저 Redis의 최상위 이미지를 가져옵니다.

docker pull redis

이미지를 가져 오면 테스트 레지스트리에서와 같이 이미지를 실행하고 이름을 지정할 수 있습니다.

docker run -d --name registry-redis redis

redis는 메모리에 있기 때문에 이후 단계에서 레지스트리 컨테이너에 링크하므로 구성을 수행 할 필요가 없습니다.

다시 한 번, 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

이제 config.ymlin을 다시 열고 vim처음 편집 한 것처럼 삽입 모드로 들어갑니다.

prod섹션 아래에 다음 줄을 추가하여 올바르게 들여 쓰십시오. 이번에는 cacheand 만 추가 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

환경 변수 REDIS_PORT_6379_TCP_ADDR와는 REDIS_PORT_6379_TCP_PORT레디 스 컨테이너와 연결시 레지스트리 컨테이너로 전달됩니다.

이제 레지스트리 컨테이너와 함께 작동하는 Redis 컨테이너를 설정했습니다. 이제 레지스트리를 작성하십시오!

컨테이너 만들기

모든 구성이 준비되었으며 이제 실제 레지스트리 컨테이너를 빌드해야합니다.

vim Dockerfile새로운 Dockerfile을 생성 하기 위해 시작하십시오. 삽입 모드로 들어가서 아래 편집 내용을 따르십시오.

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

위에서 한 것은 기본적으로 레지스트리 이미지를 확장하여 구성 파일과 설정을 사용하는 것입니다. Dockerfile은 Docker가 읽고 빌드하는 빌드 지침 세트입니다. Dockerfile 및 구문에 대해 자세히 알아 보려면 공식 Docker 사이트 설명서를 살펴보십시오.

다음으로 사용할 컨테이너를 빌드해야합니다.

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

이제 우리는 도망 갈 준비가되었습니다!

컨테이너에 /data볼륨 으로 마운트 할 호스트 시스템의 디렉토리를 만들어 봅시다 .

mkdir registry-data

이제 새로운 컨테이너를 가동 할 수 있습니다. Redis 캐시를 사용하려는 경우 아래의 두 번째 명령을 사용하십시오.

# 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

서버가 올바르게 실행되고 있는지 확인하려면을 방문하십시오 http://YOUR_IP:5000. 다음과 같은 메시지가 나타납니다.

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

통지 (prod)의미 우리의 구성 변경은 성공했다!

로컬 Docker 클라이언트 구성

이제 자체 실행 레지스트리가 있으므로 로컬 컴퓨터의 Docker 클라이언트가 사용하기 시작합니다. 일반적으로 다음 명령을 사용 docker login하지만 login 명령에 인수를 하나 더 추가해야합니다.

docker login YOUR_IP:5000

사용자 이름과 비밀번호를 입력하고 (새 계정 만들기와 같은 생각) 활성화해야한다는 메시지를 무시하십시오.

다음으로 스톡 이미지를 가져 와서 자체 저장소로 옮깁니다.

# 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

모든 것이 올바르게 푸시되면 최종 메시지는 다음 라인을 따라야합니다.

Pushing tag for rev [a9eb17255234] on 

축하합니다! 고유 한 도커 저장소를 설정했습니다.

무엇 향후 계획?

새 개인 레지스트리를 개선하는 방법에 대한 몇 가지 아이디어가 있습니다.

  • 간단한 HTTP 인증과 같이 Nginx 또는 Apache를 사용하여 프록시를 추가하여 보안을 강화하십시오.
  • registry.mysite.com과 같은 방법으로 레지스트리에 액세스 할 수 있도록 서버의 도메인을 확보하고 설정하십시오.
  • 컨테이너에 중요한 정보가 포함 된 경우 더 많은 보호 기능을 추가하려면 SSL 인증서를 구매 (또는 자체 서명)하십시오.


Leave a Comment

Alpine Linux 3.9.0에서 Docker Swarm 생성

Alpine Linux 3.9.0에서 Docker Swarm 생성

소개이 안내서는 여러 개의 Alpine Linux 3.9.0 서버 및 Portainer를 사용하여 Docker 스웜을 생성 및 구성하는 방법을 보여줍니다. 그쪽으로 알아주십시오

RancherOS에 Rancher 서버 설치

RancherOS에 Rancher 서버 설치

RancherOS는 시스템 서비스를 실행하기 위해 시스템 Docker 데몬을 PID 0으로 실행하는 매우 가벼운 운영 체제 (약 60MB)입니다.

Docker-compose를 사용하여 PHP 응용 프로그램 배포

Docker-compose를 사용하여 PHP 응용 프로그램 배포

PHP 응용 프로그램은 일반적으로 웹 서버, 관계형 데이터베이스 시스템 및 언어 인터프리터 자체로 구성됩니다. 이 튜토리얼에서 우리는 활용할 것입니다

Ubuntu 18.04에 Docker CE 설치

Ubuntu 18.04에 Docker CE 설치

소개 Docker는 컨테이너로 실행되는 프로그램을 배포 할 수있는 응용 프로그램입니다. 인기있는 Go 프로그래밍 언어로 작성되었습니다.

Ubuntu 14.04에 Docker 설치

Ubuntu 14.04에 Docker 설치

다른 시스템을 사용하십니까? Docker는 컨테이너로 실행되는 프로그램을 배포 할 수있는 응용 프로그램입니다. 인기있는 Go 프로그램에서 작성되었습니다.

Docker를 사용하여 Node.js 애플리케이션 배포

Docker를 사용하여 Node.js 애플리케이션 배포

이 기사에서는 Docker 컨테이너 내에 Node 응용 프로그램을 배포하는 방법을 보여줍니다. 참고 :이 튜토리얼은 Docker가 설치되어 있고 읽은 것으로 가정합니다.

CentOS 7에 Harbor를 설치하는 방법

CentOS 7에 Harbor를 설치하는 방법

Harbor는 Docker 이미지를 저장하고 배포하는 오픈 소스 엔터프라이즈 급 레지스트리 서버입니다. 하버, 오픈 소스 Docker Distribution b 확장

Ubuntu 14.04에서 LXC 컨테이너를 안전하게 배포 및 관리

Ubuntu 14.04에서 LXC 컨테이너를 안전하게 배포 및 관리

LXC 컨테이너 (Linux 컨테이너)는 단일 호스트에서 여러 개의 격리 된 Linux 시스템을 실행하는 데 사용할 수있는 Linux의 운영 체제 기능입니다. 그

CentOS 7에서 Kubernetes 시작하기

CentOS 7에서 Kubernetes 시작하기

Kubernetes는 서버 클러스터 전체에서 컨테이너화 된 애플리케이션을 관리하기 위해 Google에서 개발 한 오픈 소스 플랫폼입니다. 그것은 10 년을 기반으로하고

우분투 16.04에 Rancher 설치

우분투 16.04에 Rancher 설치

다른 시스템을 사용하십니까? 소개 Rancher는 컨테이너를 실행하고 개인 컨테이너 서비스를 구축하기위한 오픈 소스 플랫폼입니다. 목장주 기지

CentOS 7에서 Kubeadm으로 Kubernetes 배포

CentOS 7에서 Kubeadm으로 Kubernetes 배포

개요이 기사는 Kubernetes 클러스터를 kubeadm과 함께 시작하고 실행하는 데 도움을주기 위해 작성되었습니다. 이 가이드는 두 대의 서버를 배포합니다.

CoreOS에 docker-compose 설치

CoreOS에 docker-compose 설치

이 기사에서는 CoreOS에 docker-compose를 설치하는 방법에 대해 설명합니다. CoreOS에서는 / usr / 폴더를 변경할 수 없으므로 표준 / usr / local / bin 경로를 사용할 수 없습니다.

CentOS 7에 Rancher 설치

CentOS 7에 Rancher 설치

다른 시스템을 사용하십니까? 소개 Rancher는 컨테이너를 실행하고 개인 컨테이너 서비스를 구축하기위한 오픈 소스 플랫폼입니다. 목장주 기지

CentOS 7에 Docker 설치

CentOS 7에 Docker 설치

다른 시스템을 사용하십니까? Docker는 가상 컨테이너 내에 소프트웨어를 배포 할 수있는 응용 프로그램입니다. Go 프로그램에서 작성되었습니다.

CentOS 7에서 Docker Swarm (CE)을 사용한 고정 세션

CentOS 7에서 Docker Swarm (CE)을 사용한 고정 세션

다른 시스템을 사용하십니까? Docker Swarm은 개별 서버를 컴퓨터 클러스터로 전환하여 확장 및 고 가용성을 용이하게합니다.

데비안 9의 Docker Swarm (CE)과의 끈적한 세션

데비안 9의 Docker Swarm (CE)과의 끈적한 세션

다른 시스템을 사용하십니까? Docker Swarm은 개별 서버를 컴퓨터 클러스터로 전환합니다. 스케일링, 고 가용성

Docker 사용 방법 : 첫 번째 Docker 컨테이너 만들기

Docker 사용 방법 : 첫 번째 Docker 컨테이너 만들기

이 튜토리얼은 Docker 시작의 기본 사항을 설명합니다. Docker가 이미 설치되어 있다고 가정합니다. 이 튜토리얼의 단계는

Docker를 사용한로드 밸런싱

Docker를 사용한로드 밸런싱

웹 응용 프로그램을 실행할 때 일반적으로 멀티 스레딩을 사용하도록 소프트웨어를 변환하지 않고도 리소스를 최대한 활용하려고합니다.

Docker를 사용하여 CentOS 7에서 SQL Server 2017 (MS-SQL) 시작

Docker를 사용하여 CentOS 7에서 SQL Server 2017 (MS-SQL) 시작

전제 조건 Docker 엔진 1.8 이상. 최소 4GB의 디스크 공간. 최소 4GB의 RAM. 1 단계. Docker 설치 SQL-Server를 설치하려면 Docker mus

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.

ReactOS: 이것이 Windows의 미래입니까?

ReactOS: 이것이 Windows의 미래입니까?

오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

우리 컴퓨터는 모든 데이터를 저널링 파일 시스템이라고 하는 체계적인 방식으로 저장합니다. 검색을 누르는 즉시 컴퓨터에서 파일을 검색하고 표시할 수 있는 효율적인 방법입니다.https://wethegeek.com/?p=94116&preview=true

기술적 특이점: 인류 문명의 먼 미래?

기술적 특이점: 인류 문명의 먼 미래?

과학이 빠른 속도로 발전하고 우리의 많은 노력을 인수함에 따라 설명할 수 없는 특이점에 처할 위험도 높아집니다. 특이점이 우리에게 무엇을 의미할 수 있는지 읽어보십시오.

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

2021년 의료 분야에서 인공 지능의 영향

2021년 의료 분야에서 인공 지능의 영향

의료 분야의 AI는 지난 수십 년 동안 큰 도약을 했습니다. 따라서 의료 분야에서 AI의 미래는 여전히 나날이 성장하고 있습니다.