728x90

아키텍처

Cluster
    Control Plane
        Control Process
    Node
        Kubelet, Container(Pod)
  1. 클러스터는 하나 이상의 제어판 컴포넌트, 제어판 컴포넌트와 연결된 워커 노드들로 구성
  2. 워커 노드에는 Kubelet이라는 프로세스가 돌아감
  3. Kubelet은 다른 노드와 서로 통신하거나 컨테이너를 실행하는 등의 작업을 실행할 수 있게 함
  4. 워커 안에는 한 개 이상의 컨테이너가 존재 (실제 애플리케이션이 실행되는 곳)
  5. 이렇게 컨테이너 그룹과 컨테이너가 사용하는 볼륩, 작동 정보를 가진 Pod가 있음
  6. 제어판 컴포넌트에는 관리를 위해 필요한 모든 프로세스들이 존재함
    • 그 중에서도 API 서버는 모든 클러스터 관리의 입구로 명령을 내릴 수 있는 관문 역할
    • 컨트롤러 매니저는 클러스터의 상태를 추적하는 역할
    • 스케쥴러는 노드 리소스를 바탕으로 Pod가 노드에 배치되게 만드는 역할
    • ETCD 데이터베이스는 키-값 형태의 저장소로 클러스터 관리에 필요한 모든 데이터의 저장 공간

'Web' 카테고리의 다른 글

[Kubernetes] 컨테이너 오케스트레이션  (0) 2023.07.21
[Kubernetes] 기능  (0) 2023.07.20
[Docker] 빌드  (0) 2023.07.19
[Docker] 이미지  (0) 2023.07.19
[Docker] Docker Hub  (0) 2023.07.19
728x90

컨테이너 오케스트레이션

오케스트라처럼 수십 개의 악기가 지휘자에 의해 조율되어 아름다운 선율을 만드는 것처럼

컨테이너 오케스트레이션도 수십 ~ 수백 개의 컨테이너를 보다 더 잘 관리할 수 있게 도와준다.

 

사용하기 부적합한 하는 경우

  • 여러 단계로 나누어지지 않은 모놀리식 아키텍처 같은 경우
  • 적은 수의 컨테이너를 다루는 경우라면 docker-compose 만으로도 충분
  • 단순한 아키텍처 및 스케일링이 필요하지 않은 경우

 

사용하기 적합한 경우

  • 마이크로 서비스를 컨테이너 방식으로 운영하고 확장성을 고려하는 경우
  • 고가용성을 제공 해야하는 서비스인 경우
  • 그 밖에 쿠버네티스의 기능들(자가 치유, 배치 실행, 구성 관리 등)이 필요한 경우

 

'Web' 카테고리의 다른 글

[Kubernetes] 아키텍처  (0) 2023.07.21
[Kubernetes] 기능  (0) 2023.07.20
[Docker] 빌드  (0) 2023.07.19
[Docker] 이미지  (0) 2023.07.19
[Docker] Docker Hub  (0) 2023.07.19
728x90

쿠버네티스

  • 구글에서 개발한 컨테이너 오케스트레이션 도구
  • 대규모 분산 애플리케이션의 배포/관리/확장을 자동화해주는 오픈 소스 플랫폼
  • 컨테이너화된 애플리케이션을 효율적으로 실행하기 위해 사용

 

도커와 쿠버네티스

도커와 쿠버네티스는 보통 하나로 묶어서 표현하는데

도커가 애플리케이션을 컨테이너로 패키징하여 이식성과 확장성을 갖도록 한다면

쿠버네티스는 이런 컨테이너를 관리하여 효율적으로 운영할 수 있게 해 준다.

 

즉, 도커라는 것을 더욱 편리하고 효율적으로 사용하게 도와주는 플랫폼이다.

 

쿠버네티스의 주요 기능

  • 컨테이너 스케줄링
    • 클러스터 내에서 컨테이너 분배 및 스케줄링하여 자원을 효율적으로 관리
    • 노드 간의 부하 분산, 자동 복구 및 확장
  • 롤링 업데이트 자동화
    • 애플리케이션의 업데이트 및 패치를 자동으로 배포하고 관리
    • 서비스의 가용성을 유지하며 사용자에게 업데이트 제공 가능
  • 스케일 인/아웃
    • 애플리케이션의 수평 스케일링 지원
    • 자동으로 애플리케이션 인스턴스 개수 조정 가능
    • 부하에 따라 자원을 동적으로 조정
  • 서비스 디스커버리 / 로드 밸런싱
    • 애플리케이션 인스턴스를 위한 네트워크 서비스 디스커버리와 로드 밸런싱 제공
    • 내부와 외부의 트래픽을 적절히 분배하여 안정적인 서비스 제공
  • 자가 치유 / 자동 복구
    • 애플리케이션 및 노드의 상태를 지속적으로 모니터링함
    • 장애 발생 시 자동으로 장애 탐지 및 복구

 

개념 및 용어

  • Node
    • 클러스터를 구성하는 개별 서버나 가상 머신을 나타내는 리소스
    • 컨테이너를 실행하고 관리할 때 사용
    • CPU, 메모리, 스토리지 등의 자원을 가짐
    • Pod가 이 노드 상에서 실행
  • Pod
    • 가장 작은 배포 단위
    • 하나 이상의 컨테이너 포함
    • 관련 컨테이너를 함께 실행하고 네트워크와 스토리지 리소스 공유
  • ReplicaSet
    • Pod의 복제본 집합
    • Pod의 원하는 개수를 지정
    • Pod의 가용성 보장
    • 스케일링과 롤링 업데이트 관리
    • 지정된 개수의 Pod를 항상 실행되게 한 후에 실패나 삭제된 경우 자동으로 복구
  • Deployment
    • 애플리케이션 버전 관리 및 롤링 업데이트 지원
    • Pod를 관리하고 수를 자동으로 조정
    • 애플리케이션의 가용성과 확장성 유지
  • Service
    • 여러 Pod에 대한 로드 밸런싱, 서비스 디스커버리 및 네트워크 연결 제공
    • 애플리케이션에 대한 단일 진입점을 만들어 외부에서 접근 가능하게 함
  • Ingress
    • 외부에서 내부로 HTTP 및 HTTPS 트래픽 관리
    • 로드 밸런싱, 경로 기반 라우팅, SSL 인증서 관리 등 제공
    • 애플리케이션에 대한 인바운드 트래픽 제어
  • ConfigMap
    • 설정 데이터를 저장하여 Pod에서 사용할 수 있도록 제공
    • 환경 변수, 설정 파일 등을 저장
    • 애플리케이션의 동적인 구성 변경 지원
  • Job
    • 일회성 작업을 실행하는 리소스
    • 특정 작업이 성공적으로 완료될 때까지 Pod를 실행하고 관리
    • 배치 작업, 데이터 처리, 크론 작업처럼 한 번 실행되고 종료되는 작업에 적합
    • 작업이 실패해도 재시작하여 안정성 제공
  • Namespace
    • 클러스터 내에서 리소스를 그룹화하고 격리하는 논리적인 공간
    • 리소스의 이름 충돌 방지
    • 다른 팀이나 애플리케이션 간의 리소스를 분리하여 관리 가능
    • 클러스터 관리를 단순화하고 보안 및 리소스 관리를 용이하게 함

'Web' 카테고리의 다른 글

[Kubernetes] 아키텍처  (0) 2023.07.21
[Kubernetes] 컨테이너 오케스트레이션  (0) 2023.07.21
[Docker] 빌드  (0) 2023.07.19
[Docker] 이미지  (0) 2023.07.19
[Docker] Docker Hub  (0) 2023.07.19
728x90

Build

기존에 다른 사용자의 저장소에서 이미지를 다운로드하여 쓰는 방법을 사용할 수도 있지만

본인이 직접 이미지를 생성하여 저장소에 올릴 수도 있다.

 

이를 위해서는 도커의 설치와 이미지 소스, 허브의 저장소가 필요하다.

(빌드만 할 거라면 저장소는 필요 없다.)

 

Dockerfile 작성

이미지 생성에 사용할 간단한 스프링 부트 프로젝트를 만든 후에

빌드 작업을 수행하여 jar 파일을 추출하거나

기존에 만들어둔 jar 파일 등을 이용한다.

 

FROM openjdk:11
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

프로젝트의 최상위 디렉터리에 Dockerfile이라는 이름의 파일을 생성한 후에

위의 스크립트를 작성해 준다.

(반드시 최상위 디렉터리일 필요는 없다. jar 파일의 경로만 잘 지정해주면 된다.)

 

여러 가지 명령들을 사용할 수 있지만 간단한 빌드는 위 옵션만으로도 충분하다.

FROM 베이스이미지

우선 FROM을 통해 컨테이너의 베이스 이미지를 지정하여 실행환경을 설정할 수 있다.

ARG 변수명=값
// ${변수명} 형태로 사용가능

ARG를 통해 변수를 선언하여 빌드에 사용할 jar파일의 경로를 저장해 준다.

값을 필요한 곳에 적어줄 것이라면 생략할 수도 있다.

COPY [복사할 파일 명] [복사될 파일 명]
COPY build/libs/*.jar app.jar

로컬 저장소의 파일명과 컨테이너에 복사될 파일명을 지정하여 복사해 준다.

ENTRYPOINT [컨테이너 시작 시 실행할 명령]

컨테이너 시작(run | start) 시에 자동으로 실행할 명령을 지정해 준다.

 

위와 같이 Dockerfile을 작성 후 빌드를 하면 된다.

 

주로 아래와 같은 명령들을 많이 사용한다.

  • FROM <base_image>
    • 빌드할 이미지의 기반이 되는 도커 이미지를 선택
  • LABEL <key>=<value>
    • 이미지에 메타데이터를 추가 (빌드 버전, 제작자, 설명 등)
  • RUN <command>
    • 컨테이너 내에서 실행할 명령어를 지정
    • 패키지 설치, 의존성 관리, 빌드 등에 사용
  • COPY <source> <destination>
    • 로컬 파일 시스템에서 파일 또는 디렉터리를 이미지에 복사
  • ADD <source> <destination>
    • COPY와 유사
    • 원격 파일 다운로드, 압축 파일 해제 등에 사용
  • WORKDIR <directory>
    • 작업 디렉터리를 지정
    • 이후에 사용하는 명령어는 해당 디렉터리에서 실행
  • ENV <key>=<value>
    • 환경 변수를 설정
    • 이 변수들은 이미지 내에서 사용가능
  • EXPOSE <port>
    • 컨테이너가 외부에 노출할 포트를 지정
    • 컨테이너 외부에서 해당 포트로 액세스 가능
  • CMD <command>
    • 컨테이너가 시작 시 실행될 기본 명령어를 지정
    • 하나의 CMD만 사용가능
    • Dockerfile에 여러 번 나타날 경우 마지막 명령어가 실행

 

빌드

$ docker build -t 사용자명/허브저장소명:태그 .
$ docker build -t da9dac/da9dac-test:0.1 .

위의 명령어를 사용하면 Dockerfile을 사용해 이미지를 생성할 수 있다.

(태그는 필수는 아니다.)

$ docker tag [바꾸고자 하는 기존 이미지명] [어떻게 바꿀지 새로운 이미지명 및 태그 입력]
$ docker tag da9dac/da9dac-test:0.1 da9dac/da9dac-new:0.2

기존 이미지명과 태그를 tag 명령어를 사용하여 바꿀 수도 있다.

 

'Web' 카테고리의 다른 글

[Kubernetes] 컨테이너 오케스트레이션  (0) 2023.07.21
[Kubernetes] 기능  (0) 2023.07.20
[Docker] 이미지  (0) 2023.07.19
[Docker] Docker Hub  (0) 2023.07.19
[Docker] 도커와 컨테이너  (0) 2023.07.19
728x90

Docker Image

도커 컨테이너 생성에 사용되는 템플릿으로

애플리케이션 실행에 필요한 환경과 라이브러리, 소스 코드 등을 포함한다.

 

이러한 도커 이미지는 불변하기 때문에 한 번 생성되면 수정할 수 없다.

 

$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
mysql        5.7       2be84dd575ee   4 weeks ago     569MB
openjdk      11        47a932d998b7   11 months ago   654MB

위 명령어를 사용하여 현재 시스템에 다운로드된 이미지 목록 확인이 가능하다.

 

도커 이미지 다운로드

깃의 사용법과 마찬가지로 도커에서도 pull을 사용하여

허브에서 이미지를 가져올 수 있다.

 

 

위의 사진과 같이 허브 사이트에서 검색을 통해

공개된 저장소의 이미지들을 사용할 수도 있다.

$ docker pull openjdk
$ docker pull openjdk:11

docker pull 명령어를 통해 이미지를 가져올 수 있고

버전을 지정하지 않으면 최신 버전의 이미지를 가져온다.

 

아래와 같은 옵션들을 사용할 수 있다.

  • -a, --all: 모든 이미지 목록을 출력
    • 기본적으로 dangling 이미지를 제외한 이미지만 출력
    • dangling 이미지를 포함하여 출력하고 싶으면 -a 옵션을 사용
  • --digests: 이미지의 digest 정보를 출력
  • --no-trunc: 모든 컬럼 정보를 출력
  • -q, --quiet: 이미지 ID 정보만 출력
  • --filter: 출력할 이미지를 필터링
  • --format: 출력할 정보의 형식을 지정

 

도커 이미지 삭제

$ docker rmi [삭제할 이미지명 또는 ID]

기존에 컨테이너를 삭제할 때는 rm을 사용했다면 image의 i를 추가한 rmi를 사용한다.

 

아래와 같은 옵션을 사용 가능하다.

  • -f, --force: 이미지를 강제로 삭제
  • --no-prune: 해당 이미지를 참조하는 다른 이미지나 컨테이너를 삭제하지 않는다.
  • -q, --quiet: 삭제한 이미지 ID만 출력

'Web' 카테고리의 다른 글

[Kubernetes] 기능  (0) 2023.07.20
[Docker] 빌드  (0) 2023.07.19
[Docker] Docker Hub  (0) 2023.07.19
[Docker] 도커와 컨테이너  (0) 2023.07.19
Asciidoc 기본 문법  (0) 2023.07.03
728x90

Docker Hub

컨테이너 생성에 사용되는 도커 이미지를 저장/관리/공유 할 수 있는 저장소로

깃허브의 도커 버전이라고 생각하면 쉽다.

 

저장소의 종류

Docker Hub

도커에서 제공하는 공식 저장소로 무료로 제공된다.

 

개인적, 공개적으로 모두 사용 가능하며

이미지를 검색하고 다운로드 가능한 검색 엔진도 제공된다.

 

Private Registry

비공개 저장소

회사나 조직 내에서 이미지 공유 용도로 구축

보안성이 높다

 

Public Registry

공개 저장소

누구나 이미지 등록 및 공유가 가능하고

검색과 다운로드도 가능하다.

 

도커 이미지 등록

https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

Deliver your business through Docker Hub Package and publish apps and plugins as containers in Docker Hub for easy download and deployment by millions of Docker users worldwide.

hub.docker.com

우선 위의 사이트에 접속해 계정을 생성한 후 이메일 인증까지 완료해준다.

 

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: 
Password:
Login Succeeded

docker login 명령어를 입력하면 위와 같이

회원가입 시 작성한 유저네임과 패스워드를 입력하여 로그인하면 된다.

 

공개 저장소 생성

허브 사이트에 로그인 한 후에 Repository 메뉴를 클릭 후 Create를 눌러 위의 페이지로 이동한다.

 

생성할 저장소의 이름을 지정해준 후에 공개 여부를 선택하고 생성하면 끝이다.

(이 때 이미 존재하는 저장소의 이름은 사용할 수 없다)

 

$ docker push {도커 유저네임}/{이미지 명}:{태그}

해당 명령어를 사용하여 저장소에 이미지를 push 할 수 있다.

깃 사용법과 유사하다.

'Web' 카테고리의 다른 글

[Kubernetes] 기능  (0) 2023.07.20
[Docker] 빌드  (0) 2023.07.19
[Docker] 이미지  (0) 2023.07.19
[Docker] 도커와 컨테이너  (0) 2023.07.19
Asciidoc 기본 문법  (0) 2023.07.03
728x90

Docker

소프트웨어의 실행 및 배포를 편리하게 도와주는 컨테이너 기술로

애플리케이션을 쉽게 컨테이너화 하고 Docker Hub를 이용해 저장할 수 있는 기능을 제공한다.

 

컨테이너 방식의 최대 장점은 환경의 영향을 받지 않고 독립적이라는 점인데

도커가 어떻게 이런 기능들을 제공하는지 살펴보겠다.

 

도커의 컨테이너

도커는 호스트 OS 위에 가벼운 컨테이너를 만들어서 실행되는데

이러한 컨테이너는 호스트 OS나 다른 컨테이너들과 격리되어 있고

필요에 따라 자원을 할당 받는다. (cgroups와 namespace)

 

즉, 컨테이너는 도커 이미지를 바탕으로 생성된 가볍고 독립적인 실행 단위로

각각이 하나의 가볍고 빠른 가상머신이라고 볼 수 있다.

 

컨테이너 생성

$ docker run -it --name 컨테이너명 -p 8080:8080 이미지

도커의 컨테이너 생성은 위와 같이 CLI 환경에서 명령어를 입력하면 가능하다.

 

docker run을 통해 컨테이너를 생성하거나 실행할 수 있으며

-it 옵션은 컨테이너를 대화형 모드로 실행할 때 사용한다.

 

--name 옵션을 사용하여 컨테이너의 이름을 직접 지정할 수도 있지만

옵션을 사용하지 않으면 랜덤으로 지정된다.

 

-p 옵션은 지정한 호스트의 포트와 지정한 컨테이너의 포트를 매핑할 때 사용한다.

 

마지막으로 컨테이너를 생성할 때 사용할 이미지를 지정해주면 된다.

 

생성 시에 사용할 수 있는 옵션

-d // 컨테이너를 백그라운드에서 실행
-i // 표준 입력(stdin)을 연결
-t // TTY(터미널)을 연결
-p <호스트 포트>:<컨테이너 포트> // 호스트 포트와 컨테이너 포트를 연결
-P // 호스트와 컨테이너의 포트를 랜덤으로 연결
--name <컨테이너명> // 컨테이너의 이름을 설정
--rm // 컨테이너가 종료될 때 자동으로 삭제
-v <호스트 경로>:<컨테이너 경로> // 호스트와 컨테이너의 디렉터리를 연결
-e <환경변수> // 컨테이너 내부의 환경변수를 설정
--link <다른컨테이너명>:<별명> // 다른 컨테이너와 연결
--network <네트워크명> // 컨테이너가 속한 네트워크를 설정
--expose <포트> // 컨테이너의 포트를 노출
--entrypoint <명령어> // 컨테이너가 시작될 때 실행될 명령어를 설정
--user <사용자> // 컨테이너 내부에서 실행될 사용자를 설정
--restart <정책> // 컨테이너 재시작 정책을 설정

컨테이너는 Ctrl + D를 사용하여 종료할 수 있다.

 

컨테이너 시작

$ docker start [실행할 컨테이너명이나 ID]
// 컨테이너명이 출력되면 성공적으로 실행된 것

$ docker start -ai [실행할 컨테이너명이나 ID]
|  Welcome to JShell -- Version 11.0.16
|  For an introduction type: /help intro

jshell>

docker start 명령어를 사용하여 컨테이너를 실행만 할 수도 있고

옵션을 추가하여 실행하면 위의 코드처럼 터미널에 연결하여 대화형으로도 사용가능하다.

 

아래와 같은 옵션들을 사용할 수 있다.

  • -a, --attach : 컨테이너와 터미널을 연결하여 컨테이너의 출력 확인
  • -i, --interactive : 컨테이너와 상호작용을 위해 표준 입력(stdin)을 연결
  • -p, --publish : 호스트와 컨테이너 포트를 연결
  • -d, --detach : 컨테이너를 백그라운드에서 실행
  • -e, --env : 컨테이너 내부의 환경변수를 설정
  • -u, --user : 컨테이너 내부에서 실행될 사용자를 설정
  • -a, --attach : 컨테이너 출력을 표시

 

컨테이너 중지

$ docker stop [중지할 컨테이너명이나 ID]

중지는 반대로 start 대신 stop을 사용하기만 하면 된다.

(위에서 언급했던 것처럼 대화형 환경 같은 경우 Ctrl + D를 사용하여 종료할 수도 있다.)

 

t, -time 옵션을 사용하여 컨테이너의 종료 전 대기 시간을 지정할 수도 있다.(기본값 10초)

-time-format 옵션을 사용하면 대기 시간의 형식을 지정할 수도 있다. (기본값 s, 초 단위)

 

컨테이너 목록 확인

$ docker ps
CONTAINER ID   IMAGE        COMMAND    CREATED          STATUS         PORTS                    NAMES
f19e4b0c3fe8   openjdk:11   "jshell"   25 minutes ago   Up 2 seconds   0.0.0.0:8080->8080/tcp   mycontainer

ps 명령어를 사용하여 현재 실행 중인 컨테이너들의 목록을 확인할 수 있다.

(실행 중이 아닌 컨테이너의 목록까지 확인하고 싶은 경우 -a나 -all 옵션을 추가하면 된다.)

yejun@DESKTOP-HUJUVSS:~$ docker ps -af "name=mycontainer"
CONTAINER ID   IMAGE        COMMAND    CREATED          STATUS                        PORTS     NAMES
f19e4b0c3fe8   openjdk:11   "jshell"   28 minutes ago   Exited (143) 56 seconds ago             mycontainer

-f, --filter 옵션을 사용하면 리스트를 필터링하여 조회할 수도 있으며,

당연히 실행 중이 아닌 컨테이너까지 조회하려면 -a 옵션과 함께 사용해야 한다.

 

아래와 같은 옵션들을 제공한다.

  • name: 컨테이너 이름으로 필터링
  • label: 커맨드에서 붙인 라벨로 필터링
  • exited: 종료된 컨테이너의 종료 코드로 필터링
  • status: 컨테이너의 상태로 필터링
  • ancestor: 이미지를 공유받은 컨테이너로 필터링
  • before: 설정 컨테이너를 기준으로 전에 만들어진 컨테이너 확인
  • since: 설정 컨테이너를 기준으로 이후에 만들어진 컨테이너 확인
  • -n, --last: 최근 생성한 n개의 컨테이너만 출력
  • --format: 출력 형식 지정
  • --no-trunc: 모든 정보 출력
  • --quiet, -q: 컨테이너 ID만 출력

 

컨테이너 삭제

$ docker rm [삭제할 컨테이너명 또는 ID]

아래와 같은 옵션들을 제공한다.

  • -f, --force: 실행 중인 컨테이너를 강제로 삭제
  • -l, --link=false: 해당 컨테이너를 참조하는 링크를 제거
  • -v, --volumes=false: 컨테이너와 관련된 볼륨을 제거

'Web' 카테고리의 다른 글

[Kubernetes] 기능  (0) 2023.07.20
[Docker] 빌드  (0) 2023.07.19
[Docker] 이미지  (0) 2023.07.19
[Docker] Docker Hub  (0) 2023.07.19
Asciidoc 기본 문법  (0) 2023.07.03
728x90
=
==
===
====

문서의 제목을 작성할 때 사용

개수가 늘어날수록 글자의 크기가 작아짐

:sectnums:

목차에서 각 섹션에 넘버링을 할 때 사용

:toc: left|center|right

목차를 문서의 어느 위치에 추가할 것인지 설정

:toclevels: 1 ~ 4

목차에 표시할 제목의 레벨을 설정한다.

만약 4로 지정했다면 ==== 까지의 제목만 목차에 표시된다.

:toc-title: 목차의 제목

목차의 제목을 설정한다.

source-highlighter: prettify

문서의 소스 코드 하이라이터를 지정

***
박스 문단의 제목
	박스 문단의 내용
***

***을 사용해 단락을 구분 지을 수 있는 수평선을 추가할 수 있다.

문단의 제목의 한줄 아래에 들여 쓰기 한 후에 문단의 내용을 작성할 수 있다.

CAUTION: 
NOTE:
TIP:
IMPORTANT:
WARNING:

단어의 뜻대로 각각 경고, 메모, 팁, 강조, 위험 문구를 추가할 수 있다.

http
https
ftp
irc
mailto

위와 같은 URL Schema는 Asciidoc에서 자동으로 인식하여 링크를 설정한다.

image::이미지 경로

이미지를 추가할 수도 있다.

.섹션 제목

하나의 섹션의 제목을 지정할 때 사용한다.

include::

스니펫을 템플릿 문서에 포함할 때 사용

'Web' 카테고리의 다른 글

[Kubernetes] 기능  (0) 2023.07.20
[Docker] 빌드  (0) 2023.07.19
[Docker] 이미지  (0) 2023.07.19
[Docker] Docker Hub  (0) 2023.07.19
[Docker] 도커와 컨테이너  (0) 2023.07.19

+ Recent posts