패키지 목록 업데이트하기
$ sudo apt update -y
apt가 HTTPS를 통해 저장소를 사용할 수 있도록 패키지 설치하기
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
도커 패키지 저장소를 apt에 등록하기
$ sudo curl -fsSL http://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
$ sudo apt-repository \
> "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
> $(lsb_release -cs) \
> stable "
설정할 버전을 지정해 도커 CE 설치하기
$ sudo apt install -y docker-ce
도커 이미지 내려 받기
$ sudo docker image pull gihyodocker/echo:latest
curl 명령으로 접근하기
$ sudo curl http://localhost:9000/
Hello Docker!!
Go 언어로 만든 간단한 웹 서버를 도커 컨테이너에서 실행시키기
$ sudo vi 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)
}
}
- main.go 파일에 코드 작성하기
- 모든 http 요청에 대해 "Hello Docker!!" 응답 전송
- 포트 8080로 요청 받는 서버 애플리케이션으로 동작
- 클라이언트로 요청 받으면 received request 메시지를 표준으로 출력
Dockerfile 작성하기
$ cat Dockerfile
From golang:1.9
RUN mkdir /echo
COPY main.go /echo
CMD ["go", "run", "/echo/main.go"]
- FROM/RUN: 인스트럭션(명령)
- FROM: 도커 이미지의 바탕이 될 베이스 이미지 지정
- RUN: 도커 이미지를 실행할 때 컨테이너 안에서 실행할 명령 정의
- COPY: 도커가 동작 중인 호스트 머신의 파일/디렉터리를 도커 컨테이너 안으로 복사
- CMD: 도커 컨테이너를 실행할 때 컨테이너 안에서 실행할 프로세스 지정
도커 이미지 빌드하기
$ sudo docker image build -t example/echo:latest .
- docker image build: 도커 이미지를 빌드하기 위한 명령
- -t: 이미지명 지정
- 빌드를 실행하면 베이스 이미지를 내려받고 RUN/COPY 인스트럭션에 지정된 명령이 단계적으로 실행됨
- . : 도커 파일의 경로 지정
도커 컨테이너 실행하기
$ sudo docker container run example/echo:latest
- -d : 백그라운드로 실행하기