SQL Server in Docker & Kubernetes

2026. 1. 22. 14:40·Microsoft Azure

이번 포스팅에서는 SQL Server를 Docker와 Kubernetes 환경에서 효율적으로 배포하고 관리하는 방법을 알아보겠습니다.

 

클라우드 네이티브(Cloud Native) 환경으로의 전환이 가속화되면서, 데이터베이스 역시 컨테이너 기술의 이점을 활용하여 효율적으로 배포하고 관리하는 것이 중요해 졌습니다. Docker 컨테이너와 쿠버네티스(Kubernetes) 오케스트레이션 환경에서 구축하고 운영하는 방법을 진행해보겠습니다.

 

Docker Container & Volume

 

먼저 간단하게 SQL Server 컨테이너화의 주요 특징 및 장점에 대해 알아보겠습니다.

  • 빠른 배포 및 경량화: OS 설치 및 설정 과정이 생략되어 몇 초 만에 SQL Server 인스턴스를 시작할 수 있습니다.
  • 개발/테스트 환경의 일관성: 개발, QA, 운영 환경이 동일한 컨테이너 이미지로 구성되어 "내 컴퓨터에서는 되는데..." 문제를 방지합니다.
  • 운영 효율성 향상: Dockerfile을 통해 환경 설정을 코드화(IaC: Infrastructure as Code)할 수 있어, 반복적인 수동 작업을 줄입니다.
  • 효율적인 리소스 사용: 호스트 OS의 커널을 공유하므로 VM보다 훨씬 가벼우며, 필요한 리소스만 할당하여 효율적인 사용이 가능합니다. 고가용성 및 확장성: 쿠버네티스를 통해 SQL Server 인스턴스를 손쉽게 복제하고 관리하여 장애 발생 시 자동 복구를 구현할 수 있습니다.

 

출처 : https://www.docker.com/resources/what-container/

 

컨테이너 기술은 애플리케이션과 그 종속성을 하나의 패키지로 묶어, 어떤 환경에서든 일관되게 실행될 수 있도록 하는 기술입니다.

 

가상 머신(VM): 하드웨어 위에 하이퍼바이저를 통해 Guest OS를 통째로 올리는 방식입니다. 이 때문에 무겁고 부팅 시간이 오래 걸립니다.

컨테이너: 호스트 OS의 커널을 공유하며, 애플리케이션과 필요한 라이브러리만 패키징합니다. 훨씬 가볍고 빠르며, 리소스 효율성이 뛰어납니다.

 

 

Azure VM을 통해Docker Engine 을 설치하고, 공식 SQL Server on Linux 이미지를 사용하여 첫 번째 컨테이너를 만들어 보겠습니다.

 

기존에 만들었던 방식을 참고해 ubuntu 22.04 VM을 생성합니다.

 

생성한 VM에 접속하여 먼저 시스템 패키지 인덱스를 업데이트하고, Docker 설치에 필요한 패키지들을 설치합니다.

 

 

  • 보안 접속 준비 (ca-certificates): "이제부터 보안 사이트(HTTPS)에 접속할 거야."
  • 보안 키 다운로드 (curl): "도커 공식 사이트에서 '정품 인증 키'를 가져와줘."
  • 정품 검증 설정 (gnupg): "앞으로 도커 관련 파일을 받을 때는 이 키로 서명을 확인해서 가짜면 차단해줘."
  • 버전 맞춤 설정 (lsb-release): "내 리눅스 버전이 'Jammy'네? 그럼 Jammy 전용 도커 저장소를 등록하자."

 

sudo apt-get update 
sudo apt-get install ca-certificates curl gnupg lsb-release

 

Docker의 공식 GPG 키를 시스템에 추가하여 다운로드한 패키지의 무결성을 확인합니다.

 

GPG는 데이터를 암호화하거나, 보낸 사람이 누구인지 확인하는 디지털 서명 도구입니다.

무결성이란 정보가 전송되는 과정에서 누군가에 의해 수정되거나 파일이 깨지지 않고, 처음 상태 그대로 유지되는 특성을 말합니다.

sudo mkdir -p /etc/apt/keyrings 
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

 

Docker의 APT 저장소를 시스템에 추가합니다. $(lsb_release -cs) 명령어가 현재 우분투 버전의 코드명(22.04의 경우 jammy)을 자동으로 감지합니다.

 

APT 저장소는 리눅스(Ubuntu 등) 시스템에서 소프트웨어를 안전하고 편리하게 설치하기 위해, 실행 파일들을 모아둔 온라인 창고라고 이해하시면 됩니다.

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list

 

패키지 인덱스를 다시 업데이트하고 Docker Engine, Docker CLI, Containerd를 설치합니다.

sudo apt-get update 
sudo apt-get install docker-ce docker-ce-cli containerd.io

 

hello-world 컨테이너를 실행하여 Docker가 정상적으로 동작하는지 확인합니다.

sudo docker run hello-world

 

sudo 없이 docker 명령어를 사용하기 위해 현재 사용자를 docker 그룹에 추가합니다.

sudo usermod -aG docker $USER

 

변경 사항을 적용하기 위해 터미널을 다시 시작하거나 재로그인합니다.

 

docker run 명령어를 사용하여 주소에 있는 이미지를 가져와서 SQL Server 컨테이너를 실행합니다.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=Contoso!0000' -p 1433:1433 --name mssql-test -d mcr.microsoft.com/mssql/server:2022-latest

 

 

컨테이너가 정상적으로 실행되고 있는지 확인합니다. STATUS가 Up으로 표시되면 성공입니다.

docker ps

 

mssql_data라는 이름의 볼륨을 생성합니다. 이 볼륨에 SQL Server의 데이터 파일이 저장될 것입니다.

 

Docker 볼륨은 컨테이너가 생성되고 삭제되는 것과 무관하게 데이터를 영구적으로 저장할 수 있는 디렉터리입니다. 볼륨은 호스트 OS의 특정 디렉터리를 컨테이너의 디렉터리에 연결(마운트)하는 방식으로 동작합니다. 컨테이너를 삭제하면 데이터베이스와 데이터가 모두 사라지는데 도커는 이를 해결하기 위한 여러 방법을 제공하며, 가장 일반적인 방법은 Docker 볼륨(Volume)을 사용하는 것입니다.

docker volume create mssql_data

 

생성된 볼륨 목록을 확인합니다.

docker volume ls

 

-v mssql_data:/var/opt/mssql : -v 옵션을 사용하여 mssql_data 볼륨을 컨테이너 내부의 데이터 디렉터리(/var/opt/mssql)에 마운트합니다.

 

만약 -v 옵션 없이 SQL Server를 사용하다가 컨테이너를 삭제하면, 그 안에 만들었던 모든 데이터베이스와 테이블이 영구적으로 증발합니다. 하지만 이렇게 볼륨을 연결해두면 docker stop 하거나 docker rm으로 컨테이너를 삭제해도 데이터는 안전합니다.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=Ekfrltkrhk5ro" -p 1433:1433 --name mssql-with-volume -v mssql_data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2022-latest

 

설정 완료시까지 2~3분 정도 대기합니다.

SSMS로 접속해 봅니다.

접속 후, TestDB라는 데이터베이스와 TestTable 테이블을 생성하고 데이터를 입력합니다.

 

데이터가 잘 저장되었는지 확인하기 위해, 현재 컨테이너를 삭제합니다.

docker stop mssql-with-volume 
docker rm mssql-with-volume

 

볼륨은 삭제하지 않았으므로, 데이터는 여전히 안전하게 보관되어 있습니다.

 

mssql-with-volume 컨테이너와 동일한 볼륨을 사용하는 mssql-new라는 이름의 새 컨테이너를 생성합니다.

sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=Ekfrltkrhk5ro" -p 1433:1433 --name mssql-new -v mssql_data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2022-latest

 

SSMS 로 접속하여 TestDB와 TestTable의 데이터가 그대로 남아 있는지 확인합니다.

아래와 같이 정상적으로 데이터가 조회되면 성공입니다.

 

이러한 볼륨을 모든 앱이 만드는 것은 아닙니다. 앱의 성격에 따라 '상태'가 있는지 없는지에 따라 달라집니다.

 

볼륨을 반드시 사용하는 경우는 Stateful 앱입니다. 데이터베이스와 같이 데이터가 유지되어야만 서비스가 의미 있는 앱들이거나 앱이 실행되면서 남기는 기록(Log) 파일을 분석해야 할 때 볼륨에 저장합니다.

 

반면, 데이터를 직접 들고 있지 않고, 계산만 하거나 데이터베이스에 전달만 하는 앱인 Stateless는 사용자 요청을 받아서 데이터베이스에 저장만 하고 자신은 데이터를 들고 있지않아 컨테이너가 수백 개로 늘어났다 줄어들어도 상관없기 때문에 볼륨을 쓰지 않는 경우가 많습니다.

Kubernetes

 

이렇게 배포한 컨테이너는 실제 운영 환경에서 여러 개를 관리해야 합니다. 예를 들어, 웹 서버, API 서버, 데이터베이스 서버 등 여러 컨테이너들이 서로 통신하고, 장애가 발생했을 때 자동으로 복구되어야 합니다.

 

이럴 때 사용하는 기술이 컨테이너 오케스트레이션(Container Orchestration)인 Kubernetes입니다. Kubernetes는 수많은 컨테이너의 배포, 관리, 확장, 네트워킹을 자동화하는 기술입니다.

 

쿠버네티스를 이해하기 위해 몇 가지 핵심 컴포넌트를 알아야 합니다.

출처 : https://kubernetes.io/docs/concepts/architecture/

  • 클러스터(Cluster): 여러 대의 서버(노드)를 하나의 거대한 컴퓨터처럼 묶어 놓은 것입니다.
  • 노드(Node): 클러스터를 구성하는 실제 물리적 또는 가상 머신입니다.
  • 마스터 노드(Master Node): 클러스터의 전체 상태를 관리하고, 작업을 할당하는 역할을 합니다.
  • 워커 노드(Worker Node): 마스터 노드의 명령에 따라 실제 컨테이너를 실행하는 역할을 합니다.
  • Pod: 쿠버네티스에서 배포되는 가장 작은 단위입니다. 하나 이상의 컨테이너와 스토리지를 묶어 놓은 논리적인 그룹입니다. 컨테이너를 직접 배포하지 않고, Pod 단위로 배포합니다.
  • Deployment: Pod를 배포하고 관리하는 컨트롤러입니다. 원하는 Pod의 복제본(Replica) 수를 유지하며, 업데이트 및 롤백을 관리합니다.
  • Service: Pod의 집합에 안정적인 네트워크 접근을 제공하는 추상화 계층입니다. Pod가 재생성되거나 IP가 바뀌어도 Service를 통해 항상 동일한 주소로 접근할 수 있습니다.

웹 서버 포드, DB 포드처럼 서비스별로 만듭니다. 쿠버네티스는 컨테이너를 직접 하나씩 다루지 않고, 항상 '포드'라는 단위로 관리합니다. 노드 자체는 똑같은 OS와 환경을 가진 복제본일 수 있지만, 그 안을 채우는 내용물(포드)은 쿠버네티스가 상황에 맞춰 다르게 배치합니다.

 

 

우분투 22.04 환경에서 kubectl과 minikube를 설치하고, 이를 활용하여 SQL Server를 배포해보겠습니다. 

 

쿠버네티스 클러스터를 제어하기 위한 명령줄 도구인 kubectl을 설치합니다.

다음 명령어를 순서대로 실행하여 kubectl을 설치합니다.

curl -LO "https://dl.k8s.io/release/v1.30.1/bin/linux/amd64/kubectl" 
chmod +x kubectl 
sudo mv kubectl /usr/local/bin/ 
kubectl version

 

설치가 완료되면 버전을 확인합니다.

 

로컬에서 쿠버네티스 클러스터를 실행하기 위한 도구인 minikube를 설치합니다.

 

minikube는 쿠버네티스의 핵심 기능들을 내 개인 PC(로컬)나 현재 쓰고 계신 VM 한 대 안에서 실행할 수 있게 압축해 놓은 학습용/개발용 미니 쿠버네티스입니다.

 

다음 명령어를 사용하여 바이너리를 다운로드하고 실행 권한을 부여한 뒤 PATH에 추가합니다.

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 
sudo install minikube-linux-amd64 /usr/local/bin/minikube

 

설치가 완료되면 버전을 확인합니다.

minikube version

 

 

docker 드라이버를 사용하여 Minikube 클러스터를 시작합니다.

minikube start --driver=docker

 

SQL Server를 배포하기 위한 YAML 파일을 작성합니다. YAML 파일은 쿠버네티스에게 "어떤 상태로 서비스를 실행해달라"고 요청하는 일종의 설계도입니다.

vi mssql-deployment.yaml

 

mssql-deployment.yaml 파일을 생성하고 아래 내용을 입력합니다.

 

Deployment (배포 관리자)

항목 의미 역할
kind: Deployment 리소스 종류 컨테이너의 생성, 업데이트, 개수 유지를 관리하는 관리자임을 명시합니다.
replicas: 1 복제본 개수 이 컨테이너를 항상 1개 띄워 두라는 뜻입니다. 만약 3으로 바꾸면 3개가 동시에 돕니다.
selector / matchLabels 연결 고리 이 관리자가 어떤 라벨(app: mssql)을 가진 포드(Pod)들을 관리할지 지정합니다.
template 포드 설계도 실제로 생성될 컨테이너의 상세 설정(이미지명, 환경변수, 포트 등)이 담겨 있습니다.
env (환경변수) 설정값 이전에 docker run -e로 주었던 라이선스 동의와 비밀번호 설정을 여기서 처리합니다.

 

Service (네트워크 통로)

항목 의미 역할
kind: Service 리소스 종류 네트워크 서비스를 제공하는 객체임을 명시합니다.
selector 대상 지정 어떤 컨테이너(app: mssql)로 신호를 보낼지 결정합니다.
port / targetPort 포트 매핑 서비스의 1433번으로 들어온 신호를 컨테이너의 1433번으로 전달합니다.
type: NodePort 외부 노출 방식 내부망뿐만 아니라, 외부(호스트 PC 등)에서도 접근할 수 있게 특정 포트를 열어줍니다.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mssql-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mssql
  template:
    metadata:
      labels:
        app: mssql
    spec:
      containers:
      - name: mssql-container
        image: mcr.microsoft.com/mssql/server:2022-latest
        ports:
        - containerPort: 1433
        env:
        - name: ACCEPT_EULA
          value: "Y"
        - name: MSSQL_SA_PASSWORD
          value: "Ekfrltkrhk5ro"
---
apiVersion: v1
kind: Service
metadata:
  name: mssql-service
spec:
  selector:
    app: mssql
  ports:
    - protocol: TCP
      port: 1433
      targetPort: 1433
  type: NodePort

 

작성한 YAML 파일을 통해 만든 새로운 쿠버네티스 포드(Pod)를 쿠버네티스 클러스터에 적용합니다.

kubectl apply -f mssql-deployment.yaml

 

Pod와 Service가 정상적으로 생성되었는지 확인합니다. 

kubectl get pods 
kubectl get services

 

kubectl get services 결과에서 mssql-service의 PORT(S) 컬럼에 1433:/TCP와 같은 정보가 표시됩니다.

 

sqlcmd를 사용하여 접속하기 위해 먼저 Ubuntu 22.04에 sqlcmd 를 설치합니다.

curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /etc/apt/keyrings/microsoft.gpg

echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/microsoft.gpg]  https://packages.microsoft.com/ubuntu/22.04/prod jammy main" | sudo tee /etc/apt/sources.list.d/mssql-release.list

 

Minikube IP 주소는 다음 명령어로 확인합니다.

minikube ip

 

할당된 NodePort 를 확인합니다.( type: NodePort이므로, 클러스터 외부(로컬 컴퓨터 또는 같은 머신)에서 접근하려면 할당된 NodePort 번호를 알아야 합니다.)

 

접속 sqlcmd -S <minikube-ip>, <nodeport> -U sa -P '<password>' -C  명령어로 접속합니다.

sqlcmd -S 192.168.49.2,31003 -U sa -P 'Ekfrltkrhk5ro' -C

 

이번에는 앞서 도커에서 만든 컨테이너를 사용하진 않았지만 실제로는 PC에서 코드를 작성하고, 도커를 이용해 이미지(Image)를 만든 후에 생성한 이미지를 컨테이너 레지스트리(Docker Hub, AWS ECR, Azure ACR 등)라는 온라인 저장소에 업로드(docker push)하여 쿠버네티스에게 YAML 파일(명세서)을 전달합니다. 그럼 쿠버네티스는 저장소에서 이미지를 내려받아 포드(Pod)를 생성하는 과정을 거칩니다.

 

고가용성을 위한 쿠버네티스 StatefulSet

Deployment는 복제본을 유지하고 컨테이너를 관리하는 데 효과적이지만, 데이터베이스와 같은 상태 있는(Stateful) 애플리케이션에는 적합하지 않습니다. StatefulSet은 쿠버네티스에서 상태 있는 애플리케이션을 관리하기 위해 설계된 컨트롤러입니다. StatefulSet은 다음과 같은 중요한 특징을 제공합니다.

  • 안정적이고 고유한 네트워크 ID: 각 Pod는 고유한 순서 번호를 가진 이름을 가집니다 (예: mssql-0, mssql-1).
  • 안정적인 영구 스토리지: PersistentVolumeClaim (PVC) 템플릿을 사용하여 각 Pod에 전용의 PersistentVolume을 할당합니다.
  • 순차적인 배포 및 삭제: Pod를 순서대로 배포하고, 삭제할 때도 역순으로 안전하게 진행합니다.

Deployment와 StatefulSet 모두 결국 포드(Pod)를 관리한다는 목적은 같습니다. 다만 포드를 생성하고 관리하는 '성격'이 다를 뿐입니다.

  • Deployment: "똑같은 포드 3개만 유지해줘. 이름은 상관없어. 죽으면 아무 이름이나 지어서 새로 만들어."
  • StatefulSet: "0번, 1번, 2번 포드를 순서대로 만들어. 0번이 죽으면 반드시 0번이라는 이름을 가진 포드를 새로 만들고, 0번이 쓰던 디스크를 그대로 연결해."

Deployment는 "앱을 쉽고 빠르게 배포하고 업데이트하기 위해" 나온 개념입니다. 하지만 데이터베이스처럼 "내 이름과 내 데이터가 절대 바뀌면 안 되는" 앱들을 위해 Deployment의 기능을 보완하여 만든 특수 관리자가 바로 StatefulSet입니다.

 

지난 강의에서 생성한 Deployment와 Service를 삭제합니다.

kubectl delete deployment mssql-deployment 
kubectl delete service mssql-service

 

mssql-statefulset.yaml 파일을 생성하고 아래 내용을 입력합니다.

여기서는 Headless Service를 사용합니다. Headless Service는 IP 주소 대신 Pod의 DNS 이름을 노출하여 Pod 간의 직접적인 통신을 가능하게 합니다.

 vi mssql-statefulset.yaml

 

mssql-headless-service : 이 서비스는 일반적인 서비스와 달리 clusterIP: None이라는 설정이 붙어 있습니다. 이를 헤드리스(Headless) 서비스라고 부릅니다. 포드들에게 DNS를 부여합니다.

mssql-nodeport-service : 쿠버네티스 내부의 SQL Server에 접속할 수 있는 입구를 만듭니다.

mssql-statefulset : Deployment의 한계를 극복하는 설정들이 담겨 있습니다.

 

serviceName : 위에 정의한 헤드리스 서비스와 이 본체를 짝지어 줍니다.

volumeMounts : 컨테이너 안의 /var/opt/mssql 폴더를 외부 저장소와 연결합니다.

volumeClaimTemplates : 쿠버네티스의 이 템플릿은 "포드가 생길 때마다 자동으로 전용 외장 하드를 신청해줘"라는 뜻입니다.

# 1. mssql-headless-service: StatefulSet의 내부 DNS 식별을 위한 서비스
apiVersion: v1
kind: Service
metadata:
  name: mssql-headless-service
spec:
  clusterIP: None
  selector:
    app: mssql-statefulset
  ports:
    - protocol: TCP
      port: 1433
      targetPort: 1433
---
# 2. mssql-nodeport-service: 외부(SSMS 등)에서 접속하기 위한 서비스
apiVersion: v1
kind: Service
metadata:
  name: mssql-nodeport-service
spec:
  type: NodePort
  selector:
    app: mssql-statefulset
  ports:
    - protocol: TCP
      port: 1433
      targetPort: 1433
      nodePort: 30433  # 외부에서 이 포트로 접속합니다.
---
# 3. mssql-statefulset: SQL Server 본체 및 스토리지 설정
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mssql-statefulset
spec:
  serviceName: mssql-headless-service
  replicas: 1
  selector:
    matchLabels:
      app: mssql-statefulset
  template:
    metadata:
      labels:
        app: mssql-statefulset
    spec:
      containers:
      - name: mssql-container
        image: mcr.microsoft.com/mssql/server:2022-latest
        ports:
        - containerPort: 1433
        env:
        - name: ACCEPT_EULA
          value: "Y"
        - name: MSSQL_SA_PASSWORD
          value: "Contoso!0000"
        volumeMounts:
        - name: mssql-pv-storage
          mountPath: /var/opt/mssql
  volumeClaimTemplates:
  - metadata:
      name: mssql-pv-storage
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "standard" # 환경에 따라 (azurefile-csi, default 등) 변경 필요할 수 있음
      resources:
        requests:
          storage: 2Gi

 

YAML 파일을 적용합니다.

kubectl apply -f mssql-statefulset.yaml

 

Pod와 PVC가 생성되었는지 확인합니다.

kubectl get pods 
kubectl get pvc

 

Pod의 이름은 mssql-statefulset-0와 같이 순서 번호를 가집니다. PVC의 이름도 mssql-pv-storage-mssql statefulset-0와 같이 Pod에 연결되어 있습니다.

 

앞단계를 참고해 mssql에 접속합니다.

sqlcmd -S 192.168.49.2,30433 -U sa -P 'Ekfrltkrhk5ro' -C

 

Pod를 삭제하여 데이터가 보존되는지 테스트합니다. StatefulSet은 자동으로 Pod를 재시작합니다.

 

Pod가 재시작되면 다시 접속하여 데이터가 그대로 있는지 확인합니다.

 

"Data is persistent!"라는 값이 정상적으로 출력되면 성공입니다.

'Microsoft Azure' 카테고리의 다른 글

Microsoft DP900 기출 연습문제 (2)  (0) 2026.01.27
Microsoft DP900 기출 연습문제 (1)  (0) 2026.01.26
SQL Server on Linux 성능 향상  (0) 2026.01.21
SQL Server on Linux 보안 기능  (0) 2026.01.20
SQL Server on Linux 고가용성 그룹(AG) 구성  (0) 2026.01.17
'Microsoft Azure' 카테고리의 다른 글
  • Microsoft DP900 기출 연습문제 (2)
  • Microsoft DP900 기출 연습문제 (1)
  • SQL Server on Linux 성능 향상
  • SQL Server on Linux 보안 기능
David0903
David0903
  • David0903
    별별 코딩
    David0903
  • 전체
    오늘
    어제
    • 전체 (92)
      • Microsoft Azure (33)
      • FastAPI (8)
      • YOLO (4)
      • C++ (27)
      • Deep Learning (12)
      • Business Data Analysis (2)
      • Basic Data Analysis (5)
      • Statistics (1)
      • Data Analysis (0)
      • Computer Science (0)
      • InfoSec (0)
  • 블로그 메뉴

    • 홈
  • 링크

    • 블로그
  • 공지사항

  • 인기 글

  • 태그

    원-핫 인코딩
    모델
    상속
    k겹 교차
    call by reference
    딥러닝
    object
    deep learning
    c++
    Friend
    경사하강법
    deep learing
    학습셋
    생성자
    call by value
    모델 설계
    ROS
    테스트셋
    operator overloading
    데이터 다루기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
David0903
SQL Server in Docker & Kubernetes
상단으로

티스토리툴바