Docker 써보기

Sean·2025년 4월 7일

1. Docker 이전에

1-1. docker를 왜 쓸까

  • 이식성. 어떤 환경에서든 독립적으로 실행된다. -> 프로그램 간 충돌 없음.
  • 설치과정 일일이 거치지 않아도 됨.
  • 항상 일관된 프로그램 설치

1-2. 컨테이너? 이미지?

컨테이너: 독립적인 컴퓨터 한 개. 각 컨테이너는 각각의 작은 컴퓨터.

이미지: 컨테이너에서 실행되는 프로그램. //추가 필요

1-3. Docker 설치 (macOS)

https://docs.docker.com/desktop/setup/install/mac-install/

1-4. DockerHub

  • 이미지 pull 가능 ( tag 이용 )
  • 원하는 버전 선택 가능.

2. Docker 기초 명령어

2-1. 이미지 다운로드

$ docker pull nginx // 버전 미기재시, latest 버전으로 pull

  • pull시, Dockerhub에서 이미지를 다운로드 하게됨.

2-2. 기본 ( ls, rm, run, stop, ps )

$ docker image ls //다운로드 되어있는 이미지 list
$ docker image rm (이미지ID) //이미지 삭제
$ docker run -d nginx //nginx 실행. -d는 백그라운드에서 실행 의미
$ docker run -p (호스트 포트):(컨테이너 포트) nginx // 호스트-컨테이너 포트 연결
$ docker ps -a //실행중인 프로세스 확인. -a는 종료된 컨테이너도 조회
$ docker stop (컨테이너ID) //실행중인 컨테이너 종료

  • run: 이미지 설치(로컬에 없을시) + 실행 한 번에.
  • docker rm의 경우, 실행중인 프로세스는 삭제 불가. 강제 삭제하려면 -f 키워드 이용.

3. Dockerfile

3-1. Dockerfile이란?

  • 나만의 이미지를 만들 수 있음.

3-2. Dockerfile 틀

필자는 vscode 이용하여 작성.

  • Dockerfile 이름 그대로 파일 생성 후 작성.
FROM [이미지 이름] //예시) FROM ubuntu

$ docker build -t (원하는 이미지 이름) . //Dockerfile 있는 경로 적어줘야함. 해당 폴더일시 .

$ docker build -t mytestImage . //이미지 생성
$ docker run -d mytestImage //이미지 기반한 컨테이너 실행
$ docker exec -it (컨테이너ID) bash //컨테이너 들어가기

COPY

COPY: 호스트 컴퓨터에 있는 파일 복사 -> 컨테이너로 전달

COPY [호스트의 복사할 파일 경로] [컨테이너 도착 경로]

//예시
COPY hostFile.txt /cont.txt

ENTRYPOINT, RUN

ENTRYPOINT : 컨테이너 생성되어 최초 실행 때 수행되는 명령어

RUN : 이미지 생성 과정에서 필요햔 명령어 실행.

  • 차이 : 이미지 생성 때 명령어 vs 이미지 생성 이후 컨테이너 실행 때 명령어

4. Docker Compose

docker compose 에서 컨테이너를 서비스라고 부름.

4-1. docker compose 실행 과정

1. compose.yml 생성

services:
	my-db:
    	image: mysql
        environment:
        	MYSQL_ROOT_PASSWORD: (비밀번호)
        volumes:
        	- ./mysql_data:/var/lib/mysql
        ports:
        	- 3306:3306
        
	my-cache-server:
    	image: redis
       	ports:
        	- 6379:6379

services : 여러 개의 서비스 정의하겠다.
my-db: 해당 서비스 이름 짓기.
environment: 환경 변수 설정
volumes : 볼륨 설정
ports : 포트 연결

2. compose 파일 실행 및 삭제

$ docker compose up -d //run 처럼, -d 붙여줘야 백그라운드 실행

  • compose.yml 경로에서 실행. dockerfile 실행 때는 경로 적어줬지만, compose는 경로 안써줌.

$ docker compose down //종료 + 삭제

profile
저스트두잇

0개의 댓글