본문 바로가기
강의 실습/비전공자도 이해할 수 있는 Docker 입문 실전

[실습] AWS EC2에 Spring Boot 배포하기

by jint 2026. 6. 9.

1. Docker CLI 로 배포
1) 프로젝트 셋팅
Spring initializr : https://start.spring.io/


Project: Gradle - Groovy
Language: Java
Spring Boot: 4.0.6
Project Metadata)
Group: com.example (보통 기업 도메인 들어감)
Artifact: docker-ec2-spring-boot-server (빌드 결과물, 프로젝트명)
Package name: com.example.docker-ec2-spring-boot-server
Packaging: Jar
Configuration: YAML
Java: 17
Dependencies(사용할 라이브러리): Spring Web(웹 프로젝트), Spring Boot DevTools

Java 17 버전을 선택

2) 간단한 코드 작성
- src/main/java/com/example/docker_ec2_spring_boot_server/AppController.java

package com.example.docker_ec2_spring_boot_server;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class AppController {

    @GetMapping("/")
    public String home() {
        return "Hello, World!";
    }

}


3) Dockerfile 작성
- Dockerfile

# FROM openjdk:17-jdk
FROM eclipse-temurin:17-jdk

COPY build/libs/*SNAPSHOT.jar /app.jar

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "/app.jar"]


컨테이너 절대 경로 사용

4) Spring Boot 프로젝트 빌드
- Windows PowerShell

PS C:\Users\admin\IdeaProjects\docker-ec2-spring-boot-server> ./gradlew clean build
Starting a Gradle Daemon, 1 incompatible and 1 stopped Daemons could not be reused, use --status for details
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended

BUILD SUCCESSFUL in 12s
8 actionable tasks: 7 executed, 1 up-to-date
Consider enabling configuration cache to speed up this build: https://docs.gradle.org/9.5.1/userguide/configuration_cache_enabling.html
PS C:\Users\admin\IdeaProjects\docker-ec2-spring-boot-server> aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com
Login Succeeded
PS C:\Users\admin\IdeaProjects\docker-ec2-spring-boot-server> docker build -t docker-server .
[+] Building 4.1s (8/8) FINISHED                                                                                                                                                                               docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                                                                                           0.1s
 => => transferring dockerfile: 189B                                                                                                                                                                                           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.1s
 => => transferring context: 2B                                                                                                                                                                                                0.0s 
 => [internal] load build context                                                                                                                                                                                              1.5s 
 => => transferring context: 19.81MB                                                                                                                                                                                           1.5s
 => CACHED [1/2] FROM docker.io/library/eclipse-temurin:17-jdk@sha256:b04a8c5d46e210873ffd1af6ad5f4d62c69ed3a6736993556eae60bba1373a23                                                                                         0.1s 
 => => resolve docker.io/library/eclipse-temurin:17-jdk@sha256:b04a8c5d46e210873ffd1af6ad5f4d62c69ed3a6736993556eae60bba1373a23                                                                                                0.1s 
 => [2/2] COPY build/libs/*SNAPSHOT.jar /app.jar                                                                                                                                                                               0.1s 
 => exporting to image                                                                                                                                                                                                         0.9s 
 => => exporting layers                                                                                                                                                                                                        0.5s
 => => exporting manifest sha256:e8f1f829591ebe06b7b769499726765e5764c8317db7bf68ec632e57772c0e91                                                                                                                              0.0s
 => => exporting config sha256:dc82e1287a088b76c8f1aee9786e011f09567cfd0b09ff7e4831d593f0ee41a8                                                                                                                                0.0s
 => => exporting attestation manifest sha256:30a7e2443be496bdcd3f48f01f156c255ef9e189cb59ea501efbbf9a29740162                                                                                                                  0.1s 
 => => exporting manifest list sha256:58b03d0db56f2ba4c9b896b5a03b88b2077c842f2da72d84af39ca3c3eef8cdb                                                                                                                         0.0s 
 => => naming to docker.io/library/docker-server:latest                                                                                                                                                                        0.0s 
 => => unpacking to docker.io/library/docker-server:latest                                                                                                                                                                     0.1s 
                                                                                                                                                                                                                                    
View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/kl9ztdxm5vr2x1xsu8584yi5y
PS C:\Users\admin\IdeaProjects\docker-ec2-spring-boot-server> docker tag docker-server:latest 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest
PS C:\Users\admin\IdeaProjects\docker-ec2-spring-boot-server> docker push 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest
The push refers to repository [984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server]
0179dfb07a7d: Layer already exists 
1c24335ddd46: Layer already exists 
2513cd7e09b0: Pushed 
84184eda653f: Pushed 
1074d15b60c9: Layer already exists 
f2355d8d10e0: Layer already exists 
a32c42059121: Layer already exists 
6f5c5aa4e145: Layer already exists 
latest: digest: sha256:58b03d0db56f2ba4c9b896b5a03b88b2077c842f2da72d84af39ca3c3eef8cdb size: 856


5) AWS EC2에서 AWS CLI 설치 및 액세스 키 등록
참고 : https://stbhg5.tistory.com/1067

 

[실습] AWS ECR(Elastic Container Registry) 사용해보기

1. AWS CLI 설치 최신 버전의 AWS CLI 설치 또는 업데이트 : https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html 최신 버전의 AWS CLI 설치 또는 업데이트 - AWS Command Line Interface이전 버전에서

stbhg5.tistory.com


- 터미널

# AWS CLI 설치
$ sudo apt install unzip
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install
$ aws --version # 잘 출력된다면 정상 설치된 상태

# AWS CLI로 액세스 키 등록
$ aws configure
AWS Access Key ID [None]: 액세스 키
AWS Secret Access Key [None]: 비밀 액세스 키
Default region name [None]: ap-northeast-2
Default output format [None]:


6) AWS ECR 로부터 이미지 다운받아 컨테이너 띄우기
- Ubuntu

ubuntu@ip-172-31-41-193:~$ aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com

WARNING! Your credentials are stored unencrypted in '/home/ubuntu/.docker/config.json'.
Configure a credential helper to remove this warning. See
https://docs.docker.com/go/credential-store/

Login Succeeded
ubuntu@ip-172-31-41-193:~$ docker pull 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest
latest: Pulling from docker-server
84184eda653f: Pull complete 
6f5c5aa4e145: Pull complete 
1c24335ddd46: Pull complete 
1074d15b60c9: Pull complete 
0179dfb07a7d: Pull complete 
f2355d8d10e0: Pull complete 
a32c42059121: Pull complete 
2513cd7e09b0: Download complete 
Digest: sha256:58b03d0db56f2ba4c9b896b5a03b88b2077c842f2da72d84af39ca3c3eef8cdb
Status: Downloaded newer image for 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest
984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest
ubuntu@ip-172-31-41-193:~$ docker image ls
                                                                                                                                                                                               i Info →   U  In Use
IMAGE                                                                    ID             DISK USAGE   CONTENT SIZE   EXTRA
984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest   58b03d0db56f        719MB          230MB
ubuntu@ip-172-31-41-193:~$ docker run -d -p 8080:8080 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest
6b7b2be15c1dfa502096ac32ea6eaf8187f8466c47ab7b6208f706a93942b7aa


* 에러 발생한다면?
에러 메시지 : WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64/v3) and no specific platform was requested

CPU 아키텍처 환경이 다르다는 뜻으로, 이미지 빌드는 맥북 M1과 같은 ARM 기반 환경에서 진행하고, 이미지 실행은 ARM 기반 환경이 아닌 곳에서 할 때 위와 같은 에러가 발생한다.
에러 해결을 위해서, 이미지를 실행시키고자 하는 CPU 아키텍처에 맞춰 이미지를 빌드해야 한다. 로컬 환경에서 다시 빌드한 뒤 AWS ECR 로 push 한다.

- Windows PowerShell

$ ./gradlew clean build
$ aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com
$ docker build --platform linux/amd64 -t docker-server .
$ docker tag docker-server:latest 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest
$ docker push 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest


* AWS EC2 의 CPU 아키텍처 확인하는 방법
- Ubuntu

ubuntu@ip-172-31-41-193:~$ lscpu
Architecture:                x86_64
  CPU op-mode(s):            32-bit, 64-bit
  Address sizes:             46 bits physical, 48 bits virtual
  Byte Order:                Little Endian
CPU(s):                      1
  On-line CPU(s) list:       0
Vendor ID:                   GenuineIntel
  Model name:                Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
    CPU family:              6
    Model:                   79
    Thread(s) per core:      1
    Core(s) per socket:      1
    Socket(s):               1
    Stepping:                1
    BogoMIPS:                4599.99
    Flags:                   fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq s
                             sse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm pti fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt
Virtualization features:     
  Hypervisor vendor:         Xen
  Virtualization type:       full
Caches (sum of all):         
  L1d:                       32 KiB (1 instance)
  L1i:                       32 KiB (1 instance)
  L2:                        256 KiB (1 instance)
  L3:                        45 MiB (1 instance)
NUMA:                        
  NUMA node(s):              1
  NUMA node0 CPU(s):         0
Vulnerabilities:             
  Gather data sampling:      Not affected
  Ghostwrite:                Not affected
  Indirect target selection: Mitigation; Aligned branch/return thunks
  Itlb multihit:             KVM: Mitigation: VMX unsupported
  L1tf:                      Mitigation; PTE Inversion
  Mds:                       Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
  Meltdown:                  Mitigation; PTI
  Mmio stale data:           Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
  Old microcode:             Not affected
  Reg file data sampling:    Not affected
  Retbleed:                  Not affected
  Spec rstack overflow:      Not affected
  Spec store bypass:         Vulnerable
  Spectre v1:                Mitigation; usercopy/swapgs barriers and __user pointer sanitization
  Spectre v2:                Mitigation; Retpolines; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Retpoline
  Srbds:                     Not affected
  Tsa:                       Not affected
  Tsx async abort:           Not affected
  Vmscape:                   Not affected


x86_64 = linux/amd64

7) 잘 작동하는 지 확인
- Ubuntu

ubuntu@ip-172-31-41-193:~$ docker ps
CONTAINER ID   IMAGE                                                                    COMMAND                CREATED         STATUS         PORTS                                         NAMES
6b7b2be15c1d   984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest   "java -jar /app.jar"   3 minutes ago   Up 2 minutes   0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp   adoring_visvesvaraya
ubuntu@ip-172-31-41-193:~$ docker logs 6b7b

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/

 :: Spring Boot ::                (v4.0.6)

2026-06-09T13:59:02.014Z  INFO 1 --- [docker-ec2-spring-boot-server] [           main] e.d.DockerEc2SpringBootServerApplication : Starting DockerEc2SpringBootServerApplication v0.0.1-SNAPSHOT using Java 17.0.19 with PID 1 (/app.jar started by root in /)
2026-06-09T13:59:02.028Z  INFO 1 --- [docker-ec2-spring-boot-server] [           main] e.d.DockerEc2SpringBootServerApplication : No active profile set, falling back to 1 default profile: "default"
2026-06-09T13:59:03.838Z  INFO 1 --- [docker-ec2-spring-boot-server] [           main] o.s.boot.tomcat.TomcatWebServer          : Tomcat initialized with port 8080 (http)
2026-06-09T13:59:03.863Z  INFO 1 --- [docker-ec2-spring-boot-server] [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2026-06-09T13:59:03.864Z  INFO 1 --- [docker-ec2-spring-boot-server] [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/11.0.21]
2026-06-09T13:59:04.204Z  INFO 1 --- [docker-ec2-spring-boot-server] [           main] b.w.c.s.WebApplicationContextInitializer : Root WebApplicationContext: initialization completed in 2045 ms
2026-06-09T13:59:05.448Z  INFO 1 --- [docker-ec2-spring-boot-server] [           main] o.s.boot.tomcat.TomcatWebServer          : Tomcat started on port 8080 (http) with context path '/'
2026-06-09T13:59:05.490Z  INFO 1 --- [docker-ec2-spring-boot-server] [           main] e.d.DockerEc2SpringBootServerApplication : Started DockerEc2SpringBootServerApplication in 4.644 seconds (process running for 5.933)
2026-06-09T14:00:15.440Z  INFO 1 --- [docker-ec2-spring-boot-server] [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2026-06-09T14:00:15.440Z  INFO 1 --- [docker-ec2-spring-boot-server] [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2026-06-09T14:00:15.445Z  INFO 1 --- [docker-ec2-spring-boot-server] [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Completed initialization in 5 ms

 

Docker CLI 로 배포


8) 컨테이너 종료 후 삭제, 이미지 삭제
- Ubuntu

ubuntu@ip-172-31-41-193:~$ docker ps
CONTAINER ID   IMAGE                                                                    COMMAND                CREATED          STATUS          PORTS                                         NAMES
6b7b2be15c1d   984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest   "java -jar /app.jar"   13 minutes ago   Up 13 minutes   0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp   adoring_visvesvaraya
ubuntu@ip-172-31-41-193:~$ docker rm -f 6b7b
6b7b
ubuntu@ip-172-31-41-193:~$ docker image ls
                                                                                                                                                                                               i Info →   U  In Use
IMAGE                                                                    ID             DISK USAGE   CONTENT SIZE   EXTRA
984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest   58b03d0db56f        719MB          230MB        
ubuntu@ip-172-31-41-193:~$ docker image rm 58b0
Untagged: 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest
Deleted: sha256:58b03d0db56f2ba4c9b896b5a03b88b2077c842f2da72d84af39ca3c3eef8cdb



2. Docker Compose 로 배포
Docker Compose 를 사용하면 복잡한 명령어로 실행시키던 것을 간소화 시킬 수 있다.
따라서 Docker CLI 가 아닌 Docker Compose 를 활용하여 Spring Boot 서버를 배포한다.

1) 폴더 생성
- Ubuntu

ubuntu@ip-172-31-41-193:~$ ls
aws  awscliv2.zip
ubuntu@ip-172-31-41-193:~$ mkdir docker-server


2) AWS EC2 에 compose.yml 생성
- Ubuntu

ubuntu@ip-172-31-41-193:~$ cd docker-server
ubuntu@ip-172-31-41-193:~/docker-server$ vi compose.yml


- Ubuntu Vim

services:
  docker-server:
    image: 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest
    ports:
      - 8080:8080
~
~
~
~
...
:wq


- Ubuntu

ubuntu@ip-172-31-41-193:~/docker-server$ cat compose.yml
services:
  docker-server:
    image: 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest
    ports:
      - 8080:8080


3) 실행
- Ubuntu

ubuntu@ip-172-31-41-193:~/docker-server$ ls
compose.yml
ubuntu@ip-172-31-41-193:~/docker-server$ docker compose up --build -d
[+] up 11/11
 ✔ Image 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest Pulled                                                                                                                         8.8s
 ✔ Network docker-server_default                                                Created                                                                                                                        0.1s
 ✔ Container docker-server-docker-server-1                                      Started                                                                                                                        0.4s
ubuntu@ip-172-31-41-193:~/docker-server$ docker compose ps
NAME                            IMAGE                                                                    COMMAND                SERVICE         CREATED          STATUS          PORTS
docker-server-docker-server-1   984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest   "java -jar /app.jar"   docker-server   54 seconds ago   Up 53 seconds   0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp
ubuntu@ip-172-31-41-193:~/docker-server$ docker ps
CONTAINER ID   IMAGE                                                                    COMMAND                CREATED          STATUS          PORTS                                         NAMES
6791b13c4df4   984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest   "java -jar /app.jar"   56 seconds ago   Up 55 seconds   0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp   docker-server-docker-server-1

 

Docker Compose 로 배포


4) 새로운 기능 업데이트
- src/main/java/com/example/docker_ec2_spring_boot_server/AppController.java

package com.example.docker_ec2_spring_boot_server;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class AppController {

    @GetMapping("/")
    public String home() {
        return "Docker Compose, World!";
    }

}


- Windows PowerShell

PS C:\Users\admin\IdeaProjects\docker-ec2-spring-boot-server> ./gradlew clean build
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended

BUILD SUCCESSFUL in 5s
8 actionable tasks: 8 executed
Consider enabling configuration cache to speed up this build: https://docs.gradle.org/9.5.1/userguide/configuration_cache_enabling.html
PS C:\Users\admin\IdeaProjects\docker-ec2-spring-boot-server> aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com
Login Succeeded
PS C:\Users\admin\IdeaProjects\docker-ec2-spring-boot-server> docker build --platform linux/amd64 -t docker-server .
[+] Building 4.0s (8/8) FINISHED                                                                                                                                                                               docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                                                                                           0.0s
 => => transferring dockerfile: 189B                                                                                                                                                                                           0.0s
 => [internal] load metadata for docker.io/library/eclipse-temurin:17-jdk                                                                                                                                                      1.2s
 => [auth] library/eclipse-temurin:pull token for registry-1.docker.io                                                                                                                                                         0.0s
 => [internal] load .dockerignore                                                                                                                                                                                              0.0s
 => => transferring context: 2B                                                                                                                                                                                                0.0s
 => [internal] load build context                                                                                                                                                                                              1.5s 
 => => transferring context: 19.81MB                                                                                                                                                                                           1.5s
 => CACHED [1/2] FROM docker.io/library/eclipse-temurin:17-jdk@sha256:b04a8c5d46e210873ffd1af6ad5f4d62c69ed3a6736993556eae60bba1373a23                                                                                         0.0s
 => => resolve docker.io/library/eclipse-temurin:17-jdk@sha256:b04a8c5d46e210873ffd1af6ad5f4d62c69ed3a6736993556eae60bba1373a23                                                                                                0.0s 
 => [2/2] COPY build/libs/*SNAPSHOT.jar /app.jar                                                                                                                                                                               0.1s 
 => exporting to image                                                                                                                                                                                                         0.8s 
 => => exporting layers                                                                                                                                                                                                        0.5s
 => => exporting manifest sha256:62735a8ae1cc5396078d661825128987408795e5660d9b75b46af14085a4877a                                                                                                                              0.0s
 => => exporting config sha256:20e9a79d2f55a8e4d3175a5ecb6b351610742af91a50014c499b3a7a24f514e4                                                                                                                                0.0s
 => => exporting attestation manifest sha256:711eedb79f32baba8fd1fc8f90cc1002af33c43d9155c267e2a62567e9146bb2                                                                                                                  0.1s 
 => => exporting manifest list sha256:908b305ca4f70807b0845ca65ba70d919504f858afefe8d300169c9eeb76de75                                                                                                                         0.0s 
 => => naming to docker.io/library/docker-server:latest                                                                                                                                                                        0.0s 
 => => unpacking to docker.io/library/docker-server:latest                                                                                                                                                                     0.1s 
                                                                                                                                                                                                                                    
View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/syi2jub8kvksw9t31n1iee2v6
PS C:\Users\admin\IdeaProjects\docker-ec2-spring-boot-server> docker tag docker-server:latest 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest
PS C:\Users\admin\IdeaProjects\docker-ec2-spring-boot-server> docker push 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest
The push refers to repository [984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server]
a32c42059121: Layer already exists 
f2355d8d10e0: Layer already exists 
6f5c5aa4e145: Layer already exists 
0179dfb07a7d: Layer already exists 
1c24335ddd46: Layer already exists 
15aacb7c3124: Pushed 
2298222cc119: Pushed 
1074d15b60c9: Layer already exists 
latest: digest: sha256:908b305ca4f70807b0845ca65ba70d919504f858afefe8d300169c9eeb76de75 size: 856


5) AWS EC2 에 업데이트 된 내용 반영

- Ubuntu

ubuntu@ip-172-31-41-193:~/docker-server$ ls
compose.yml
ubuntu@ip-172-31-41-193:~/docker-server$ docker compose pull
[+] pull 3/3
 ✔ Image 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest Pulled                                                                                                                         0.9s
ubuntu@ip-172-31-41-193:~/docker-server$ docker compose up --build -d
[+] up 1/1
 ✔ Container docker-server-docker-server-1 Started                                                                                                                                                             0.6s
ubuntu@ip-172-31-41-193:~/docker-server$ docker compose ps
NAME                            IMAGE                                                                    COMMAND                SERVICE         CREATED         STATUS         PORTS
docker-server-docker-server-1   984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest   "java -jar /app.jar"   docker-server   8 seconds ago   Up 6 seconds   0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp
ubuntu@ip-172-31-41-193:~/docker-server$ docker ps
CONTAINER ID   IMAGE                                                                    COMMAND                CREATED          STATUS         PORTS                                         NAMES
ae4e362898a0   984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest   "java -jar /app.jar"   10 seconds ago   Up 9 seconds   0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp   docker-server-docker-server-1


docker compose pull : compose.yml 에 작성된 서비스들의 이미지를 원격 레지스트리에서 업데이트 및 다운로드

 

Docker Compose 로 재배포


6) 컨테이너 종료 후 삭제, 이미지 삭제
- Ubuntu

ubuntu@ip-172-31-41-193:~/docker-server$ docker compose down
[+] down 2/2
 ✔ Container docker-server-docker-server-1 Removed                                                                                                                                                             0.2s
 ✔ Network docker-server_default           Removed                                                                                                                                                             0.0s
ubuntu@ip-172-31-41-193:~/docker-server$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
ubuntu@ip-172-31-41-193:~/docker-server$ docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
ubuntu@ip-172-31-41-193:~/docker-server$ docker image ls
                                                                                                                                                                                               i Info →   U  In Use
IMAGE                                                                    ID             DISK USAGE   CONTENT SIZE   EXTRA
984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest   908b305ca4f7        719MB          230MB        
ubuntu@ip-172-31-41-193:~/docker-server$ docker image rm 908b
Untagged: 984622551099.dkr.ecr.ap-northeast-2.amazonaws.com/docker-server:latest
Deleted: sha256:908b305ca4f70807b0845ca65ba70d919504f858afefe8d300169c9eeb76de75



참고링크 : https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-docker-%EC%9E%85%EB%AC%B8-%EC%8B%A4%EC%A0%84?cid=334085

 

비전공자도 이해할 수 있는 Docker 입문/실전| JSCODE 박재성 - 인프런 강의

현재 평점 4.9점 수강생 14,495명인 강의를 만나보세요. 비전공자 입장에서도 쉽게 이해할 수 있고, 실전에서 바로 적용 가능한 Docker 입문/실전 강의를 만들어봤습니다! Docker 기본 개념, Spring Boot를

www.inflearn.com

댓글