티스토리 뷰

728x170

Docker Private 구축하기


Docker는 Red hat 계열의 CentOS의 경우 yum, Ubuntu 계열의 경우 apt-get으로 손쉽게 설치 할 수 있습니다.

다만 내부 폐쇄망 Private Zone에 Docker를 설치해야 하는 경우에는 Dependency 이슈로 인해 어떻게 설치해야 할지 걱정인 경우가 있는데요.

지금부터 살펴 볼 내용은 이러한 폐쇄망에 Docker를 설치할 경우 어떻게 해야하는지 알아보도록 하겠습니다.


테스트 환경

OS : CentOS 7


실습 과정

1) CentOS Mirrors 확인

Docker를 설치하기 위한 RPM 저장소의 모음인 아래 미러 사이트를 먼저 확인합니다.

https://www.centos.org/download/mirrors/

위 사이트에 접속하면 CentOS에서 사용 가능한 다양한 미러 리스트를 확인할 수 있습니다.

그 중 Asia -> South Korea에서 제공하는 사이트는 다음과 같습니다.

위와 같이

AoneNetworks Co.,Ltd.
KAIST
Kakao Corp.
Moack Data Center
NAVER Business Platform

의 사이트가 한국에서 제공되며, 동일 존에 있기 때문에 다운로드를 받는 속도에 차이가 있습니다.

# 물론 타 미러 사이트를 사용해도 다운로드는 받을 수 있습니다.


2) private docker repository download

# RPM 파일을 다운로드 하기 위한 인터넷 접속이 가능한 환경에서 해당 작업을 수행합니다.

위 미러 사이트에서 받을 수 있는 방법은 크게 두가지가 있습니다. 

 

a) wget을 활용한 다운로드 (wget --recursive --no-parent  http://ftp.kaist.ac.kr/CentOS/7/extras/x86_64/)

wget을 사용할 경우 http를 지원하는 위 5개 사이트 모두에서 다운로드 받을 수 있습니다.

--recursive 옵션으로 하위 디렉토리까지 다운로드 받을 수 있으며, --no-parent 옵션으로 지정한 경로 상위의 파일은 다운로드 받지 않도록 지정합니다.

전체를 모두 다운로드 받을 경우 어마어마한 사이즈를 다운로드 받아야 하기 때문에 원하는 경로를 URL에 지정하는 것이 중요합니다.

# 본 테스트는 South Korea Zone의 kaist 미러사이트를 사용하여 테스트 하였습니다.


[root@nrson kaistRepoRsync]# wget --recursive --no-parent  http://ftp.kaist.ac.kr/CentOS/7/extras/x86_64/
--2019-05-21 14:55:03--  http://ftp.kaist.ac.kr/CentOS/7/extras/x86_64/
Resolving ftp.kaist.ac.kr (ftp.kaist.ac.kr)... 103.22.220.133
Connecting to ftp.kaist.ac.kr (ftp.kaist.ac.kr)|103.22.220.133|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1858 (1.8K) [text/html]
Saving to: ‘ftp.kaist.ac.kr/CentOS/7/extras/x86_64/index.html

100%[=======================================================>] 1,858       --.-K/s   in 0s

2019-05-21 14:55:04 (246 MB/s) - ‘ftp.kaist.ac.kr/CentOS/7/extras/x86_64/index.html’ saved [1858/1858]

Loading robots.txt; please ignore errors.
--2019-05-21 14:55:04--  http://ftp.kaist.ac.kr/robots.txt
Reusing existing connection to ftp.kaist.ac.kr:80.
HTTP request sent, awaiting response... 200 OK
Length: 72 [text/plain]
Saving to: ‘ftp.kaist.ac.kr/robots.txt

100%[=======================================================>] 72          --.-K/s   in 0s

2019-05-21 14:55:04 (13.5 MB/s) - ‘ftp.kaist.ac.kr/robots.txt’ saved [72/72]

--2019-05-21 14:55:04--  http://ftp.kaist.ac.kr/CentOS/7/extras/x86_64/Packages/
Reusing existing connection to ftp.kaist.ac.kr:80.
HTTP request sent, awaiting response... 200 OK
Length: 104487 (102K) [text/html]
Saving to: ‘ftp.kaist.ac.kr/CentOS/7/extras/x86_64/Packages/index.html

100%[=======================================================>] 104,487     --.-K/s   in 0.04s

2019-05-21 14:55:04 (2.68 MB/s) - ‘ftp.kaist.ac.kr/CentOS/7/extras/x86_64/Packages/index.html’ saved [104487/104487]

--2019-05-21 14:55:04--  http://ftp.kaist.ac.kr/CentOS/7/extras/x86_64/drpms/
Reusing existing connection to ftp.kaist.ac.kr:80.
HTTP request sent, awaiting response... 200 OK
Length: 223335 (218K) [text/html]
Saving to: ‘ftp.kaist.ac.kr/CentOS/7/extras/x86_64/drpms/index.html

100%[=======================================================>] 223,335     --.-K/s   in 0.03s

...

...


b) rsync를 활용한 다운로드 (rsync -vtr --progress rsync://ftp.kaist.ac.kr/CentOS/7/extras/x86_64/ /root/kaistRepoRsync/)

rsync를 사용할 경우 rsync를 지원하는 region에서만 사용이 가능합니다.

한국에서는 kaist에서만 rsync를 지원합니다.


[root@nrson kaistRepoRsync]# rsync -vtr --progress rsync://ftp.kaist.ac.kr/CentOS/7/extras/x86_64/ /root/kaistRepoRsync/

  Welcome to KAIST File Archive, ftp.kaist.ac.kr!
  (AKA ftp.kr.debian.org, kr.archive.ubuntu.com, ftp2.kr.vim.org,
   ftp2.kr.freebsd.org)

  We provide mirrors of open source softwares, e.g. Debian, *BSDs,
  Mozilla, Apache, etc. and publically available files and software.
  Various access methods are available: FTP, HTTP, Rsync.
  This system is running at SPARCS Room, KAIST, Daejeon, Korea, Asia.
  We are operating 18TiB RAID-6 storage on Dell PowerEdge R510
  (Xeon E5506, 6GiB RAM, 2 x 1Gbps) server. KAIST sponsored hardware and
  network connectivity. SPARCS operates the whole service.

  Use entirely at your own risk -- no warranty is expressed or implied.
  * None of the service providers in any way whatsoever can be
    responsible for any problems that might be caused by this service.
  * Every access to this service is recorded and can be used and
    published for the purpose of improving the quality of the service.
  * We may limit any accesses without forewarning that may prevent
    operators from maintaining reasonable quality of the service.

  Contact ftp@ftp.kaist.ac.kr for any problem or suggestion.
  For more information, visit: http://ftp.kaist.ac.kr/


receiving incremental file list
./
Packages/
Packages/WALinuxAgent-2.2.18-2.el7.noarch.rpm
        420,296 100%    3.49MB/s    0:00:00 (xfr#1, to-chk=1220/1225)
Packages/WALinuxAgent-2.2.26-2.el7.noarch.rpm
        438,272 100%    2.12MB/s    0:00:00 (xfr#2, to-chk=1219/1225)
Packages/WALinuxAgent-2.2.32-1.el7.noarch.rpm
        379,636 100%    1.33MB/s    0:00:00 (xfr#3, to-chk=1218/1225)
Packages/ansible-2.4.2.0-2.el7.noarch.rpm
      7,968,876 100%    3.89MB/s    0:00:01 (xfr#4, to-chk=1217/1225)
Packages/ansible-doc-2.4.2.0-2.el7.noarch.rpm
        781,244 100%  676.96kB/s    0:00:01 (xfr#5, to-chk=1216/1225)
Packages/atomic-1.22.1-25.git5a342e3.el7.centos.x86_64.rpm
        906,364 100%    2.84MB/s    0:00:00 (xfr#6, to-chk=1215/1225)
Packages/atomic-1.22.1-26.gitb507039.el7.centos.x86_64.rpm
        938,112 100%    1.81MB/s    0:00:00 (xfr#7, to-chk=1214/1225)
Packages/atomic-registries-1.22.1-25.git5a342e3.el7.centos.x86_64.rpm
         35,780 100%   68.92kB/s    0:00:00 (xfr#8, to-chk=1213/1225)
Packages/atomic-registries-1.22.1-26.gitb507039.el7.centos.x86_64.rpm
         35,968 100%   68.60kB/s    0:00:00 (xfr#9, to-chk=1212/1225)
Packages/buildah-1.2-2.gitbe87762.el7.x86_64.rpm
      4,054,780 100%    2.85MB/s    0:00:01 (xfr#10, to-chk=1211/1225)
Packages/buildah-1.4-3.gitc8ed967.el7.x86_64.rpm
      4,293,572 100%    2.48MB/s    0:00:01 (xfr#11, to-chk=1210/1225)
Packages/buildah-1.5-2.gite94b4f9.el7.centos.x86_64.rpm
      4,346,252 100%    2.78MB/s    0:00:01 (xfr#12, to-chk=1209/1225)
Packages/buildah-1.7.1-2.git93747b1.el7.centos.x86_64.rpm

...

...


c) 다운로드가 완료된 파일을 확인합니다.

위와 같이 두가지 방법으로 mirror 사이트의 해당 경로 하위에 위치한 파일이 정상적으로 다운로드 되었는지 확인합니다.


[root@nrson x86_64]# ls -la
합계 132
drwxr-xr-x. 5 root root    69  5월 20 16:28 .
drwxr-xr-x. 3 root root    20  5월 20 16:28 ..
drwxr-xr-x. 2 root root 28672  5월 20 16:31 Packages
drwxr-xr-x. 2 root root 73728  5월 20 16:38 drpms
-rw-r--r--. 1 root root  1858  5월 20 16:28 index.html
drwxr-xr-x. 2 root root  4096  5월 20 16:38 repodata
[root@nrson x86_64]#


위와 같이 실제 해당 URL에 있는 파일이 정상적으로 다운로드 되었는지 여부를 검증합니다.

3) docker install file copy

다음으로 다운로드 받은 파일을 내부망으로 복사합니다.

[root@newnrson kaistRepo] scp -r ./x86_64/ root@xxx.xxx.xxx.xxx:/root/kaistRepo

복사하는 방법이야 다양하게 활용할 수 있습니다.

scp, usb, mount, ftp 등 다운로드 받은 파일을 내부망으로 이동합니다.


4) kaistRepo를 yum repository에 등록

# 지금부터는 내부망 / 폐쇄망의 서버에서 작업을 진행합니다.

로컬에 복사된 파일을 yum repository에 등록합니다.


[root@newnrson yum.repos.d]# cat kaist.repo
[kaist-repo]
name=CentOS Kaist Repository
baseurl=file:///root/kaistRepo
enabled=1
gpgcheck=0
[root@newnrson yum.repos.d]#


로컬에 복사 된 rpm 파일 리스트를 yum repository에 등록하여 이후 설치에 해당 repository를 활용할 수 있도록 설정합니다.

yum clean all & yum repolist all로 추가한 kaist.repo local repository가 정상 등록되었는지 확인합니다.


[root@newnrson ~]# yum clean all
Loaded plugins: langpacks
Cleaning repos: centos-repo local
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
[root@newnrson ~]# yum repolist all
Loaded plugins: langpacks
centos-repo | 3.6 kB  00:00:00
kaist-repo | 3.4 kB  00:00:00
local | 4.1 kB  00:00:00
(1/5): centos-repo/group_gz | 166 kB  00:00:00
(2/5): kaist-repo/primary_db | 201 kB  00:00:00
(3/5): centos-repo/primary_db | 6.0 MB  00:00:00
(4/5): local/group_gz | 137 kB  00:00:00
(5/5): local/primary_db | 4.0 MB  00:00:00
repo id                                       repo name                                       status
centos-repo                      CenoOS Repository                     enabled: 10,019
kaist-repo                         CentOS Kaist Repository            enabled:    413
local                                   rhel7                                                enabled:  4,986
repolist: 15,418
[root@newnrson ~]#


5) docker install

여기까지 작업이 완료되면 Package Manager인 yum을 통해 동일하게 docker를 설치할 수 있습니다.

ex) yum install -y docker

# 참조

a) 설치 된 rpm package 확인


[root@newnrson ~]# rpm -qa | grep docker
docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64
docker-distribution-2.6.2-2.git48294d9.el7.x86_64
docker-common-1.13.1-96.gitb2f74b2.el7.centos.x86_64
docker-client-1.13.1-96.gitb2f74b2.el7.centos.x86_64
[root@newnrson ~]# rpm -qs docker
정상(normal)        /etc/docker
정상(normal)        /etc/docker/certs.d
정상(normal)        /etc/docker/certs.d/redhat.com
정상(normal)        /etc/docker/certs.d/redhat.com/redhat-ca.crt
정상(normal)        /etc/docker/certs.d/redhat.io
정상(normal)        /etc/docker/certs.d/redhat.io/redhat-ca.crt
정상(normal)        /etc/docker/certs.d/registry.access.redhat.com
정상(normal)        /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt
정상(normal)        /etc/docker/daemon.json
정상(normal)        /etc/docker/seccomp.json
정상(normal)        /etc/sysconfig/docker-network
정상(normal)        /etc/sysconfig/docker-storage
정상(normal)        /etc/sysconfig/docker-storage-setup
정상(normal)        /usr/bin/docker-containerd-current

...

...


b) private docker-registry

이후 포스팅 할 docker private registry의 경우 docker-distribution이 docker-registry 대체하도록 변경되었습니다.

이에 Service로 등록해야 할 대상은 docker-registry가 아닌 docker-distribution임을 유의합니다.

이후 포스팅에서 자세히 다루도록 하겠습니다.

 

c) docker login을 위한 계정 생성

마찬가지로 docker private registry에 접속하기 위한 계정 생성 방법은 이후 포스팅에서 확인하도록 하겠습니다.

[root@newnrson ~]# htpasswd -c registry.password cnsUser
New password:
Re-type new password:
Adding password for user cnsUser
[root@newnrson ~]#

 

최근 needs가 늘어나고 있는 추세인 Private 구축 사례로 docker를 외부 저장소로부터 받아와 설치가 어려운 경우 유용하게 활용하시기 바랍니다.

그리드형
댓글
  • 프로필사진 짝누니 고민하던 부분을 적어주신 포스팅을 통해 크게 도움을 받을 수 있었습니다.
    혹시 private docker-registry와 관련한 포스팅은 언제즘 올리실 생각이신지 알고 싶습니다
    무척 고대하고 있습니다. ^^
    2019.06.28 10:40
  • 프로필사진 GodNR 도움이 되셨다니 다행이네요.
    플젝 중이라 당장 테스트는 어렵지만 조만간 포스팅할예정이 관심 갖어주셔요!
    2019.07.15 07:58 신고
  • 프로필사진 GodNR 도커 Private Registry 글이 업로드 되었습니다.
    도움이 되었으면합니다!
    2019.08.18 17:54 신고
댓글쓰기 폼