
이번 실습에서는 Dockerfile을 작성하여 컨테이너의 루트 파일 시스템을 구성하고, RUN, COPY, WORKDIR 명령어를 활용하여 독립적인 실행 환경을 만드는 방법을 익혔다. 이를 통해 Docker가 어떻게 격리된 환경을 구축하는지를 직접 체험하였다.
FROM ubuntu
RUN apt -y update && apt -y upgrade
FROM: 베이스 이미지 설정 (우분투)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: 실제 파일을 만들고 복사하고 확인하는 명령들docker build . -t myub2
docker run -it myub2 bash
컨테이너 안에서 확인:
cd /work2
ls
# hello.txt



...
WORKDIR /workspace
COPY . .
위 내용은 컨테이너 내부 작업 디렉토리를 /workspace로 설정하고, 현재 폴더의 모든 파일을 workspace 안으로 복사하겠다는 의미이다.
아래 RUN은 Dockerfile로 빌드될 때 실행될 명령어들이다.

build 후 run을 했을 때, 기존에 workspace 디렉토리 안에 있는 모든 파일들이 존재하는 것을 확인할 수 있다.


| 명령어 | 역할 |
|---|---|
FROM | 어떤 이미지를 베이스로 할지 지정 |
RUN | 컨테이너 빌드 과정에서 실행할 명령어 |
COPY | 호스트의 파일을 이미지에 복사 |
WORKDIR | 이후 작업 디렉토리 지정 |
EXPOSE | 컨테이너에서 열어줄 포트 지정 |
CMD, ENTRYPOINT | 컨테이너 시작 시 실행할 기본 명령 설정 |
EXPOSE: 컨테이너가 열어놓은 포트를 명시하는 선언. 포트 매핑을 통해 외부 접근 가능ENTRYPOINT vs CMD: CMD는 기본 명령, ENTRYPOINT는 고정 실행 진입점docker run으로 생성된 컨테이너 내부는 개별적으로 파일, 프로세스, 네트워크 공간이 구분bash를 사용하더라도 컨테이너는 각기 다른 프로세스로 동작chroot, namespace, cgroup 등을 기반으로 구현됨이 실습을 통해 각 컨테이너가 서로 다른 디렉터리 구조와 파일 값을 가지며, 격리된 실행 환경이라는 것을 체험할 수 있었다.
이제 Dockerfile을 통해 환경을 지능적으로 구성하고, 클래식 프로젝트나 서버 리소스를 개발, 구축할 준비가 되어 있다!