[NCloud] NCP Demo.3 정리 [Docker 설치 / Container Registry docker Login / Container Registry Push]
Nowhere 와 Now here 의 차이

IT/Cloud

[NCloud] NCP Demo.3 정리 [Docker 설치 / Container Registry docker Login / Container Registry Push]

TIENE 2023. 8. 23. 15:44
반응형

0. Test 진행을 위한 파일 다운로드 및 압축 해제

wget https://kr.object.ncloudstorage.com/k8s-edu/lab_source.tar
tar xfv lab_source.tar 

 

1. Kubernetes 설치를 위한 저장소 구성

 cat <<EOF > /etc/yum.repos.d/kubernetes.repo
> [kubernetes]
> name=Kubernetes
> baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
> enabled=1
> gpgcheck=1
> repo_gpgcheck=1
> gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-ke
y.gpg
> EOF
cat << EOF > /etc/yum.repos.d/kubernetes.repo>
- 'cat' 명령과 입력 리디렉션('<EOF')을 사용하여 '/etc/yum.repos.d/' 디렉터리에 'kubernetes.repo'라는 이름의 파일을 만든다. 이 파일에는 kubernetes 패키지에 대한 저장소 구성이 포함된다.

[kubernetes]
- Kubernetes 저장소 구성에 대한 섹션의 시작을 정의

name=Kubernetes
- 저장소의 표시 이름을 "Kubernetes"로 설정

baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 
- YUM이 패키지를 가져올 저장소의 기본 URL을 지정

enabled=1
- 저장소를 활성화하여, YUM이 이를 사용하여 패키지를 설치할 수 있도록 설정

gpgcheck=1
- 패키지에 대한 GPG 서명 검증을 가능하게 하여 패키지의 신뢰성과 무결성을 보장한다.

repo_gpgcheck=1
- 저장소 메타데이터에 대한 GPG 서명 확인을 활성화

gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg 
- 저장소 및 해당 패키지에 서명하는 데 사용되는 GPG 키의 URL을 제공한다.
- 이는 패키지가 신뢰할 수 있는 소스에서 전송되는지 확인하는 데 중요하다.

EOF
- cat 명령어의 입력이 끝났음을 알리는 것으로, "cat<EOF"와 "EOF" 사이의 내용은 "kubernetes.repo" 파일에 기록되었다.


2. 기타 패키지 설치 및 도커 설치

yum -y install kubectl
yum -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum -y install yum -s device-mapper-persistent-data lvm2
- 이 명령은 시스템에 패키지 세트를 설치한다.
= yum-utils - yum의 기능을 강화하는 유틸리티 모음.
= device-mapper-persistent-data - LVM(논리 볼륨 관리)에서 영구 장치 매핑에 필요한 패키지
= lvm2 - 리눅스 시스템의 논리 볼륨을 관리하기 위한 패키지

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 이 명령은 시스템의 yum 구성에 CE(Docker Community Edition)의 새 리포지토리 구성을 추가한다.
= yum-config-manager - Repository 구성 관리
= --add-repo -  새  Repository 추가 
 https://download.docker.com/linux/centos/docker-ce.repo URL은 CentOS의 Docker CE용 저장소 구성 파일

 

 

- 모든 설치를 마무리하고, docker를 설치하려고 하는데, host를 찾을 수 없다는 Error가 발생했다. 온갖 사이트를 뒤져보다가 아래의 redhat 페이지에서 해결책을 찾았다.

 

 

- 간단하게 docker 관련 패키지를 다 지우고 다시 설치하는 것이었는데, 정상적으로 설치가 되었다...

https://access.redhat.com/discussions/5336741

 

yum Docker install error Errno 256 Errno 14 HTTPS Error 404 - Not Found - Red Hat Customer Portal

Access Red Hat’s knowledge, guidance, and support through your subscription.

access.redhat.com

sudo yum remove docker docker-common docker-selinux docker-engine-selinux docker-engine docker-ce
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce


3. Docker 이미지 생성 및 실행

docker build -t image_apache .
현재 디렉토리에서 Docker 파일을 사용하여 Docker 이미지를 작성하고 "image_apache"라는 이름으로 태그를 지정

docker build
Docker 이미지를 빌드하기 위한 명령어

-t image_apache
- -t 옵션은 이미지의 태그를 지정하는 데 사용된다.
- 이 경우 이미지에 "image_apache"라는 이름으로 태그를 붙이는 것이며, 태그는 동일한 이미지의 다른 버전이나 변형을 식별하는 데 사용된다.

.
- 빌드 컨텍스트를 지정한다. 빌드 컨텍스트는 도커 파일과 이미지를 만드는 데 필요한 다른 파일이 포함된 디렉토리다. 이 경우에는 현재 디렉토리다.

이 명령을 실행하고 있는 것과 같은 디렉터리에 Docker 파일이 있다고 가정하면 Docker는 Docker 파일에서 명령을 읽고 해당 명령을 기반으로 Docker 이미지를 만들고, 결과 이미지는 "image_apache"로 태그가 지정된다. 

 

docker images

- 생성한 docker images 확인

 

 

docker run -tid -p 4000:80 --name=hello_apache image_apache
제공한 명령은 이전에 구축한 "image_apache" 이미지를 기반으로 도커 컨테이너를 실행하는 데 사용됩니다. 다음은 명령의 각 부분에서 수행하는 작업입니다:

docker run
- 이미지에서 Docker 컨테이너를 실행하기 위한 명령어

-tid
 = '-t': 필요에 따라 컨테이너의 명령줄과 상호 작용할 수 있는 a pseudo-TTY 를 할당한다.
 = '-i': STDIN(표준 입력)을 연결하지 않더라도 열어 두는데, 이는 '-t'와 함께 사용되어 컨테이너를 상호작용적으로 유지한다.

-p 4000:80
이 플래그는 호스트의 포트를 컨테이너의 포트로 매핑하는 데 사용된다.
= -p hostPort:containerPort
= Host의 포트를 컨테이너의 포트에 매핑하는데, 이 경우는 Host의 Port 4000을 컨테이너의 Port 80에 매핑한다.
= 즉, 브라우저에서 'http://localhost:4000'에 액세스하여 컨테이너에서 실행 중인 웹 서버에 액세스할 수 있다.

--name=hello_apache
- 이 플래그는 컨테이너의 이름을 지정하며, 이 경우 컨테이너의 이름은 "hello_apache"가 된다.

image_apache
- 컨테이너를 실행할 Docker 이미지의 이름

이 명령어는 "image_apache" 이미지를 기반으로 Docker 컨테이너를 실행하여 Host 시스템의 Port 4000에서 사용할 수 있도록 한다.
컨테이너는 '-d' 플래그로 인해 백그라운드에서 실행되며, 웹 브라우저에서 'http://localhost:4000'으로 이동하여 컨테이너 내의 Apache 웹 서버에 액세스할 수 있다.
컨테이너의 이름은 "hello_apache"가 된다.

 

* Container Registry에 Login하지 않으면, 아래와 같이 권한이 없다고 나온다. 

 

- NCloud 마이페이지에서 인증키 관리로 이동하여, Access Key ID와 Secret Key를 각각 입력해주면 Login 된다.

 

 

- 위의 image_apache를 실행하고, 공인 IP:4000 으로 접속한 결과, 정상적으로 접속되었다!

4. Docker 이미지 배포

docker image tag image_apache njmk14xh.kr.private-ncr.ntruss.com/image_apache:1.0
도커 이미지의 새 태그를 만드는 데 사용된다.

docker image tag
- Docker image에 태그를 붙이는 명령어

image_apache
- 태그를 지정할 원본 이미지의 이름

njmk14xh.kr.private-ncr.ntruss.com/image_apache:1.0
- 이 태그는 이미지에 대해 생성하는 대상 태그이며, 'target/resistory:tag' 형식이다. 여기서 다음과 같습니다:
   - 'njmk14xh.kr.private-ncr.ntruss.com '은 태그가 지정된 이미지를 저장할 Docker 레지스트리다.
   - 'image_module'은 레지스트리에 있는 리포지토리의 이름이다.
   - '1.0'은 이미지에 할당하는 태그다.

기본적으로 "image_apache" 이미지에 대한 새 태그를 만드는 것이며, 새 태그는 "1.0"이고 'njmk14xh.kr.private-ncr.ntruss.com '의 Docker 레지스트리에 있는 저장소 "image_tagnostics"와 연결한다.

 

docker push njmk14xh.kr.private-ncr.ntruss.com/image_apache:1.0
docker push는 도커 이미지를 도커 레지스트리에 푸시하는 데 사용되며 배포 및 배포에 사용할 수 있다.

docker push
- Docker 이미지를 registry에 푸시하기 위한 명령어

njmk14xh.kr.private-ncr.ntruss.com/image_apache:1.0
- 푸시할 레지스트리, 리포지토리, 태그를 포함한 Docker 이미지의 전체 이름

Docker가 "1.0" 태그와 함께 지정된 이미지를 'njmk14xh.kr.private-ncr.ntruss.com '에 있는 레지스트리에 업로드한다. 

Push가 성공하면 레지스트리에서 지정된 태그가 있는 이미지를 사용할 수 있다.
다른 사용자는 배포, 테스트 또는 기타 개발 작업과 같은 다양한 목적으로 레지스트리에서 이 이미지를 끌어와 사용할 수 있다.

 

 

- docker의 이미지를 Container registry에 정상적으로 저장하였다.


출처 : www.edwith.org/professioanl-vpc

반응형