소개
Docker 는 개발자가 애플리케이션을 구축, 패키징 및 배포하는 방식을 혁신했습니다. 이 튜토리얼에서는 Docker 컨테이너 내에서 Go 프로그램을 실행하는 방법을 배우며 일관되고 안정적인 실행 환경을 보장합니다.
Docker 는 개발자가 애플리케이션을 구축, 패키징 및 배포하는 방식을 혁신했습니다. 이 튜토리얼에서는 Docker 컨테이너 내에서 Go 프로그램을 실행하는 방법을 배우며 일관되고 안정적인 실행 환경을 보장합니다.
Docker 는 개발자가 애플리케이션과 모든 종속성을 단일의 휴대 가능한 컨테이너로 패키징할 수 있는 인기 있는 컨테이너화 플랫폼입니다. 이 컨테이너는 Docker 가 설치된 모든 시스템에서, 기본 운영 체제나 인프라에 관계없이 쉽게 배포 및 실행할 수 있습니다.
Docker 는 오픈소스 소프트웨어 플랫폼으로, 소프트웨어 컨테이너 내에서 애플리케이션의 배포, 확장 및 관리를 자동화합니다. 컨테이너는 코드, 런타임, 시스템 도구 및 라이브러리 등 애플리케이션 실행에 필요한 모든 것을 포함하는 경량의 독립 실행형 실행 가능 패키지입니다.
Docker 는 개발자와 IT 전문가에게 다음과 같은 여러 가지 이점을 제공합니다.
Docker 를 시작하려면 시스템에 Docker 엔진을 설치해야 합니다. 공식 Docker 웹사이트 (https://www.docker.com/get-started) 에서 Docker 를 다운로드하여 설치할 수 있습니다. Docker 를 설치한 후 Docker 컨테이너를 만들고 실행할 수 있습니다.
표 1: Docker CLI 명령어
| 명령어 | 설명 |
|---|---|
docker build |
Dockerfile 에서 Docker 이미지 생성 |
docker run |
Docker 컨테이너 실행 |
docker ps |
실행 중인 Docker 컨테이너 목록 |
docker images |
Docker 이미지 목록 |
docker push |
레지스트리에 Docker 이미지 업로드 |
docker pull |
레지스트리에서 Docker 이미지 다운로드 |
이제 Docker 에 대한 기본적인 이해가 생겼으니, 이제 Docker 컨테이너에서 Go 애플리케이션을 구축하는 방법을 알아보겠습니다.
먼저 간단한 Go 애플리케이션을 생성해 보겠습니다. main.go라는 새 파일을 만들고 다음 내용으로 채웁니다.
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, LabEx!")
})
fmt.Println("Starting server on :8080")
http.ListenAndServe(":8080", nil)
}
이 Go 애플리케이션은 8080 번 포트에서 실행되며, 루트 URL(/) 에 요청이 있을 경우 "Hello, LabEx!"라는 메시지를 응답합니다.
이 Go 애플리케이션을 Docker 컨테이너에서 실행하려면 Docker 이미지를 생성해야 합니다. Dockerfile이라는 새 파일을 만들고 다음 내용으로 채웁니다.
FROM golang:1.18-alpine
WORKDIR /app
COPY . .
RUN go build -o main .
CMD ["./main"]
이 Dockerfile 은 다음과 같이 동작합니다.
golang:1.18-alpine 이미지를 기본 이미지로 사용합니다./app으로 설정합니다.main이라는 실행 파일을 생성합니다.main 실행 파일을 실행하도록 명령을 설정합니다.Docker 이미지를 빌드하려면 Dockerfile이 있는 동일한 디렉터리에서 다음 명령어를 실행합니다.
docker build -t my-go-app .
이 명령어는 태그가 my-go-app인 Docker 이미지를 빌드합니다.
시스템에서 사용 가능한 Docker 이미지 목록을 확인하려면 다음 명령어를 실행합니다.
docker images
my-go-app 이미지가 목록에 표시되어야 합니다.
이제 Go 애플리케이션에 대한 Docker 이미지가 준비되었으므로 Docker 컨테이너에서 실행해 보겠습니다.
Docker 컨테이너에서 Go 애플리케이션을 실행하려면 다음 명령어를 사용합니다.
docker run -p 8080:8080 my-go-app
이 명령어는 다음과 같이 작동합니다.
my-go-app Docker 이미지를 실행합니다.실행 중인 Docker 컨테이너 목록을 확인하려면 다음 명령어를 실행합니다.
docker ps
my-go-app 컨테이너가 목록에 표시되어야 합니다.
Docker 컨테이너에서 실행 중인 Go 애플리케이션에 접근하려면 웹 브라우저를 열고 http://localhost:8080으로 이동합니다. "Hello, LabEx!" 메시지가 표시되어야 합니다.
실행 중인 Docker 컨테이너를 중지하려면 다음 명령어를 사용합니다.
docker stop <컨테이너 ID>
<컨테이너 ID>는 docker ps 명령어를 실행하여 확인할 수 있습니다.
이 튜토리얼에서는 다음을 배웠습니다.
Docker 를 사용하여 Go 애플리케이션을 컨테이너화하면 다양한 환경에서 일관되고 안정적인 배포를 보장하여 애플리케이션 개발, 테스트 및 배포를 더욱 쉽게 만들 수 있습니다.
이 튜토리얼을 마치면, Docker 컨테이너 내에서 Go 애플리케이션을 구축하고 실행하는 방법에 대한 확실한 이해를 얻게 될 것입니다. 이를 통해 다양한 환경에서 소프트웨어를 배포하고 분배하는 것이 용이해집니다. Docker 의 컨테이너화 기술은 개발 및 배포 프로세스를 단순화하여 훌륭한 코드 작성에 집중할 수 있도록 지원합니다.