출처 >>> https://herojoon-dev.tistory.com/254#google_vignette
도커 설치하기
도커 설치 파일 다운로드 후 실행
https://docs.docker.com/get-started/get-docker/
이후 재부팅
WSL 설치 ( 리눅스 VM )
windows wsl 설치 (https://learn.microsoft.com/ko-kr/windows/wsl/setup/environment)

업뎃
sudo apt update && sudo apt upgrade
기본적인 도커 용어
- Docker Hub(도커 허브): Docker 이미지 저장소
- Docker Image(도커 이미지): 애플리케이션 실행에 필요한 모든 것(애플리케이션 구성 파일, 라이브러리, 설정 정보 등)을 포함한 소프트웨어 패키지입니다.
- Docker Container(도커 컨테이너): Docker 이미지를 기반으로 실행되는 독립적인 애플리케이션 환경입니다.
1. 컨테이너란?
도커 가이드를 따라가보겠다.
1. 프로그램에서 가이드를 위해서 Welcome-to-docker 컨테이너를 생성해주었다.

2. 컨테이너 실행해보기 >> 이 컨테이너는 간단한 웹 어플리케이션이라고 한다. 8080을 눌러서 실행해본다.

눌러보면 웹 브라우저가 실행된다

3. 컨테이너라는 건, 독립적으로 격리된 환경이다. 코드를 실행할 수 있는!



이런식으로 로그도 볼 수 있고 컨테이너에 포함된 파일들도 볼 수 있다.
4. 컨테이너 중지하기.
컨테이너는 내가 실행을 중지하기 전까지 계속 실행된다.

2. 컨테이너 실행해보기 - 이미지를 사용하자



깃으로 프로젝트를 클론하고 IDE에서 열어보면 도커파일이 있는 걸 알 수 있다.
이 도커 파일을 나중에 직접 작성하면 된다... (docker init을 하면 쉽게 작성할 수도 있다)
프로젝트 폴더 안에서, docker build 명령어를 사용해서 이미지를 생성할 수 있다.
docker build -t welcome-to-docker .
-t : 이미지에 이름을 달아준다.
. : docker가 dockerfile을 찾을 수 있는 장소를 말해준다


이미지가 생성됐다
새롭게 생성된 이미지는 IMAGES탭에서 확인할 수 있다

실행을 눌러서 포트를 지정해줄 수 있따

컨테이너 탭에 가보면 컨테이너가 실행중인 걸 볼 수 있따

3. 도커 허브에서 이미지 다운 받아서 실행해보기
도커 이미지를 모아두는 도커 허브에서 이미지를 다운 받아서 실행해보자
도커 데스크탑에서 검색하면 도커허브에 있는 이미지들을 볼 수 있다.
실행버튼을 눌러서 바로 실행해보자


이미지가 실행되는 걸 볼 수 있다
4. 여러개의 도커 컨테이너를 한 번에 실행하는 docker compose
지금까지는 run을 눌러서 컨테이너를 개별로 실행해야했다.
하나의 명령어로 다수의 커테이너를 실행할 수 있다면 얼마나 좋을까? 이것이 docker compose 명령어다
이 실습을 위해 깃 레포 하나를 클론하자


IDE에서 열어보면 compose.yaml파일이 있다.
이 파일이 docker에게 이 어플리케이션을 어떻게 실행하는지를 알려준다!


docker compose up -d 명령어를 사용해서 compose 파일에 나열된 서비스를 빌드하고 실행해준다
***
CLI에서 docker compose up을 입력하지 않고, docker desktop에서 docker compose up을 실행할 수는 없는걸까? (XXX)
- CMD에서 docker compose up 실행
- Docker Engine이 컨테이너 생성
- Docker Desktop은 그 결과를 보여준다 (아래 이미지)
이 결과로, compose로 실행된 컨테이너 그룹이 표시된다 (아래 이미지)
start, stop, restart가 가능하다.
즉... 도커 데스크탑에서는 “이미 떠 있는 compose 프로젝트 관리”만 가능하다.

두개의 컨테이너가 실행되고 있는 것을 알 수 있다.
포트를 눌러보면 간단한 웹 페이지를 볼 수 있다.
입력해둔 정보가 사라지지 않고 유지되는 걸 알 수 있다.

코드 수정사항을 바로 반영하도록 docker를 watch모드로 설정할 수도 있다.


수정이 된 걸 알 수 있다.
cmd에서 ctrl c 를 눌러서 watch 모드를 취소하자
컨테이너를 삭제할 수도 있다.
그리고 다시 docker compose up 명령어를 사용하여 또 컨테이너를 생성할 수 있다.
이 때 db에 저장됐던 내용은 삭제되는 걸 알 수 있다.
5. 도커가 직접 관리하게되는 로컬상 디렉터리 - 볼륨
그러나 앱이 재실행될 때마다 db 데이터가 다 삭제되는 걸 바라는 사람은 없을 것이다.
이제 db 데이터 컨테이너에서 데이터를 유지할 수 있는 방법을 알아보자




도커는 우리의 로컬 파일시스템과 완전히 모든 것을 격리시키기 때문에 이런 일이 발생한다.
데이터를 유지하기 위해 우리는 볼륨을 사용할 수 있다.
볼륨은 우리의 로컬 파일시스템에 도커가 관장하는 영역이다.
볼륨을 추가하기 위해서는
compose.yml 파일에 volumes를 추가해주면 된다.
6. 도커 컨테이너 디렉터리를 내 로컬 디렉터리로 갈아치우기 - bind mount
도커 컨테이너가 나의 로컬 파일에 접근하는 방법을 알아보자.
이 때 bind mount라는 기능을 사용하면 되는데...
bind mount는 host의 파일시스템에 컨테이너와 디렉터리를 공유하게 해준다.
예제 소스 코드와 함께 알아본다 (git clone https://github.com/docker/bindmount-apps)


bind mount는 “경로를 복사”하는 게 아니라
컨테이너 안의 특정 디렉터리를 로컬 디렉터리로 대체하는 것이다.
도커가 로컬에 /usr/src/app 같은 폴더를 만들어주는 것이 아니고
/usr/src/app은 이미지 또는 컨테이너 내부 경로이며
로컬에는 절대 생기지 않는다
- ./app:/usr/src/app
→ 로컬 폴더가 컨테이너를 덮어쓴다 - /usr/src/app/node_modules
→ 덮어써진 것 중 node_modules만 다시 살린다
7. 내 프로젝트를 컨테이너화하는 방법. docker init
Dockerfile이나 compose.yml 파일을 직접 작성하는 건 어려운 일이다.
그래서 존재하는 명령어가 있으니 docker init이다.
프로젝트 파일에 가서 docker init을 입력해보자


몇가지 질문 후 init이 되면 compose.yml파일이 달라져있는 걸 알 수 있다.


아래 레퍼런스 사이트를 보고 커스터마이징 할 수 있다
https://docs.docker.com/reference/dockerfile
https://docs.docker.com/reference/compose-file/
8. Docker hub에 내 이미지 올리기
도커 이미지를 올리기 위해서 이미지를 내 도커계정아이디로 변경해준다.
docker tag docker/welcome-to-docker YOUR-USERNAME/welcome-to-docker

그 후에 도커허브로 푸시해준다.

허브에 내 이미지를 검색해보면 결과가 나오는 걸 알 수 있다.
이상으로 도커 튜토리얼이 끝났다!
더 자세한 java 설명은 다음에서 확인해보자
'┝ 웹서비스 인프라' 카테고리의 다른 글
| [docker] Web server failed to start. Port 8080 was already in use (0) | 2026.01.14 |
|---|---|
| [docker newbie] 살아있기만 한 컨테이너 만들기 (0) | 2026.01.12 |
| Docker란 (1) | 2023.09.18 |
| [amazon] ec2와 s3의 차이점 (0) | 2023.09.01 |
| [ubuntu] '~'와 '/' 중 root 디렉토리는? (0) | 2023.09.01 |