도커 레지스트리란?

도커 이미지를 사용자들끼리 공유할 수 있도록 하는 플랫폼이다. 이러한 레지스트리는 크게 2가지 종류, Public 레지스트리, Private 레지스트리로 나뉜다.  Public 레지스트리는 도커의 공식 레지스트리인 도커 허브와 기타 다른 벤더 업체들의 레지스트리가 존재한다.  Private 레지스트리는 사용자가 직접 레지스트리를 구축해서 자신의 내부망에서 사용(팀원이나 회사에서 공유)하거나 외부망과 연결해서 사용할수도 있다. 


도커허브

도커 허브는 도커의 Official 이미지 공유 사이트이다. 도커 허브에서 이러한 이미지를 자신의 도커로 다운받을 수 있고, 자신이 만든 이미지를 올릴 수도 있다. 도커허브에서는 대부분의 오픈소스 소프트웨어와 상용 소프트웨어는 제작사들이 Official하게 자신의 소프트웨어를 이미지로 만들어 공유하고 있다. (물론 라이센스는 주의해야 한다) 예를들어 오라클 이미지는 라이센스를 구매해야 하지만, 오라클XE 버전이 있는 이미지가 있다. 이러한 이미지는 사용할 수 있다.

 

우리가 상상하는 모든 서비스는 다 도커 허브에 이미지화 되어 있다고 생각하면 편하다. 또한 도커 엔진이 올라간 운영체제와 상관없이, 모든 이미지가 서로 호환되고 컨테이너화 가능하다.

 

도커허브는 github, bitbucket같은 소스코드 관리 툴과 연계가 가능하다. 예를들어 github상에서 dockerfile(도커 이미지를 만드는 스크립트)를 관리하고, 거기서 도커 이미지를 자동으로 생성하여 도커 허브에 업로드하는 등 여러가지 방법으로 사용 가능하다.


도커허브의 이미지 변조 방지 및 취약성 검사 기능

도커허브 또는 공개 레지스트리는 아무래도 오픈되어 있으므로 변조하여 공격을 하거나 취약점을 만들어 내는 위험한 이미지가 있을수도 있다. 보통으로 사람들이 자주 사용하는 official 한 이미지를 잘못 다운받게 하여 공격하는 방식이 많이 사용된다. 이러한 위험을 막기 위해 도커 이미지를 검증 및 확인하는 기능들이 도커 허브에 포함되어 있다.

docker container trust 
도커 이미지 제공자를 검증하는 기능. 이미지 제공자는 도커 레지스트리에 이미지를 송신하기 전에, 로컬 환경에서 비밀키를 사용하여 이미지에 서명을 한다. 그 후 그 이미지를 이용할 때는 이미지 제공자의 공개키를 사용하여 실행하려고 하는 이미지가 정말 제공자가 작성한건지 확인한다. 만일 이미지가 변조된 경우 이미지를 무효로 만든다.


docer security scanning
도커 이미지를 검사하여 이미 알려진 보안상의 취약성이 없다는 것을 확인하여 이미지의 안전성을 확인한다.


도커허브 사용하기

1. 접속하기

- https://hub.docker.com/ 에 접속한다.

 

2. 계정을 만들고 로그인한다.

- 로그인이 되면 다음과 같이 자신의 화면이 나온다. 여기서 자신이 올린 이미지 정보를 확인 및 설정할 수 있다.

3. 원하는 어플리케이션의 이미지를 검색한다.

- 화면 상단 돋보기로 원하는 이미지를 검색할 수 있다.

- 검색된 이미지에서 official image는 이전에 언급한대로 해당 어플리케이션 제조사가 공식적으로 만든 이미지이다.

- 보통 이러한 공식 이미지를 바탕으로 자신의 설정에 맞게 변경하여 사용하게 된다.

- Stars 는 SNS의 좋아요 랑 비슷하다고 생각하면 되며, 일반적으로 Stars가 많으면 신뢰도가 높다.

4. 해당 이미지의 상세사항을 살펴본다.

- 영어를 몰라도, 천천히 읽어보면 어느정도 이해할 수 있다.

- mariadb가 무엇인지 개요, 실행하는 법, 다른 어플리케이션과 연결하는 법, 라이센스, 주의사항, 메뉴얼 등 유용한 자료들이 포함되어 있다.

- 이러한 어플리케이션을 모르는 상태에서는 메뉴얼 등 자료들을 봐도 아무런 의미가 없고 이해도 못할 것이다. 따라서 도커를 제대로 배우기 위해서는 어플리케이션도 잘 알아야 한다.

- 도커허브에 있는 이미지는 "이미지명:태그" 의 형식을 취한다.

- 오른쪽에 검은바탕의 글자로 docker pull mariadb 라는 cli명령으로 도커가 설치된 호스트에서 이미지를 다운받을 수 있다. 여기서는 태그를 넣지 않았는데, 태그를 넣지 않으면 latest 태그를 사용한다.

# 태그란?

- 태그는 이미지의 버전, 속성 등을 의미한다.

- 태그 탭을 들어가면, latest, bionic, beta, 10.5.1등이 있다.

- latest는 항상 그 시점의 최신 버전을 의미하며, 10.5.1 등은 특정 버전을 의미한다.

- 즉, 버전 별 이미지를 받아 각기 다른 버전의 동일한 프로그램을 각각 동시에 띄울수도 있다.

- 태그 지정하여 명령어를 입력하는 경우, docker pull mariadb:latest 이렇게 : 이 붙은 형식으로 입력한다.

 

5. 해당 이미지의 환경변수 값을 찾아본다.

- 해당 이미지를 사용하기 위해서는 정확한 환경변수를 사용할 줄 알아야 한다.

- 이러한 환경변수는 다른 블로그나 구글링보다는 offcial한 도커 허브에서 찾는것이 가장 정확하고 신뢰도가 높다.

- 대부분의 도커 이미지는 이러한 환경변수를 가지고 있고 이미지를 컨테이너화 (실행) 하기 전에 이러한 환경변수를 원하는 세팅에 맞게 입력해주어야 한다.

- 아래 환경변수는 도커 이미지로 실행할 mysql의 유저정보, 비밀번호 정보, 데이터베이스 명 등을 변수로서 설정하는 방법을 알려준다.

이렇게 도커 허브를 통해 이미지 다운로드 및 개요, 설정정보 등을 확인할 수 있다. 이후 도커 엔진이 설치된 호스트의 cli 화면에서 도커 허브에 로그인을 한 후 이미지 다운 및 업로드가 가능하다. (즉, 도커허브를 쓰려면 호스트가 인터넷에 연결되어야 한다)

+ Recent posts