1. JDK 17 베이스 이미지로 컨테이너 띄워보기
1) Dockerfile 생성
Docker Hub - openjdk : https://hub.docker.com/_/openjdk
openjdk - Official Image | Docker Hub
Docker Official Images are a curated set of Docker open source and drop-in solution repositories. Why Official Images? These images have clear documentation, promote best practices, and are designed for the most common use cases.
hub.docker.com
- docker-practice/Dockerfile
# JDK 17
# FROM openjdk:17-jdk # Deprecated 됨
FROM eclipse-temurin:17-jdk
2) Dockerfile 기반으로 이미지 생성
# docker build -t 이미지명:태그명 Dockerfile 존재하는 디렉토리 경로 : Dockerfile 기반으로 이미지 생성
태그명 생략시 latest 로 설정
- Windows PowerShell
# docker build -t sample .
# docker build -t sample:1.0 .
PS C:\Users\admin> cd docker-practice
PS C:\Users\admin\docker-practice> ls
디렉터리: C:\Users\admin\docker-practice
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2026-05-13 오후 9:52 77 Dockerfile
PS C:\Users\admin\docker-practice> docker build -t my-jdk17-server .
[+] Building 16.3s (6/6) FINISHED docker:desktop-linux
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 114B 0.0s
=> [internal] load metadata for docker.io/library/eclipse-temurin:17-jdk 2.4s
=> [auth] library/eclipse-temurin:pull token for registry-1.docker.io 0.0s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 2B 0.0s
=> [1/1] FROM docker.io/library/eclipse-temurin:17-jdk@sha256:b04a8c5d46e210873ffd1af6ad5f4d62c69ed3a6736993556eae60bba1373a23 11.0s
=> => resolve docker.io/library/eclipse-temurin:17-jdk@sha256:b04a8c5d46e210873ffd1af6ad5f4d62c69ed3a6736993556eae60bba1373a23 0.0s
=> => sha256:6f5c5aa4e145204b113f983c003ff8ad6489394294ef95ec030bc94e3daded54 41.55MB / 41.55MB 3.0s
=> => sha256:f2355d8d10e06f236ec5ba36f4f0bafd8aac2409348bfc007beb10966c5c063b 158B / 158B 0.7s
=> => sha256:a32c420591217dc7a625a084712f93306dad56d88f6154646e712a08453c9d6e 2.28kB / 2.28kB 0.9s
=> => sha256:0179dfb07a7de839d91eb0e16cd63a01695ffc321d3f980741a9fa1eab961a84 145.91MB / 145.91MB 10.7s
=> => sha256:1c24335ddd46023ff99bd665bd8ea6798464f7bbf501718edcf2eb4696e5f408 387B / 387B 0.5s
=> => sha256:1074d15b60c97f22a99cde76dc483f254de86c640a1ff14b4e25d6360fc1e675 24.10MB / 24.10MB 2.1s
=> exporting to image 13.3s
=> => exporting layers 0.0s
=> => exporting manifest sha256:49341b6ba721580712b6c6a6fb947b8c0140fb753e485b935997cdbcfbfc462c 0.0s
=> => exporting config sha256:0b4a090763e7e549c6488fe430d461848f14e26d1afb615ae859b43a0de5883b 0.0s
=> => exporting attestation manifest sha256:be184c4427e9dbcac0b83c53d983de9c5d380aac7ceec4aacaa627f0dbc9fc58 0.1s
=> => exporting manifest list sha256:0879f7908658fa0fcbdb20dae619834a0d49083ed5614529d0fc5700fb439c35 0.0s
=> => naming to docker.io/library/my-jdk17-server:latest 0.0s
=> => unpacking to docker.io/library/my-jdk17-server:latest 13.1s
View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/joifa6crkn0kiqrc6yq0obl0x
PS C:\Users\admin\docker-practice> docker image ls
i Info → U In Use
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
my-jdk17-server:latest 0879f7908658 682MB 212MB
PS C:\Users\admin\docker-practice> docker build -t my-jdk17-server:beta .
[+] Building 1.3s (5/5) FINISHED docker:desktop-linux
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 114B 0.0s
=> [internal] load metadata for docker.io/library/eclipse-temurin:17-jdk 0.9s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> CACHED [1/1] FROM docker.io/library/eclipse-temurin:17-jdk@sha256:b04a8c5d46e210873ffd1af6ad5f4d62c69ed3a6736993556eae60bba1373a23 0.0s
=> => resolve docker.io/library/eclipse-temurin:17-jdk@sha256:b04a8c5d46e210873ffd1af6ad5f4d62c69ed3a6736993556eae60bba1373a23 0.0s
=> exporting to image 0.2s
=> => exporting layers 0.0s
=> => exporting manifest sha256:49341b6ba721580712b6c6a6fb947b8c0140fb753e485b935997cdbcfbfc462c 0.0s
=> => exporting config sha256:0b4a090763e7e549c6488fe430d461848f14e26d1afb615ae859b43a0de5883b 0.0s
=> => exporting attestation manifest sha256:58f244cb8c0d3f63728d7f30cfdcb786dd7b4bcd3a9aedada491fca23bbdc92d 0.1s
=> => exporting manifest list sha256:18e650b59b5262c26301011aba55222e10700bb83dbe84e35dff3ca856ffc728 0.0s
=> => naming to docker.io/library/my-jdk17-server:beta 0.0s
=> => unpacking to docker.io/library/my-jdk17-server:beta 0.0s
View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/rxabol0u4jbb2iit57herd9kj
PS C:\Users\admin\docker-practice> docker image ls
i Info → U In Use
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
my-jdk17-server:beta 18e650b59b52 682MB 212MB
my-jdk17-server:latest 0879f7908658 682MB 212MB
3) 이미지 기반으로 컨테이너 띄우기
- Windows PowerShell
PS C:\Users\admin\docker-practice> docker run -d my-jdk17-server
969242a1b3f911055e8a858686c7bc636c81c612dafd850e050a542f7e77e9be
4) 컨테이너 조회
- Windows PowerShell
PS C:\Users\admin\docker-practice> docker ps # 실행되고 있는 컨테이너가 없다.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
PS C:\Users\admin\docker-practice> docker ps -a # 확인해보니 컨테이너가 종료되어 있다.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
969242a1b3f9 my-jdk17-server "/__cacert_entrypoin…" 31 seconds ago Exited (0) 23 seconds ago distracted_williamson
PS C:\Users\admin\docker-practice> docker logs 9692
May 13, 2026 1:15:51 PM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
| Welcome to JShell -- Version 17.0.19
| For an introduction type: /help intro
jshell>
What's next:
View and search logs for all containers in one place
with Docker Desktop's Logs view. docker-desktop://dashboard/logs
Docker 컨테이너는 내부적으로 필요한 명령을 다 수행하면 컨테이너가 자동으로 종료된다.
5) 컨테이너 내부에서 JDK 17 설치 확인
- Windows PowerShell
PS C:\Users\admin\docker-practice> docker exec -it 9692 bash
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug 9692
Learn more at https://docs.docker.com/go/debug-cli/
Error response from daemon: container 969242a1b3f911055e8a858686c7bc636c81c612dafd850e050a542f7e77e9be is not running
컨테이너가 실행되고 있지 않아서 볼 수 없다.
따라서 Dockerfile 에 명령어를 추가한다.
- docker-practice/Dockerfile
# JDK 17
# FROM openjdk:17-jdk # Deprecated 됨
FROM eclipse-temurin:17-jdk
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"]
- Windows PowerShell
PS C:\Users\admin\docker-practice> docker build -t my-jdk17-server . # 이미지 빌드
[+] Building 1.8s (6/6) FINISHED docker:desktop-linux
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 161B 0.0s
=> [internal] load metadata for docker.io/library/eclipse-temurin:17-jdk 1.3s
=> [auth] library/eclipse-temurin:pull token for registry-1.docker.io 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> CACHED [1/1] FROM docker.io/library/eclipse-temurin:17-jdk@sha256:b04a8c5d46e210873ffd1af6ad5f4d62c69ed3a6736993556eae60bba1373a23 0.0s
=> => resolve docker.io/library/eclipse-temurin:17-jdk@sha256:b04a8c5d46e210873ffd1af6ad5f4d62c69ed3a6736993556eae60bba1373a23 0.0s
=> exporting to image 0.2s
=> => exporting layers 0.0s
=> => exporting manifest sha256:f2d296410575aa20f08fbea0da548af91854b8ab4df7957a0f32c54d0b0f65f0 0.0s
=> => exporting config sha256:6b557b6dc8c1c0440753eef8a7a3e7fb600b7a7c0b0710b7d328e334a50eb547 0.0s
=> => exporting attestation manifest sha256:db65b097d5b1b334d43fa725407428556fd844a40ca65f32bb1fe3442e8dac7b 0.1s
=> => exporting manifest list sha256:09a2803e5d8e5b527e84210244101dfdf945e6ae377415502201a403a67350d1 0.0s
=> => naming to docker.io/library/my-jdk17-server:latest 0.0s
=> => unpacking to docker.io/library/my-jdk17-server:latest 0.0s
View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/roqpm5tlxlhy1rxwrx57c9iqv
PS C:\Users\admin\docker-practice> docker run -d my-jdk17-server # 이미지를 기반으로 컨테이너 생성 후 실행
e8f1ab86997c1f65d8c38faa262afad3205d79102e3f90e89f126a4c788893a9
PS C:\Users\admin\docker-practice> docker ps # 실행 중인 컨테이너 조회
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e8f1ab86997c my-jdk17-server "/bin/bash -c 'sleep…" 8 seconds ago Up 8 seconds tender_ride
PS C:\Users\admin\docker-practice> docker logs e8f1
What's next:
View and search logs for all containers in one place
with Docker Desktop's Logs view. docker-desktop://dashboard/logs
PS C:\Users\admin\docker-practice> docker exec -it e8f1 bash # 컨테이너 접속
root@e8f1ab86997c:/# java -version # JDK 설치되어 있는 지 확인
openjdk version "17.0.19" 2026-04-21
OpenJDK Runtime Environment Temurin-17.0.19+10 (build 17.0.19+10)
OpenJDK 64-Bit Server VM Temurin-17.0.19+10 (build 17.0.19+10, mixed mode, sharing)
root@e8f1ab86997c:/# exit
exit
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug e8f1
Learn more at https://docs.docker.com/go/debug-cli/
2. Node 베이스 이미지로 컨테이너 띄워보기
1) Dockerfile 생성
Docker Hub - node : https://hub.docker.com/_/node
node - Official Image | Docker Hub
Docker Official Images are a curated set of Docker open source and drop-in solution repositories. Why Official Images? These images have clear documentation, promote best practices, and are designed for the most common use cases.
hub.docker.com
- docker-practice/Dockerfile
# Node
FROM node
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"]
2) 이미지 생성 후 컨테이너 띄우기
- Windows PowerShell
PS C:\Users\admin\docker-practice> docker build -t my-node-server . # 이미지 생성
[+] Building 37.8s (6/6) FINISHED docker:desktop-linux
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 186B 0.0s
=> [internal] load metadata for docker.io/library/node:latest 2.3s
=> [auth] library/node:pull token for registry-1.docker.io 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [1/1] FROM docker.io/library/node:latest@sha256:f6f9fae352b319e817eec5efc7721b3f06bc53104f2f800d0f778f3915835804 28.6s
=> => resolve docker.io/library/node:latest@sha256:f6f9fae352b319e817eec5efc7721b3f06bc53104f2f800d0f778f3915835804 0.0s
=> => sha256:e522fcbb872d351bda998606f7c6b3cca894679694b79075b9c3be1969fa6e92 448B / 448B 0.4s
=> => sha256:5470790761244112ed0b9ea9218282e5185dc7fd1e91840e855a32550e2ecd73 236.15MB / 236.15MB 28.3s
=> => sha256:caf6c0a95e34418907d5abfe604d08c5cc6bf9d689943856fcd842eb2be82c6c 25.62MB / 25.62MB 2.3s
=> => sha256:82a92b93bf7181c9d6b4525236a1a2fec85dc591d4deee481e828e707853f42c 67.79MB / 67.79MB 8.2s
=> => sha256:307f8152a55ef1e9eeb1acbbee7bc81232615329eaeb00d8dd93b46be297f34c 49.30MB / 49.30MB 8.9s
=> => sha256:9479445867dacd58352d8b0c3f6a6c1166f9ebe1d5c22303b96a9178f870c251 3.32kB / 3.32kB 0.5s
=> => sha256:a335255d0ec2da7ecdea3ce8387c3777928dea3f0cd33516b0d316c4ecc0d186 62.88MB / 62.88MB 5.5s
=> exporting to image 34.9s
=> => exporting layers 0.0s
=> => exporting manifest sha256:95e06b337b74e7f29897ea12f867acc3b8617bfcff3c16cd787c10d55c30d054 0.0s
=> => exporting config sha256:2511c11e1d30b9ca14278274f83cd28f75c43860bd67a5664ca694869dd990db 0.0s
=> => exporting attestation manifest sha256:7b0aa843fa57fcdd4af9478b2f233ced1d39aef3b566703960e54679fee9e6a7 0.1s
=> => exporting manifest list sha256:9a1e49574c81a560be2cf78e6f1dc9cd563603ff75fb4072d081332e87641cb6 0.0s
=> => naming to docker.io/library/my-node-server:latest 0.0s
=> => unpacking to docker.io/library/my-node-server:latest 34.7s
View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/1bb9ue3w8097c18pgtbuj8zad
PS C:\Users\admin\docker-practice> docker image ls
i Info → U In Use
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
my-jdk17-server:beta 18e650b59b52 682MB 212MB U
my-jdk17-server:latest 09a2803e5d8e 682MB 212MB U
my-node-server:latest 9a1e49574c81 1.77GB 442MB
PS C:\Users\admin\docker-practice> docker run -d my-node-server # 이미지를 기반으로 컨테이너 생성 후 실행
10b3825e00f9b581524313e59a937d71703a9eda9e38560683cfbba30602192c
PS C:\Users\admin\docker-practice> docker ps # 실행 중인 컨테이너 조회
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
10b3825e00f9 my-node-server "/bin/bash -c 'sleep…" 5 seconds ago Up 4 seconds pensive_ride
PS C:\Users\admin\docker-practice> docker exec -it 10b3 bash # 컨테이너 접속
root@10b3825e00f9:/# node -v # Node 설치되어 있는 지 확인
v26.1.0
비전공자도 이해할 수 있는 Docker 입문/실전| JSCODE 박재성 - 인프런 강의
현재 평점 4.9점 수강생 14,463명인 강의를 만나보세요. 비전공자 입장에서도 쉽게 이해할 수 있고, 실전에서 바로 적용 가능한 Docker 입문/실전 강의를 만들어봤습니다! Docker 기본 개념, Spring Boot를
www.inflearn.com
'강의 실습 > 비전공자도 이해할 수 있는 Docker 입문 실전' 카테고리의 다른 글
| COPY 파일 복사(이동) (0) | 2026.05.14 |
|---|---|
| 종료된 컨테이너에 들어가서 디버깅하고 싶을 때 (0) | 2026.05.13 |
| FROM : 베이스 이미지 생성 (0) | 2026.05.12 |
| Dockerfile이란? (0) | 2026.05.12 |
| [실습] Docker로 MongoDB 실행시켜보기 (0) | 2026.05.11 |
댓글