728x90
반응형
HTTP 요청에 대해 응답하는 도커 이미지를 생성해 보겠습니다.
STEP1. 작업 디렉터리 생성 및 main.go 파일 작성
main.go 파일은 Golang 언어로 작성되었으며, 8080 포트로 HTTP 요청을 대기하다가 /로 요청이 들어오면 Hello Docker!!! 내용을 응답합니다.
root@server:~# mkdir docker root@server:~# cd docker root@server:~/docker# ls root@server:~/docker# gedit main.go
package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { log.Println("received request") fmt.Fprintf(w, "Hello Docker!!") }) log.Println("start server") server := &http.Server{Addr: ":8080"} if err := server.ListenAndServe(); err != nil { log.Println(err) } }
STEP2. 우분투 가상머신에서 main.go 테스트
우분투 호스트 머신에서 main.go 실행 여부를 확인하기 위해 golang-go 패키지를 설치하고 main.go 파일을 실행합니다.
root@server:~/docker# apt install golang-go root@server:~/docker# go run main.go 2019/05/16 16:19:25 start server
(앞에 터미널에 main.go가 실행되고 있는 상태에서) 다른 터미널로 접속해서 아래 명령을 수행했을 때, Hello Docker!! 메시지가 출력되면 정상입니다.
root@server:~# curl http://localhost:8080 Hello Docker!!root@server:~#
STEP3. Dockerfile 작성
root@server:~/docker# gedit Dockerfile
FROM golang:1.9 RUN mkdir /echo COPY main.go /echo CMD ["go", "run", "/echo/main.go"]
STEP4. 도커 이미지 빌드
docker image build -t 이미지명[:태그명] Dockerfile_path
-t : 이미지의 이름을 지정
-f : build를 할 때 기본적으로 Dockerfile을 이용하는데, 해당 파일이 아닌 다른 파일을 이용할 경우 "-f 파일명" 옵션을 설정
--pull=true : 매번 베이스 이미지를 강제로 내려받아서 사용
현재 디렉터리(/root/docker/)에 Dockerfile이 존재하므로 Dockerfile_path 부분에 현재 디렉터리를 나타내는 "."을 입력합니다.
root@server:~/docker# docker image build -t example/echo:latest . Sending build context to Docker daemon 3.072kB Step 1/4 : FROM golang:1.9 1.9: Pulling from library/golang 55cbf04beb70: Pull complete : 186b06a99029: Pull complete Digest: sha256:8b5968585131604a92af02f5690713efadf029cc8dad53f79280b87a80eb1354 Status: Downloaded newer image for golang:1.9 ---> ef89ef5c42a9 Step 2/4 : RUN mkdir /echo ---> Running in d4ed8c0274d4 ---> b222ab609fef Removing intermediate container d4ed8c0274d4 Step 3/4 : COPY main.go /echo ---> 2717792f856a Removing intermediate container 81dd6a70ca10 Step 4/4 : CMD go run /echo/main.go ---> Running in 3d4999e8c7eb ---> 0b8f21dd9f05 Removing intermediate container 3d4999e8c7eb Successfully built 0b8f21dd9f05 Successfully tagged example/echo:latest
docker image ls 명령으로 생성된 이미지를 확인합니다.
root@server:~/docker# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE example/echo latest 0b8f21dd9f05 3 minutes ago 750MB nginx latest 53f3fd8007f7 8 days ago 109MB golang 1.9 ef89ef5c42a9 10 months ago 750MB
STEP5. main.go 내용 수정 후 다시 빌드
동일한 이미지가 생성되면 이전 이미지는 <none>로 이름이 바뀝니다.
root@server:~/docker# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE example/echo latest 79407db32a2a 2 seconds ago 750MB <none> <none> cefd0db84707 8 minutes ago 750MB nginx latest 53f3fd8007f7 8 days ago 109MB golang 1.9 ef89ef5c42a9 10 months ago 750MB
728x90
반응형
'컨테이너 > 도커' 카테고리의 다른 글
06 컨테이너 명령어 실행, 파일 복사, 현황 조회 (0) | 2019.05.18 |
---|---|
05 컨테이너 시작, 중지, 재시작 (0) | 2019.05.18 |
04 도커 이미지 태깅, 등록, 기타 (0) | 2019.05.18 |
03 Hello Docker 실행, 중지, 접속 (0) | 2019.05.18 |
01 우분투에 도커 설치 (0) | 2019.05.18 |
댓글