Golang에서 도커와 간단한 API가 무엇인지 이해하려고 노력합시다.
Docker is an open source containerization platform. It enables developers to package applications into containers—standardized executable components combining application source code with the operating system (OS) libraries and dependencies required to run that code in any environment -IBM
그렇다면 컨테이너화란 무엇일까요?
Containerization is a form of virtualization where applications run in isolated user spaces, called containers, while using the same shared operating system (OS). One of the benefits of containerization is that a container is essentially a fully packaged and portable computing environment. -Citrix
그리고 또한
From Docker about container
History of Container
컴퓨팅의 역사를 이해하기 위해 서핑을 계속하십시오. 꽤 흥미 롭습니다 !!
결국 IT 및 서비스 산업에서 소프트웨어 개념의 핵심 부분이 무엇인지 질문하여 이해하는 것이 중요합니다. 왜 그래? 어때? :)
Bare metal to serverless
Overview of Servers
우리는 Linux 컨테이너와 Windows 컨테이너를 가질 수 있다는 것을 알고 있습니다.
(Apple Mac OS X 컨테이너에 대해 잘 모르겠습니다 :))
응용 프로그램 개발 경험이 약간 있는 경우 컨테이너가 미니 운영 체제이지만 작성한 코드를 실행하기 위해 특정 deps, libs 등과만 번들로 제공된다고 가정하십시오. 전체 운영 체제와 같은 컨테이너를 사용할 수 없습니다. 우리는 소프트웨어를 실행하기 위한 요구 사항에 따라 컨테이너를 구축합니다. 마지막으로 docker는 컨테이너화 플랫폼이고 docker는 유일한 컨테이너화 플랫폼이 아니며 다른 플랫폼도 있습니다 [Google it]. 그리고 다시 도커와 컨테이너는 모두 다릅니다.
어쨌든 근처에 열려 있는 모든 레스토랑을 가져오기 위한 코드를 빌드하고 실행하고 싶다고 가정해 보겠습니다(물론 코드에 대한 입력으로 장소를 제공합니다). 코드가 로컬에서 제대로 작동하면 코드를 작성할 수 있습니다. 미니 운영 체제에서 코드를 빌드하고 실행하는 방법과 같은 간단한 도커 명령을 작성할 수 있습니다.
좋아, 컨테이너와 도커에 대해 너무 많이 생각합니다. 간단한 Golang 애플리케이션을 작성하고 컨테이너화하고 실행해 보겠습니다. [git VCS와 같지만 도커 이미지를 위한 도커 허브로 푸시할 수도 있습니다].
go mod init github.com/YOUR_GITHUB_USERNAME/go-docker-example
module github.com/YOUR_GITHUB_USERNAME/go-docker-example
go 1.18
deps를 추가하는 경우에 대비하여 정리하면 되지만 이 자습서에서는 패키지를 사용하지 않습니다.
go mod tidy
package main
import (
"fmt"
"html"
"log"
"net/http"
)
func main() {
// index handler
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
})
// hello handler
http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello")
})
// starting the server
log.Fatal(http.ListenAndServe(":8081", nil))
}
기본 이미지에서 미니 OS를 빌드하기 위한 명령인
Dockerfile
를 작성해 보겠습니다.Dockerfile
를 작성하면 빌드한 다음 image
를 얻고 image
를 실행하면 container
를 얻습니다.# Let us specify base image required to for our application
# usually we specify base images to build application
# just assume that we will get linux OS with golang installed in it
# to build and run go programs
FROM golang:1.18-alpine
# all the operations we do here are linux commands only
# basically it is like just you have some linux OS,
# the things you specify here just commands to fetch source code
# and run it
# create new directory app where
# we we build our application
RUN mkdir /app
# add everything from current source to this container
ADD . /app
# from now onwards this would be our workdire where we would
# be performing all the operations
WORKDIR /app
## let us run go mod download command to pull in any dependencies
RUN go mod download
## let us now build
RUN go build -o main .
## start command which kicks off
## this newly created binary executable
CMD ["/app/main"]
레포: https://github.com/developer1622/go-docker-example
감사합니다, 행복한 배움. 더 많이 공유하세요!
for{
unlearn
learn
relearn
}
Reference
이 문제에 관하여(Golang에서 도커와 간단한 API가 무엇인지 이해하려고 노력합시다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ramu_mangalarapu/let-us-try-to-understand-what-is-docker-and-a-simple-api-in-golang-5goa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)