Docker
Dockerfile을 이용한 이미지 빌드

- Dockerfile 및 context에서 도커 이미지를 빌드한다. 도커 이미지 빌드를 위한 CLI(Command Line Interface) 명령어는 다음과 같다.
docker image build = docker build = docker buildx build
(Buildkit을 이용한 빌드를 수행)
=> 모두 같은 명령어지만 적용하는 환경이나 문법의 경우 각자 다른다. 해당 명령어 입력 후 --help 를 통해 익힌다.
* DockerFile
: 도커 이미지를 빌드하는데 필요한 명령어(컨테이너에 설치해야 하는 패키지, 추가해야 하는 소스코드, 실행해야 하는 명령어와 쉘 스크립트)를 순서대로 기술한 텍스트 파일이다. => 명세
* Context
: 지정된 경로 또는 URL에 있는 파일의 모음을 말한다. => 해당 디렉토리
Go Language 기반의 컨테이너 앱을 사용해 도커 컨테이너 작동 확인
간단한 앱 개발
1. docker\go 작업 디렉터리 생성 및 코드를 작성할 main.go 파일 생성

2. 소스코드 작성

- 도커 컨테이너 실행 확인을 위한 코드이므로 문법적인 이해는 넘기도록 하자.
- 요약하자면, 8080포트로 HTTP 요청을 대기하고 있다가, /로 요청이 들어오면 Hello Docker!!!를 응답하는 앱이다.
개발환경(PC)에서 앱 실행 및 동작 확인
1. go language 설치
- https://go.dev/dl/ 에서 다운 받을 수 있다.
2. 앱 실행
C:\Users\crpark> go run c:\docker\go\main.go <= docker\go 디렉터리의 main.go 파일을 실행하는 go lang 명령어
2024/09/19 09:39:33 Starting server on :8080 <= 웹 서버가 정상적으로 8080포트에서 작동함을 알 수 있다.
3. curl 명령어를 이용해 요청을 전달
c:\docker> curl http://localhost:8080/ <= 웹 서버에 "/" 주소로 응답을 요청
Hello Docker!!! <= 요청에 대한 응답. main.go 프로그램이 정상적으로 동작함을 확인
- 만약 동일한 앱을 다른 서버 또는 개발환경(PC)에서 실행하려고 한다면, 1~3을 반복해야 한다.
=> 앱과 앱을 실행하기 위한 환경을 묶어서 배포하는 것이 필요한데, 이를 컨테이너화를 통해 가능하다.
컨테이너화 Step 1. 도커 이미지 생성
1. Dockerfile 생성

도커파일 빌드의 시작은 FROM 절부터 시작한다.
FROM 절 : 각종 언어로 만들어진 프로그램을 실행할 수 있는 이미 만들어진 구동환경을 이미지로 가져오는 명령어다.
docker image build 시 여러 명령어는 생략이 가능하지만, -tag(이미지의 이름을 붙여주는 명령어)는 반드시 사용해야만 한다. (생략불가)
entrypoint = CMD 명령어
환경 변수
- 컨테이너 앱 개발 시 매우매우 중요하다.
다양한 옵션을 사용해서 컨테이너 실행 (run, run -it, run -d 에 대해 그림 그려볼 것)
컨테이너를 run 하면 기본적으로 attach모드로 실행되고 제어권이 컨테이너로 넘어가므로 터미널에서는 제어가 불가능하게 된다.
1) 다른 터미널을 열어 해당 컨테이너를 제어
> rm -f [컨테이너 ID] : 강제 삭제 (ID는 식별 가능한 범위까지만 입력해도 문제 없다.
2) 포트를 할당하여 실행하기 전, run 뒤에 -it 명령어를 추가하여 컨테이너를 실행하면 터미널에서 제어할 수 있다.
> 제어방법 : (Ctrl 누른상태로) p + q 를 입력하면 호스트에서 새로운 명령어 입력이 가능해진다.
DEBIAN_FRONTEND 란?
포그라운드 vs 백그라운드 프로세스
'Study > seSAC 금천 4기' 카테고리의 다른 글
| 컨테이터 애플리케이션 개발_4일차_240923 (0) | 2024.09.30 |
|---|---|
| 컨테이너 애플리케이션 개발_3일차_240920 (1) | 2024.09.30 |
| 컨테이너 애플리케이션 개발_1일차_240912 (1) | 2024.09.26 |
| 네트워크 및 시스템 관리_1일차_240910 (0) | 2024.09.25 |
| React를 활용한 B/E API 통합_1일차_240813 (1) | 2024.09.18 |