docker 장점
sanpshot
resource control
can run anywhere(with docker)
zero setup
lightwight
pm2 for any language
docker 중요 파일 두가지
Dockerfile -> docker image -> run
예를 들자면.. package.json = Dockerfile / docker image = build file 느낌
docker daemon
docker info : 도커 상태와 정보 확인
open -a Docker : 도커 실행
docker redis
docker run redis
docker run -it redis
docker run -it -p 4000:6379 redis
redis-cli -p 4000
docker list
docker ps : 실행 중인 도커 프로세스 목록
docker ps --all : 모든 도커 컨테이너 목록 확인
docker system prune : 중지/종료된 컨테이너들 제거
docker 컨테이너 터미널 접속
docker exec -it [프로세스명(docker ps - NAME)] bash
docker exec -it [프로세스명(docker ps - NAME] sh
docker exec -it [컨테이너 ID] sh
예 :
redis docker image 실행 후 redis-cli
SET foo bar
get foo
"bar"
commands
docker run [image name] : docker create [image name], docker start [image name] 실행되며, 프로세스만 실행
docker run -it [image name] : docker run [image name] 실행 후 해당 터미널 접속
docker run -d [container id] : 특정 컨테이너를 백그라운드에서 실행(detached), docker ps로 상태 확인
stop
docker stop [docker id] : 중지 명령을 보내고 10초(기본값) 이후 sigkill 보냄
docker kill [docker id] : sigkill 바로 보내고 강제 종료
log
docker logs [container id] : 특정 컨테이너의 stdlog 확인
dockerfile 커맨드
| FROM | 어떤 베이스 이미지를 기반으로 할지 지정. Dockerfile의 시작점.예: FROM ubuntu:22.04, FROM node:18 |
| WORKDIR | 이후 명령어들이 실행될 작업 디렉토리 설정.없으면 기본은 / (루트). cd처럼 동작.예: WORKDIR /app |
| COPY | 호스트의 파일 또는 디렉토리를 이미지 내부로 복사.형식: COPY [소스 경로] [대상 경로]예: COPY . /app |
| RUN | 셸 명령어를 실행 (이미지 빌드 시 단 한 번만).보통 패키지 설치, 디렉토리 생성 등에 사용.예: RUN apt update && apt install -y git |
| CMD | 컨테이너가 실행될 때 실행할 기본 명령어 지정.예: CMD ["node", "index.js"] 또는 CMD redis-serverdocker run에서 명령어를 덮어쓸 수 있음 |
docker image 생성
1. Dockerfile 생성
-> FROM alpine
-> WORKDIR /usr/src/my-app : 향후 RUN, COPY 등 명령어의 기본 작업 디렉토리 설정
-> COPY . . (임의, 루트 경로의 모든 파일을 컨테이너로 복사)
-> RUN apk add --update redis
-> CMD ["redis-server"]
2. Dockerfile과 동일 경로에서 docker build . 또는 docker build. -t sihoon/redis:latest로 이름/태그 지정 가능
3. docker images : 도커 이미지 목록 확인
docker image 생성 흐름
1. Dockerfile 설정
2. Docker Hub에서 관련 Image 가져오기
3. 2번을 기준으로 로컬 서버에 Base Container 생성 + Dockerfile 내 RUN 실행 후 스냅샷
4. 3번 Temp Image 생성 후 스냅샷
5. 이미지 생성 완료
* 3, 4번 구간에서는 스냅샷을 하면서 캐싱이 되기에 FROM, RUN 부분에서 변경사항이 없고 CMD만 변경이 있을 경우 docker build가 빠르게 진행될 수 있음
예시)
-> docker build -t [태그명] -f [실행할 도커 파일명] .
-> docker run -it -p 4000:4000 --env-file .env express-dev -v $(pwd)/app:/usr/src/my-app/app express-dev
.dockerignore를 통해 도커 빌드 시 특정 파일 제외 가능
docker build 후 실행 시 특정 프로퍼티 파일 호출
docker run -it --env-file .env [이미지명]
docker-compose.yml(개발 용도, 운영 환경에서는 비추천)
docker-compose up : 도커 한번에 실행 가능
docker-compose up -d : 도커 백그라운드 실행
'Docker' 카테고리의 다른 글
| [Docker] ECS 운영 환경 구축 (0) | 2025.07.10 |
|---|---|
| [Docker] ECS Fargate 테스트 - Nginx 이미지 빠른 배포 (0) | 2025.07.10 |