로컬 Docker Harbor로 컨테이너를 Push하는 방법은?

Docker Harbor 로컬 컨테이너 저장소 Push 하기

Docker Harbor 로컬 컨테이너 저장소에 이미지를 Push하는 방법과 Kubernetes에서 Pull하는 과정을 상세히 설명합니다.

안녕하세요! 오늘은 Docker Harbor 로컬 컨테이너 저장소에 이미지를 Push하는 방법에 대해 심도 있게 다루어보려고 합니다. Harbor는 컨테이너 이미지 저장소로, 이미지 관리 및 보안 기능을 강화할 수 있는 오픈 소스 프로젝트입니다. 본 글에서는 Docker 이미지를 빌드하고, 이를 Harbor에 Push한 후 Kubernetes에서 Pull하는 과정까지 전반적으로 설명하겠습니다. 이 과정을 통해 여러분은 Docker Harbor를 통해 로컬 환경에서 좀 더 안전하고 체계적으로 컨테이너 이미지를 관리할 수 있게 될 것입니다.


Harbor 설치 및 프로젝트 생성

Docker Harbor를 설치하는 것은 매우 간단합니다. 먼저, Harbor의 공식 GitHub 저장소에서 최신 버전을 다운로드하여 설치해줍니다. 다음 단계로, Harbor를 실행하는 것입니다. 보통은 docker-compose를 이용해 간단히 실행할 수 있습니다. 아래는 Docker Compose 파일의 예시입니다:

yaml
version: 2.1
services:
harbor:
image: goharbor/harbor-core:v2.3.3
ports:
80:80
443:443

Harbor가 성공적으로 실행되면, 웹 브라우저에서 http://localhost로 접속하여 초기 설정을 진행합니다. 기본 관리자 계정(admin/Harbor12345)으로 로그인하여 신규 프로젝트를 생성합니다. 프로젝트 생성 후, 프로젝트 설정에서 원하시는 이름을 입력하면 됩니다. 프로젝트가 생성되면, 이제 도커 이미지를 Push할 준비가 완료됩니다.

항목 내용
URL http://localhost
사용자명 admin
초기 비밀번호 Harbor12345

이제 도커 이미지를 빌드하기 위해 필요한 설정을 해보겠습니다. 먼저, 도커 환경에서 사용할 Dockerfile을 준비하고, 필요한 종속성을 정의합니다. 이런 과정을 통해 CI/CD 파이프라인을 구현하는 데 큰 도움이 됩니다.

💡 DMZ 설정을 통해 보안장비를 효과적으로 관리하는 방법을 알아보세요. 💡


도커 이미지 빌드 및 Push

이미지 빌드를 위해 Dockerfile을 먼저 작성해야 합니다. 예를 들어, 아래의 Dockerfile은 nginx 웹서버의 이미지를 커스터마이징할 수 있는 예시입니다.

Dockerfile
FROM nginx:latest
COPY./my_ /usr/share/nginx/

이제, 해당 파일이 위치한 경로에서 아래의 명령어를 통해 이미지를 빌드합니다.

docker build -t 172.17.0.1:443/library/my-nginx.

빌드가 완료되면, docker images 명령어를 사용하여 이미지가 정상적으로 생성되었는지 확인합니다.

REPOSITORY TAG IMAGE ID CREATED SIZE
172.17.0.1:443/library/my-nginx latest abcd12345678 11 seconds ago 150MB

이제 이미지를 저장소에 Push해 보겠습니다. 이 과정에서 필요할 경우 해당 저장소에 로그인해야 할 수 있습니다.

docker push 172.17.0.1:443/library/my-nginx

Push 완료 후, Harbor 웹 인터페이스에 접속하여 해당 이미지가 정상적으로 등록되었는지 확인할 수 있습니다. 이제 여러분은 Docker Harbor 로컬 컨테이너 저장소에 이미지를 Push하는 과정을 이해하게 되었습니다.

💡 네이버 방역패스를 발급받는 간편한 방법을 알아보세요. 💡


Kubernetes에서 Harbor 저장소 이용하기

Kubernetes에서 Docker Harbor에 올라간 이미지를 활용하기 위해서는 몇 가지 추가 설정이 필요합니다. 먼저, Harbor를 통해 인증할 수 있는 secret을 생성해야 합니다. 아래의 명령어로 secret을 생성합니다:

kubectl create secret docker-registry harbor –docker-server=172.17.0.1:443 –docker-username=admin –docker-password=Harbor12345 -n default

생성된 secret을 확인하기 위해 kubectl get secret 명령어를 사용합니다.

NAME TYPE DATA AGE
harbor kubernetes.io/dockerconfigjson 1 5m

이제 Kubernetes 매니페스트 파일을 수정하여 imagePullSecrets 항목을 추가합니다. 아래는 Deployment 예시입니다:

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
replicas: 3
selector:
matchLabels:
app: my-nginx
template:
metadata:
labels:
app: my-nginx
spec:
imagePullSecrets:
– name: harbor
containers:
– name: my-nginx
image: 172.17.0.1:443/library/my-nginx
ports:
– containerPort: 80

이 YAML 파일을 적용하여 Deployment를 생성합니다.

kubectl apply -f my-nginx-deployment.yaml

Pod의 상태를 확인하기 위해 kubectl get pods 명령어를 사용합니다. 이 단계에서 Pod가 정상적으로 생성되지 않으면 에러 메시지를 확인하고 원인을 분석해야 합니다.

💡 방역패스를 손쉽게 발급받는 방법을 알아보세요. 💡


에러 분석 및 해결

Pod가 생성되지 않는 경우 가장 흔히 발생하는 문제는 인증과 관련된 오류입니다. ImagePullBackOff 또는 ErrImagePull 같은 에러가 발생할 수 있습니다. 이는 주로 인증서 문제로 인해 발생하며, 이를 해결하기 위해서는 먼저 Docker의 ca-certificates를 업데이트해야 합니다.

먼저, Harbor 서버가 사용하는 인증서를 Docker 노드에 복사한 후, 아래의 명령어로 인증서를 업데이트합니다:

docker cp./my-harbor-cert.crt :/usr/local/share/ca-certificates/
docker exec -it update-ca-certificates

위 과정을 마치고 다시 Deployment를 실행하면, 정상적으로 이미지를 Pull하고 Pod가 생성되는 것을 확인할 수 있습니다.

💡 DMZ 설정으로 보안을 강화하는 방법을 알아보세요. 💡


결론

💡 제휴 없는 웹하드의 안전성과 성능을 비교해 보세요. 💡

이번 글에서는 Docker Harbor 로컬 컨테이너 저장소에 이미지를 Push하고 Kubernetes에서 이를 Pull하는 과정을 자세히 다루어 보았습니다. Harbor로 이미지 관리 및 보안 기능을 강화하고, Kubernetes와의 통합을 통해 효율성을 높이는 방법을 이해할 수 있었습니다. 이러한 경험을 바탕으로 Docker와 Kubernetes 환경에서 더욱 나은 컨테이너 관리 및 배포 경험을 하시기 바랍니다. 더불어, 여러분이 실제로 실습해 보는 것을 권장하며, 문제에 직면했을 때는 항상 커뮤니티와 문서에서 답을 찾아보세요!

로컬 Docker Harbor로 컨테이너를 Push하는 방법은?

로컬 Docker Harbor로 컨테이너를 Push하는 방법은?

로컬 Docker Harbor로 컨테이너를 Push하는 방법은?