[Docker] Docker8 - Dockerfile 실습
Dockerfile을 사용해 컨테이너 기반 독립 실행 환경 만들기 및 명령어 실습
이번 실습에서는 Dockerfile
을 작성하여 컨테이너의 루트 파일 시스템을 구성하고, RUN
, COPY
, WORKDIR
명령어를 활용하여 독립적인 실행 환경을 만드는 방법을 익혔다. 이를 통해 Docker가 어떻게 격리된 환경을 구축하는지를 직접 체험하였다.
🔧 1. Dockerfile 기본 구조
FROM ubuntu
RUN apt -y update && apt -y upgrade
FROM
: 베이스 이미지 설정 (우분투)RUN
: 이미지 빌드 시 실행되는 명령어
📂 2. WORKDIR, COPY, RUN 응용
FROM ubuntu
RUN apt -y update && apt -y upgrade
WORKDIR /workspace
COPY . .
RUN mkdir /work2
RUN cp /workspace/hello.txt /work2/hello.txt
RUN cat /work2/hello.txt
🔍 설명
WORKDIR /workspace
: 이후 모든 작업 디렉토리 기준을/workspace
로 설정COPY . .
: 호스트의 현재 디렉토리(.
)에 있는 파일을 컨테이너의 작업 디렉토리로 복사RUN mkdir
,RUN cp
,RUN cat
: 실제 파일을 만들고 복사하고 확인하는 명령들
🧪 실습 결과 확인
Dockerfile로 빌드된 이미지 실행
docker build . -t myub2
docker run -it myub2 bash
컨테이너 안에서 확인:
cd /work2
ls
# hello.txt
🖼️ 실습 이미지 캡처
Dockerfile 내용 및 빌드
🧠 COPY vs RUN 차이점
항목 | COPY | RUN |
---|---|---|
목적 | 호스트에서 파일을 이미지에 복사 | 명령어 실행 결과를 이미지에 반영 |
사용 시점 | 정적인 파일 전달 | 패키지 설치, 디렉토리 생성, 파일 조작 등 동작 처리 |
예시 | COPY hello.txt /workspace/ |
RUN cp hello.txt /work2/ |
📌 핵심 Dockerfile 명령어 요약
명령어 | 역할 |
---|---|
FROM |
어떤 이미지를 베이스로 할지 지정 |
RUN |
컨테이너 빌드 과정에서 실행할 명령어 |
COPY |
호스트의 파일을 이미지에 복사 |
WORKDIR |
이후 작업 디렉토리 지정 |
EXPOSE |
컨테이너에서 열어줄 포트 지정 |
CMD , ENTRYPOINT |
컨테이너 시작 시 실행할 기본 명령 설정 |
📚 추가 개념 정리
EXPOSE
: 컨테이너가 열어놓은 포트를 명시하는 선언. 포트 매핑을 통해 외부 접근 가능ENTRYPOINT
vsCMD
: CMD는 기본 명령, ENTRYPOINT는 고정 실행 진입점- 개발 환경 또는 CI/CD 파이프라인에서 컨테이너화된 앱 구축에 필수
🔒 독립 실행 환경의 핵심: 격리(Isolation)
docker run
으로 생성된 컨테이너 내부는 개별적으로 파일, 프로세스, 네트워크 공간이 구분- 같은
bash
를 사용하더라도 컨테이너는 각기 다른 프로세스로 동작 - 이는
chroot
,namespace
,cgroup
등을 기반으로 구현됨
🏁 마무리
이 실습을 통해 각 컨테이너가 서로 다른 디렉터리 구조와 파일 값을 가지며, 격리된 실행 환경이라는 것을 체험할 수 있었다.
이제 Dockerfile을 통해 환경을 지능적으로 구성하고, 클래식 프로젝트나 서버 리소스를 개발, 구축할 준비가 되어 있다!