소개
3주차에 했던 도커설치를 따라해봤습니다
윈도우입니다
진행 방법
한국어 텍스트가 있는 검은 화면
윈도우에서 설치하려고 클코에게 물어봤습니다
https://docs.docker.com/desktop/setup/install/windows-install/
x86설치하시면 됩니다
arm은 특수한?경우라서 본인이 알겁니다
터미널에서 docker --version을 쳐서 숫자가 나오면 설치가 완료됩니다
Adobe Flash Player 설정 스크린샷
터미널에서 docker run hello-world을 쳤더니 이렇게 나오네요
명령어
docker run— 컨테이너를 만들고 실행합니다docker ps— 실행 중인 컨테이너 목록을 봅니다docker stop [이름]— 컨테이너를 멈춥니다docker rm [이름]— 컨테이너를 삭제합니다-d— 터미널을 점유하지 않고 백그라운드에서 실행합니다--name memos— 컨테이너에 이름을 붙입니다. 나중에 stop/rm할 때 씁니다-p 5230:5230— 호스트(내 컴퓨터) 포트 5230을 컨테이너(게스트) 5230번 포트에 연결합니다-v memos_data:/var/opt/memos— 컨테이너를 삭제해도 메모 데이터는 남깁니다
도커 용어
이미지 (Image) 애플리케이션을 실행하는 데 필요한 모든 것(코드, 런타임, 라이브러리, 설정)을 패키징한 읽기 전용 템플릿이에요. 붕어빵 틀에 비유하면 이해하기 쉬워요. docker pull nginx처럼 레지스트리에서 받아오거나, Dockerfile로 직접 만들 수 있고, 한 번 만들어지면 내용이 변하지 않아요.
컨테이너 (Container) 이미지를 기반으로 실제 실행되는 인스턴스예요. 붕어빵 틀(이미지)로 찍어낸 붕어빵 하나하나가 컨테이너인 셈이죠. 하나의 이미지로 여러 컨테이너를 동시에 띄울 수 있고, 각 컨테이너는 격리된 환경에서 독립적으로 돌아가요. 컨테이너 안에서 파일을 수정해도 원본 이미지에는 영향이 없어요.
포트 (Port) 컨테이너 내부의 네트워크 포 트를 호스트(내 컴퓨터)의 포트와 연결하는 개념이에요. 컨테이너는 기본적으로 외부와 격리되어 있어서, -p 8080:80 같이 포트 매핑을 해줘야 브라우저에서 접근할 수 있어요. 이 예시는 "호스트의 8080번으로 들어온 요청을 컨테이너의 80번으로 보내라"는 뜻이에요.
볼륨 (Volume) 컨테이너의 데이터를 영구적으로 보존하기 위한 저장소예요. 컨테이너는 삭제하면 내부 데이터가 전부 사라지는데, 볼륨을 연결하면 컨테이너가 삭제되더라도 데이터가 호스트에 남아있어요. -v my_data:/var/lib/mysql처럼 사용하며, 여러 컨테이너가 같은 볼륨을 공유할 수도 있어요. DB 데이터나 로그 같은 건 반드시 볼륨으로 관리해야 안전해요.
도커파일의 구조
Dockerfile은 이미지를 만들기 위한 "레시피 파일"
아래는 예시와 설명입니다
FROM node:18 # 1. 베이스 이미지 (어떤 환경 위에 만들 건지)
WORKDIR /app # 2. 작업 디렉토리 설정
COPY package.json . # 3. 필요한 파일 복사
RUN npm install # 4. 빌드 시 실행할 명령어
COPY . . # 5. 나머지 소스코드 복사
EXPOSE 3000 # 6. 컨테이너가 사용할 포트 명시
CMD ["node", "app.js"] # 7. 컨테이너 실행 시 실행할 명령어각 명령어의 역할을 정리하면:
FROM — 출발점이에요. 빈 OS부터 시작할 수도 있고, node:18처럼 이미 누군가 만들어둔 이미지 위에서 시작할 수도 있어요.
WORKDIR — 이후 명령어들이 실행될 디렉토리를 지정해요. cd /app과 비슷해요.
COPY / ADD — 내 컴퓨터의 파일을 이미지 안으로 넣어요.
RUN — 이미지를 빌드하는 도중에 실행할 명령어예요. 패키지 설치, 빌드 등에 사용돼요.
EXPOSE — 컨테이너가 어떤 포트를 쓸 건지 문서화하는 역할이에요. 실제 포트를 여는 건 docker run -p로 해야 해요.
CMD — 컨테이너가 시작될 때 실행할 기본 명령어예요. Dockerfile 당 하나만 유효해요.
ENV — 환경변수를 설정해요. ENV NODE_ENV=production 같은 식이에요.
docker-compose란
docker compose는 여러 개의 컨테이너를 한꺼번에 정의하고 실행하기 위한 도구예요.
예를 들어 웹 서비스를 만들 때 "웹 서버 + DB + Redis" 이렇게 3개의 컨테이너가 필요하다고 하면, 하나씩 docker run으로 띄우면 매번 길고 복잡한 명령어를 반복해야 해요. docker compose는 이걸 docker-compose.yml이라는 파일 하나에 전부 정리해서 한 번에 실행할 수 있게 해줘요.
아래는 예시예요
services:
web:
build: . # Dockerfile로 이미지 빌드
ports:
- "3000:3000" # 포트 매핑
depends_on:
- db # db가 먼저 뜬 다음에 실행
db:
image: mysql:8 # 기존 이미지 사용
environment:
MYSQL_ROOT_PASSWORD: 1234
volumes:
- db_data:/var/lib/mysql # 볼륨으로 데이터 보존
volumes:
db_data:이 파일 하나 만들어놓으면 docker compose up으로 전부 실행, docker compose down으로 전부 종료할 수 있어요.
컴퓨터 화면에 표시된 Docker 앱의 스크린샷
vscode에서 도커를 실행할 수 있습니다
설치하셔야해요
결과와 배운 점
모르는 개념은 찾아보면서 도커에 대한 정리를 하였습니다
도움 받은 글 (옵션)
재엽님이 올려주신 자료