<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Ls{Diary}</title>
    <link>https://lsdiary.tistory.com/</link>
    <description>안되면 될때까지 삽질했던 기록</description>
    <language>ko</language>
    <pubDate>Fri, 22 May 2026 09:43:43 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Ls._.Rain</managingEditor>
    <image>
      <title>Ls{Diary}</title>
      <url>https://tistory1.daumcdn.net/tistory/6672135/attach/75b62349c7754c7a9b09590f63cb9fc1</url>
      <link>https://lsdiary.tistory.com</link>
    </image>
    <item>
      <title>[BAEKJOON] 1377번 버블 소트</title>
      <link>https://lsdiary.tistory.com/137</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1377&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/1377&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;문제&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;N은 500,000보다 작거나 같은 자연수&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;아래와 같은 코드를 실행 시켰을때 출력되는 숫자는?&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1732189759677&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bool changed = false;
for (int i=1; i&amp;lt;=N+1; i++) {
    changed = false;
    for (int j=1; j&amp;lt;=N-i; j++) {
        if (A[j] &amp;gt; A[j+1]) {
            changed = true;
            swap(A[j], A[j+1]);
        }
    }
    if (changed == false) {
        cout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; '\n';
        break;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 시간제한 = 2초, 위 코드의 시간 복잡도 = O(N^2) 이므로 당연한(?) 얘기지만 그냥 구현은 안된다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;간단히 알아보는 정렬 방법&lt;/blockquote&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 버블 정렬 (Bubble Sort)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;방법&lt;/b&gt;: &lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: left;&quot;&gt;리스트가 정렬될 때까지 반복하며, &lt;/span&gt;인접한 두 원소를 비교하여 필요하면 자리를 바꾼다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시간 복잡도&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최악: &lt;span&gt;&lt;span&gt;O(n^2)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;최선: &lt;span&gt;&lt;span&gt;O(n)&lt;/span&gt;&lt;/span&gt;(정렬된 경우)&lt;/li&gt;
&lt;li&gt;평균: &lt;span&gt;&lt;span&gt;O(n^2)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 선택 정렬 (Selection Sort)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;방법&lt;/b&gt;: 매번 최솟값을 찾아 현재 위치와 교환.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시간 복잡도&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최악: &lt;span&gt;&lt;span&gt;O(n^2)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;최선: &lt;span&gt;&lt;span&gt;O(n^2)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;평균: &lt;span&gt;&lt;span&gt;O(n^2)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 삽입 정렬 (Insertion Sort)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;방법&lt;/b&gt;: 현재 요소를 적절한 위치에 삽입하여 부분 배열을 정렬 상태로 유지.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시간 복잡도&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최악: &lt;span&gt;&lt;span&gt;O(n^2)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;최선: &lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; (정렬된 경우)&lt;/li&gt;
&lt;li&gt;평균: &lt;span&gt;&lt;span&gt;O(n^2)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 병합 정렬 (Merge Sort)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;방법&lt;/b&gt;: 배열을 반으로 나눈 후 각각 정렬하고 합친다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시간 복잡도&lt;/b&gt;: &lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;lo&lt;span&gt;g&lt;/span&gt;&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; (모든 경우)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. 퀵 정렬 (Quick Sort)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;방법&lt;/b&gt;: 피벗을 기준으로 왼쪽은 작은 값, 오른쪽은 큰 값으로 분할 정렬합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시간 복잡도&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최악: &lt;span&gt;&lt;span&gt;O(n^2)&lt;/span&gt;&lt;/span&gt;&amp;nbsp;(이미 정렬된 경우)&lt;/li&gt;
&lt;li&gt;평균: &lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;lo&lt;span&gt;g&lt;/span&gt;&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 C++에서 &amp;lt;algorithm&amp;gt; 헤더에 있는 sort()함수는 기본적으로 퀵 정렬 + 삽입 정렬 식으로 섞여서 구현되어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 시간 복잡도 : &lt;b&gt;O(nlogn)&lt;/b&gt;을 보장한다!&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;아이디어&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;nlogn으로 정렬을 해야함.&lt;/li&gt;
&lt;li&gt;기존 버블 정렬의 순서를 따로 기억할 인덱싱을 놔둠.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;문제 풀이&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;결국 버블 정렬에서 바깥 for문이 몇 번 돌고 정렬이 종료되었냐 이므로, 원래 위치 -&amp;gt; 정렬 이후 위치가 가장 큰값 = 최종 반복 횟수!&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;
using namespace std;

int n;
// 숫자, 인덱스
vector&amp;lt;pair&amp;lt;int, int&amp;gt; &amp;gt; arr(500001);

bool cmp(pair&amp;lt;int, int&amp;gt; a, pair&amp;lt;int, int&amp;gt; b) {
    if (a.first == b.first) return a.second &amp;lt; b.second;
    return a.first &amp;lt; b.first;
}

// 오름차순 정렬하면서 총 반복 횟수
int main() {
    cin &amp;gt;&amp;gt; n;
    for (int i = 1; i &amp;lt;= n; i++) {
        int a;
        cin &amp;gt;&amp;gt; a;
        arr[i] = {a, i};
    }
    sort(arr.begin() + 1, arr.begin() + n + 1, cmp);
    int res = -1;
    for (int i = 1; i &amp;lt;= n; i++) {
        // (원래 인덱스 - 정렬 이후 인덱스)의 최댓값 -&amp;gt; 몇 번 반복인지 알기 위해
        if (res &amp;lt; arr[i].second - i) res = arr[i].second - i;
    }
    cout &amp;lt;&amp;lt; res + 1;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;트러블 슈팅&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 접근 방법은 맞았지만 뭐가 문젠지 계속 실패했다...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 부분은 검색을 통해서 알아내긴 했지만, C++에서 제공하는 sort()는&amp;nbsp;&lt;b&gt;불안정 정렬(unstable sort)&lt;/b&gt;이라는 점이다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;불안정 정렬?&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;배열 : [2, 1, 5, &lt;b&gt;4(처음 나오는 4), 4(두번째 나오는 4)&lt;/b&gt;, 3, 6]&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 배열에서 기존 sort()를 이용한다면 두개의 4는 처음 나오는 4인지 두번째 나오는 4인지 알 수도 없고, 보장해주지도 않는다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면? 아래와 같은 방법이 있다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;table_sort() 이라는 병합 정렬을 사용&lt;/li&gt;
&lt;li&gt;비교함수 커스터마이징&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 비교함수에 조건을 추가하여 커스터마이징 해줬다.&lt;/p&gt;
&lt;pre id=&quot;code_1732190749510&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bool cmp(pair&amp;lt;int, int&amp;gt; a, pair&amp;lt;int, int&amp;gt; b) {
    if (a.first == b.first) return a.second &amp;lt; b.second;
    return a.first &amp;lt; b.first;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 바로 if 부분이다. 이렇게 되면 같은 숫자가 들어와도 기존 인덱스 순서를 해치지 않고 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;정확한 인덱스의 이동거리&lt;/b&gt;&lt;/span&gt;를 알 수 있다!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1848&quot; data-origin-height=&quot;360&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dV15vi/btsKQ71FK4k/hCsUTQzkRTSdg7DGtKPJAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dV15vi/btsKQ71FK4k/hCsUTQzkRTSdg7DGtKPJAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dV15vi/btsKQ71FK4k/hCsUTQzkRTSdg7DGtKPJAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdV15vi%2FbtsKQ71FK4k%2FhCsUTQzkRTSdg7DGtKPJAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1848&quot; height=&quot;360&quot; data-origin-width=&quot;1848&quot; data-origin-height=&quot;360&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Algorithm/정렬</category>
      <category>Baekjoon</category>
      <category>sort</category>
      <category>백준</category>
      <category>버블정렬</category>
      <category>알고리즘</category>
      <category>정렬</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <author>Ls._.Rain</author>
      <guid isPermaLink="true">https://lsdiary.tistory.com/137</guid>
      <comments>https://lsdiary.tistory.com/137#entry137comment</comments>
      <pubDate>Thu, 21 Nov 2024 21:08:57 +0900</pubDate>
    </item>
    <item>
      <title>[JPA] 영속성 컨텍스트 최소화하기</title>
      <link>https://lsdiary.tistory.com/136</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;진행하고 있는 사이드 프로젝트에서 HTTP Method 중 GET요청에 대해 최적화를 진행해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 코드는 Entity 간의 연관관계가 1 : N 이었고, 흔히 말하는 N+1문제가 발생했다.(N+1 문제는 유명하니 검색을 통해 알아보자!)&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;해결 방법&lt;/blockquote&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Join Fetch&lt;/li&gt;
&lt;li&gt;EntityGraph&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Projection&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 여기서 3. projection의 방법을 선택했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무래도 DTO로 projection 하는것이 영속성 컨텍스트를 거치지않고 '비영속' 상태로 데이터를 얻을 수 있기 때문에 가장 속도가 빠르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;선행 개념&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;영속성 컨텍스트?&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 ORM부터 알아보자. ORM(Object Relational Mapping)은 객체와 데이터베이스 테이블의 매핑을 통해 엔티티 클래스 객체 안에 포함된 정보를 테이블에 저장하는 기술이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JPA는 이러한 기술 중 하나 이며, 테이블과 매핑되는 엔티티 객체 정보를 &lt;b&gt;영속성 컨텍스트&lt;/b&gt;를 통해 애플리케이션 내에서 오래 지속되도록 보관한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 1차 캐시로써 활용된다는 뜻이다. 그래서 한 번 조회된 객체는 디스크에서 가져오는 것이 아니라 캐시로써 있는 영속성 컨텍스트에서 가져오므로 성능 상 이점이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;DB&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영속성 컨텍스트와 데이터 베이스의 관계는 어떨까?&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;persist() : 엔티티를 영속성 컨텍스트에 저장&lt;/li&gt;
&lt;li&gt;detach() : 엔티티를 영속성 컨텍스트에서 분리&lt;/li&gt;
&lt;li&gt;remove() : 엔티티를 영속성 컨텍스트에서 삭제&lt;/li&gt;
&lt;li&gt;flush() : 엔티티를 영속성 컨텍스트 -&amp;gt; 데이터베이스에 반영&lt;/li&gt;
&lt;li&gt;commit() : flush()가 함께 발생하며, &lt;b&gt;트랜잭션의&lt;/b&gt; 변경 사항을 데이터베이스에 반영&lt;/li&gt;
&lt;li&gt;JPQL 쿼리 : 플러시 자동 호출&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 메서드를 통해 어떻게 동작하는지 알아봤다. 그렇다면 무조건 영속성 컨텍스트를 거치지 않고 DTO로 조회하는게 좋을까? &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;NO!&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 108px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;특징&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;네이티브 쿼리 DTO 조회&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;엔티티 조회&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;영속성 컨텍스트 포함 여부&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;Dirty Checking 지원&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;캐싱 효과&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;1차 캐시 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;조회 성능&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;대량 조회 시 유리&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;소량 조회 및 트랜잭션 관리에 유리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;트랜잭션 종료 시 동기화&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;자동으로 DB와 동기화&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 상황에 맞춰서 쓸 줄 아는 법이 중요하다. 이번 포스팅에서 주제는 GET요청에 대한 것이므로 트랜잭션 관리 보다는 빠르게 조회만 하면 되니 DTO로 nativeQuery를 사용해서 조회해보겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;    @Query(value = &quot;SELECT v.id AS id, v.name AS name, u.nickname AS userName, &quot; +
            &quot;t.team_name AS teamName, u.profile_image_url AS photoURL, &quot; +
            &quot;DATE_FORMAT(v.date, '%Y-%m-%dT%H:%i') AS partyDate, v.latitude AS latitude, &quot; +
            &quot;v.longitude AS longitude, v.location AS location, &quot; +
            &quot;v.short_location AS shortLocation &quot; +
            &quot;FROM viewing_party v &quot; +
            &quot;JOIN users u ON v.user_id = u.id &quot; +
            &quot;JOIN team t ON u.team_id = t.id &quot; +
            &quot;ORDER BY v.created_at DESC&quot;,
            countQuery = &quot;SELECT COUNT(*) FROM viewing_party v &quot; +
            &quot;JOIN users u ON v.user_id = u.id &quot; +
            &quot;JOIN team t ON u.team_id = t.id&quot;
            , nativeQuery = true)
    Page&amp;lt;NativeListDTO&amp;gt; findAllByOrderByCreatedAtDesc(Pageable pageable);

    interface NativeListDTO{
        Long getId();
        String getName();
        String getUserName();
        String getTeamName();
        String getPhotoURL();
        String getPartyDate();
        Double getLatitude();
        Double getLongitude();
        String getLocation();
        String getShortLocation();
    }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좀 많이 복잡하다만,,, 성능은 확실하다. 우선 왜 저렇게 작성했는지 살펴보자.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;nativeQuery = true : 기존 JPQL을 사용하는 것이 아니라, DB에서 사용되는 원형의 쿼리를 사용한다.&lt;/li&gt;
&lt;li&gt;value : 쿼리 작성&lt;/li&gt;
&lt;li&gt;countQuery : 페이징을 위해서 필요한 옵션이다. Pageable로 호출하는 page와, size에 대해 계산할 수 있게 쿼리 결과에 대해 전체 크기를 알려줘야한다.&lt;/li&gt;
&lt;li&gt;interface NativeListDTO : 네이티브 쿼리는 DB에서 반환된 각 칼럼 값을 이름으로 식별하고, 이를 DTO의 필드에 매핑한다. 이때 인터페이스의 getter 메서드 이름이 칼럼명과 일치하면 JPA가 이 이름을 기준으로 결과를 매핑할 수 있다.&lt;/li&gt;
&lt;li&gt;예를 들어, AS userName이라고 쿼리에서 지정하면, 인터페이스에서도 getUserName()이라는 getter가 있어야 JPA가 이를 찾아서 값을 할당할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;테스트&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부하 테스트 툴은 Jmeter를 사용했다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;초당 동시 트래픽 200명&lt;/li&gt;
&lt;li&gt;샘플링 대략 2000명&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;요약본&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1784&quot; data-origin-height=&quot;168&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coejKk/btsKJjGaKzw/OyKS46LKMmLdKK5FehZH9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coejKk/btsKJjGaKzw/OyKS46LKMmLdKK5FehZH9K/img.png&quot; data-alt=&quot;기존 영속성 컨텍스트를 거쳐 조회 했을 경우&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coejKk/btsKJjGaKzw/OyKS46LKMmLdKK5FehZH9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoejKk%2FbtsKJjGaKzw%2FOyKS46LKMmLdKK5FehZH9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1784&quot; height=&quot;168&quot; data-origin-width=&quot;1784&quot; data-origin-height=&quot;168&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;기존 영속성 컨텍스트를 거쳐 조회 했을 경우&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1776&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dvh6Vj/btsKGMqiuq8/Tx6gPFW4uKKMf22VopbKZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dvh6Vj/btsKGMqiuq8/Tx6gPFW4uKKMf22VopbKZ0/img.png&quot; data-alt=&quot;Projection의 경우&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dvh6Vj/btsKGMqiuq8/Tx6gPFW4uKKMf22VopbKZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdvh6Vj%2FbtsKGMqiuq8%2FTx6gPFW4uKKMf22VopbKZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1776&quot; height=&quot;160&quot; data-origin-width=&quot;1776&quot; data-origin-height=&quot;160&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Projection의 경우&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;초당 트랜잭션 실행 수&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1764&quot; data-origin-height=&quot;1010&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yEb13/btsKHPl4yGP/cO4to5mbvLtOoaSF6wGF20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yEb13/btsKHPl4yGP/cO4to5mbvLtOoaSF6wGF20/img.png&quot; data-alt=&quot;기존 영속성 컨텍스트를 거쳐 조회 했을 경우&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yEb13/btsKHPl4yGP/cO4to5mbvLtOoaSF6wGF20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyEb13%2FbtsKHPl4yGP%2FcO4to5mbvLtOoaSF6wGF20%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1764&quot; height=&quot;1010&quot; data-origin-width=&quot;1764&quot; data-origin-height=&quot;1010&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;기존 영속성 컨텍스트를 거쳐 조회 했을 경우&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1728&quot; data-origin-height=&quot;1018&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/co8r7g/btsKHO8x1cC/UlKp1jOR0PSpRINMLKU8aK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/co8r7g/btsKHO8x1cC/UlKp1jOR0PSpRINMLKU8aK/img.png&quot; data-alt=&quot;Projection의 경우&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/co8r7g/btsKHO8x1cC/UlKp1jOR0PSpRINMLKU8aK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fco8r7g%2FbtsKHO8x1cC%2FUlKp1jOR0PSpRINMLKU8aK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1728&quot; height=&quot;1018&quot; data-origin-width=&quot;1728&quot; data-origin-height=&quot;1018&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Projection의 경우&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;응답 시간&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1734&quot; data-origin-height=&quot;1004&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRCtw3/btsKIt3RkbP/Uq25K6zzBnAAAKBSSsnkdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRCtw3/btsKIt3RkbP/Uq25K6zzBnAAAKBSSsnkdk/img.png&quot; data-alt=&quot;기존 영속성 컨텍스트를 거쳐 조회 했을 경우&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRCtw3/btsKIt3RkbP/Uq25K6zzBnAAAKBSSsnkdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRCtw3%2FbtsKIt3RkbP%2FUq25K6zzBnAAAKBSSsnkdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1734&quot; height=&quot;1004&quot; data-origin-width=&quot;1734&quot; data-origin-height=&quot;1004&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;기존 영속성 컨텍스트를 거쳐 조회 했을 경우&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1730&quot; data-origin-height=&quot;1000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cH3xO1/btsKH1mfva5/I3wSkr9nlAUCaGkSQvCKsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cH3xO1/btsKH1mfva5/I3wSkr9nlAUCaGkSQvCKsk/img.png&quot; data-alt=&quot;Projection의 경우&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cH3xO1/btsKH1mfva5/I3wSkr9nlAUCaGkSQvCKsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcH3xO1%2FbtsKH1mfva5%2FI3wSkr9nlAUCaGkSQvCKsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1730&quot; height=&quot;1000&quot; data-origin-width=&quot;1730&quot; data-origin-height=&quot;1000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Projection의 경우&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 측정에서 DTO로 Projection 했을 경우 2배 이상 향상된 성능을 보여준다!&lt;/li&gt;
&lt;li&gt;연관관계가 복잡하게 얽혀있고, Get Method를 통해 조회만을 할때 이런식으로 활용하면 좋을 것 같다!&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Spring/JPA</category>
      <category>EntityGraph</category>
      <category>JOIN FETCH</category>
      <category>JPA</category>
      <category>n+1</category>
      <category>persistence context</category>
      <category>Projection</category>
      <category>영속성 컨텍스트</category>
      <author>Ls._.Rain</author>
      <guid isPermaLink="true">https://lsdiary.tistory.com/136</guid>
      <comments>https://lsdiary.tistory.com/136#entry136comment</comments>
      <pubDate>Wed, 13 Nov 2024 21:45:32 +0900</pubDate>
    </item>
    <item>
      <title>[DOCKER] 컨테이너 스토리지 관리</title>
      <link>https://lsdiary.tistory.com/135</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://lsdiary.tistory.com/134&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.09.16 - [DevOps/Docker] - [DOCKER] Docker 명령어 총정리&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1728270224251&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[DOCKER] Docker 명령어 총정리&quot; data-og-description=&quot;2024.09.15 - [DevOps/Docker] - [DOCKER] Docker 아키텍처&amp;nbsp;[DOCKER] Docker 아키텍처2024.09.15 - [DevOps/Docker] - [DOCKER] 도커 설치 및 컨테이너 개념과 동작 원리&amp;nbsp;[DOCKER] 도커 설치 및 컨테이너 개념과 동작 원리클라&quot; data-og-host=&quot;lsdiary.tistory.com&quot; data-og-source-url=&quot;https://lsdiary.tistory.com/134&quot; data-og-url=&quot;https://lsdiary.tistory.com/134&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/brHKTz/hyXd5oRTcW/7qxPGS9VeRZOXnGZ4EFeKk/img.png?width=800&amp;amp;height=467&amp;amp;face=0_0_800_467,https://scrap.kakaocdn.net/dn/uN3cN/hyXeihrhtM/oEOO2hDOeuFeyCwddW2iv0/img.png?width=800&amp;amp;height=467&amp;amp;face=0_0_800_467,https://scrap.kakaocdn.net/dn/9fle4/hyXeeF6WUk/WrCwbOStAnUkTy2s9zGS8K/img.png?width=1622&amp;amp;height=1404&amp;amp;face=0_0_1622_1404&quot;&gt;&lt;a href=&quot;https://lsdiary.tistory.com/134&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://lsdiary.tistory.com/134&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/brHKTz/hyXd5oRTcW/7qxPGS9VeRZOXnGZ4EFeKk/img.png?width=800&amp;amp;height=467&amp;amp;face=0_0_800_467,https://scrap.kakaocdn.net/dn/uN3cN/hyXeihrhtM/oEOO2hDOeuFeyCwddW2iv0/img.png?width=800&amp;amp;height=467&amp;amp;face=0_0_800_467,https://scrap.kakaocdn.net/dn/9fle4/hyXeeF6WUk/WrCwbOStAnUkTy2s9zGS8K/img.png?width=1622&amp;amp;height=1404&amp;amp;face=0_0_1622_1404');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[DOCKER] Docker 명령어 총정리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2024.09.15 - [DevOps/Docker] - [DOCKER] Docker 아키텍처&amp;nbsp;[DOCKER] Docker 아키텍처2024.09.15 - [DevOps/Docker] - [DOCKER] 도커 설치 및 컨테이너 개념과 동작 원리&amp;nbsp;[DOCKER] 도커 설치 및 컨테이너 개념과 동작 원리클라&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;lsdiary.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅에서 Docker에서 컨테이너를 관리하기 위한 명령어를 살펴봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;컨테이너 데이터 보존&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Image Layer (Read Only Layer)&lt;/li&gt;
&lt;li&gt;Container Layer(가변)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 두 가지로 구분되는 Docker의 특성상 컨테이너를 삭제한다면 이때까지 작업했던 내용은 반영되지 않고, 영구 삭제 된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;그렇다면 이러한 컨테이너를 영구 보존하려면 어떻게 해야 할까?&lt;/li&gt;
&lt;li&gt;여러 개의 컨테이너가 데이터를 공유할 수 없나?&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;volume mount&lt;br /&gt;- v [호스트 경로]:[컨테이너 마운트 경로]&lt;br /&gt;- v [호스트 경로]:[컨테이너 마운트 경로]:[읽기 모드]&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;볼륨 마운트를 통해 영구 보존 및 공유가 가능하다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;직접 EC2에 접속해서 Docker로 접속해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1728283345777&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ssh -i [pem 키 파일] [사용자이름]@[Public IP 주소]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅에서 실험했던 nginx 컨테이너의 index.html 파일을 'docker cp' 명령어로 변경 하고, curl 명령어로 응답을 확인 했던 내용은, 컨테이너를 삭제하고 나면 다시 원래 상태로 돌아온다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;HOST에 컨테이너가 공유하는 영구적인 데이터 만들기 (관리자 권한이 필요함)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3004&quot; data-origin-height=&quot;420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgO21o/btsJWxmrbze/RA5xA3eLi86XM0hZkhG1uK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgO21o/btsJWxmrbze/RA5xA3eLi86XM0hZkhG1uK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgO21o/btsJWxmrbze/RA5xA3eLi86XM0hZkhG1uK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgO21o%2FbtsJWxmrbze%2FRA5xA3eLi86XM0hZkhG1uK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3004&quot; height=&quot;420&quot; data-origin-width=&quot;3004&quot; data-origin-height=&quot;420&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;컨테이너 실행 (Read/Write 레이어 생성) -&amp;gt; 볼륨 마운트&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1728284474078&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker run --name web -d -v /webdata:/usr/share/nginx/html:ro nginx&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 읽기전용으로 마운트 시켜줌&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2996&quot; data-origin-height=&quot;182&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQfVAl/btsJXVGvMo2/G8qyBiTgwf5RCg4fcjFe71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQfVAl/btsJXVGvMo2/G8qyBiTgwf5RCg4fcjFe71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQfVAl/btsJXVGvMo2/G8qyBiTgwf5RCg4fcjFe71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQfVAl%2FbtsJXVGvMo2%2FG8qyBiTgwf5RCg4fcjFe71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2996&quot; height=&quot;182&quot; data-origin-width=&quot;2996&quot; data-origin-height=&quot;182&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 성공&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;컨테이너 삭제 이후 재실행&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;326&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bodG6s/btsJWysgAdI/jAphAILwEaYHufHgfTHWgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bodG6s/btsJWysgAdI/jAphAILwEaYHufHgfTHWgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bodG6s/btsJWysgAdI/jAphAILwEaYHufHgfTHWgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbodG6s%2FbtsJWysgAdI%2FjAphAILwEaYHufHgfTHWgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;326&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;326&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 항상 호스트의 동일 디렉터리에서 데이터를 마운트하므로, 변하지 않는다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;호스트의 디렉터리를 이용해서 다양한 컨테이너에서 사용 할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;MySQL 컨테이너에서 만들어진 DB를 영구 보존&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 개념과 정반대로 컨테이너 내부의 폴더를 호스트 디렉터리로 마운트 시켜야한다.&lt;/p&gt;
&lt;pre id=&quot;code_1728285025541&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker run --name db -d -v dbdata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=pass mysql:8&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; :ro (read only)가 빠져있다. (역으로 마운트 하기 위해)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WwKsL/btsJWipBho9/GKg8U3LObZlAl9gTihTY10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WwKsL/btsJWipBho9/GKg8U3LObZlAl9gTihTY10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WwKsL/btsJWipBho9/GKg8U3LObZlAl9gTihTY10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWwKsL%2FbtsJWipBho9%2FGKg8U3LObZlAl9gTihTY10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;246&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; docker가 관리하는 voulmes 디렉터리는 위 MySQL 실행 명령어에서 호스트의 디렉터리에 &quot;/&quot;를 붙이지 않으면 자동으로 volumes 디렉터리에서 관리하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 위 명령어를 실행하면 /volumes/dbdata 라는 디렉터리가 생성된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3002&quot; data-origin-height=&quot;490&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ct5G07/btsJXPmeO6V/2jO1sLwoootyoJoEuSgkb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ct5G07/btsJXPmeO6V/2jO1sLwoootyoJoEuSgkb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ct5G07/btsJXPmeO6V/2jO1sLwoootyoJoEuSgkb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fct5G07%2FbtsJXPmeO6V%2F2jO1sLwoootyoJoEuSgkb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3002&quot; height=&quot;490&quot; data-origin-width=&quot;3002&quot; data-origin-height=&quot;490&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1728286248074&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker inspect db&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 볼륨 마운트에 대한 정보가 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3010&quot; data-origin-height=&quot;958&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2rKzM/btsJX6gJwSE/xlAAoRVhIkS7LDPPKscGhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2rKzM/btsJX6gJwSE/xlAAoRVhIkS7LDPPKscGhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2rKzM/btsJX6gJwSE/xlAAoRVhIkS7LDPPKscGhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2rKzM%2FbtsJX6gJwSE%2FxlAAoRVhIkS7LDPPKscGhK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3010&quot; height=&quot;958&quot; data-origin-width=&quot;3010&quot; data-origin-height=&quot;958&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; &quot;RW (Read/Write)&quot; 가 가능하므로, 컨테이너 내부에서의 데이터와 호스트의 데이터 모두 동기화 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3004&quot; data-origin-height=&quot;324&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beEOGg/btsJYa4vRde/KEuKhJK5jqQHxjnjd2f6k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beEOGg/btsJYa4vRde/KEuKhJK5jqQHxjnjd2f6k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beEOGg/btsJYa4vRde/KEuKhJK5jqQHxjnjd2f6k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeEOGg%2FbtsJYa4vRde%2FKEuKhJK5jqQHxjnjd2f6k1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3004&quot; height=&quot;324&quot; data-origin-width=&quot;3004&quot; data-origin-height=&quot;324&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3020&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x90R6/btsJYBOlC3f/lo4iQ0l0oMrkZiDKN8l5rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x90R6/btsJYBOlC3f/lo4iQ0l0oMrkZiDKN8l5rk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x90R6/btsJYBOlC3f/lo4iQ0l0oMrkZiDKN8l5rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx90R6%2FbtsJYBOlC3f%2Flo4iQ0l0oMrkZiDKN8l5rk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3020&quot; height=&quot;584&quot; data-origin-width=&quot;3020&quot; data-origin-height=&quot;584&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 컨테이너를 삭제한 이후에도 MySQL 컨테이너 내부의 데이터의 보존 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 이후 MySQL을 볼륨 마운트로 다시 실행 시키면 데이터는 안정적으로 남아있다!&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;영구보존된 데이터 삭제&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1728287223488&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker volume --help&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;242&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mJAfk/btsJYawFVlA/34zKkZikQSaW6llNnlKWsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mJAfk/btsJYawFVlA/34zKkZikQSaW6llNnlKWsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mJAfk/btsJYawFVlA/34zKkZikQSaW6llNnlKWsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmJAfk%2FbtsJYawFVlA%2F34zKkZikQSaW6llNnlKWsK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;611&quot; height=&quot;242&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;242&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 볼륨 관리에 대해서 위와 같은 명령어로 볼륨 조작 명령어를 확인 할 수 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;docker volume ls : 볼륨들 전부 보여줌&lt;/li&gt;
&lt;li&gt;docker volume prune : 사용하지 않는 모든 로컬 볼륨 삭제&lt;/li&gt;
&lt;li&gt;docker volume rm : 특정 볼륨 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/Docker</category>
      <category>docker</category>
      <category>volume</category>
      <category>도커</category>
      <category>마운트</category>
      <category>볼륨</category>
      <category>영구 저장</category>
      <category>컨테이너</category>
      <category>포워딩</category>
      <category>포트</category>
      <author>Ls._.Rain</author>
      <guid isPermaLink="true">https://lsdiary.tistory.com/135</guid>
      <comments>https://lsdiary.tistory.com/135#entry135comment</comments>
      <pubDate>Mon, 7 Oct 2024 16:50:53 +0900</pubDate>
    </item>
    <item>
      <title>[DOCKER] Docker 명령어 총정리</title>
      <link>https://lsdiary.tistory.com/134</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://lsdiary.tistory.com/133&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.09.15 - [DevOps/Docker] - [DOCKER] Docker 아키텍처&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726367543538&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[DOCKER] Docker 아키텍처&quot; data-og-description=&quot;2024.09.15 - [DevOps/Docker] - [DOCKER] 도커 설치 및 컨테이너 개념과 동작 원리&amp;nbsp;[DOCKER] 도커 설치 및 컨테이너 개념과 동작 원리클라우드 네이티브 이해&amp;nbsp;CNCF(Cloud Native Computing Foundation) : 클라우드 네이&quot; data-og-host=&quot;lsdiary.tistory.com&quot; data-og-source-url=&quot;https://lsdiary.tistory.com/133&quot; data-og-url=&quot;https://lsdiary.tistory.com/133&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dbSwaq/hyW2QTl9Li/lnYrE3BjZ3dKApsrjUcNM0/img.jpg?width=800&amp;amp;height=422&amp;amp;face=0_0_800_422,https://scrap.kakaocdn.net/dn/e8d0Z/hyW21m4PDt/OpBSKtfKjQ340Rv6MpIJ71/img.jpg?width=800&amp;amp;height=422&amp;amp;face=0_0_800_422,https://scrap.kakaocdn.net/dn/yvH8f/hyW2XZgtli/rdjWXsBRFbNRoQcThHqsK1/img.png?width=1454&amp;amp;height=428&amp;amp;face=0_0_1454_428&quot;&gt;&lt;a href=&quot;https://lsdiary.tistory.com/133&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://lsdiary.tistory.com/133&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dbSwaq/hyW2QTl9Li/lnYrE3BjZ3dKApsrjUcNM0/img.jpg?width=800&amp;amp;height=422&amp;amp;face=0_0_800_422,https://scrap.kakaocdn.net/dn/e8d0Z/hyW21m4PDt/OpBSKtfKjQ340Rv6MpIJ71/img.jpg?width=800&amp;amp;height=422&amp;amp;face=0_0_800_422,https://scrap.kakaocdn.net/dn/yvH8f/hyW2XZgtli/rdjWXsBRFbNRoQcThHqsK1/img.png?width=1454&amp;amp;height=428&amp;amp;face=0_0_1454_428');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[DOCKER] Docker 아키텍처&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2024.09.15 - [DevOps/Docker] - [DOCKER] 도커 설치 및 컨테이너 개념과 동작 원리&amp;nbsp;[DOCKER] 도커 설치 및 컨테이너 개념과 동작 원리클라우드 네이티브 이해&amp;nbsp;CNCF(Cloud Native Computing Foundation) : 클라우드 네이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;lsdiary.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 도커와 관련된 일반적인 명령어들을 살펴보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://hub.docker.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://hub.docker.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726367636420&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Docker Hub Container Image Library | App Containerization&quot; data-og-description=&quot;Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.&quot; data-og-host=&quot;hub.docker.com&quot; data-og-source-url=&quot;https://hub.docker.com/&quot; data-og-url=&quot;https://hub.docker.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bWwONH/hyW2XyaHVZ/vKcXkG9LiU0AyK9Y23wnnk/img.png?width=3372&amp;amp;height=1896&amp;amp;face=0_0_3372_1896,https://scrap.kakaocdn.net/dn/zw4Nc/hyW21AAJfh/OQouKr2OxKglStWjqK1c8K/img.png?width=2560&amp;amp;height=1030&amp;amp;face=0_0_2560_1030,https://scrap.kakaocdn.net/dn/enEESr/hyW2XrqgtP/7sZKQfeR1pWBJmFpMFhEK0/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000&quot;&gt;&lt;a href=&quot;https://hub.docker.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hub.docker.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bWwONH/hyW2XyaHVZ/vKcXkG9LiU0AyK9Y23wnnk/img.png?width=3372&amp;amp;height=1896&amp;amp;face=0_0_3372_1896,https://scrap.kakaocdn.net/dn/zw4Nc/hyW21AAJfh/OQouKr2OxKglStWjqK1c8K/img.png?width=2560&amp;amp;height=1030&amp;amp;face=0_0_2560_1030,https://scrap.kakaocdn.net/dn/enEESr/hyW2XrqgtP/7sZKQfeR1pWBJmFpMFhEK0/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Docker Hub Container Image Library | App Containerization&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hub.docker.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; Docker Hub(Registry)에서도 많은 이미지를 볼 수 있고, 이전에 설치했던 EC2에서 CLI로 볼 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.docker.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://docs.docker.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726367762886&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Home&quot; data-og-description=&quot;Docker Documentation is the official Docker library of resources, manuals, and guides to help you containerize applications.&quot; data-og-host=&quot;docs.docker.com&quot; data-og-source-url=&quot;https://docs.docker.com/&quot; data-og-url=&quot;https://docs.docker.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dJnXfY/hyW2VG9v3Y/5hXqka1KqakSTzdas5WjYK/img.jpg?width=2400&amp;amp;height=1260&amp;amp;face=0_0_2400_1260&quot;&gt;&lt;a href=&quot;https://docs.docker.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.docker.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dJnXfY/hyW2VG9v3Y/5hXqka1KqakSTzdas5WjYK/img.jpg?width=2400&amp;amp;height=1260&amp;amp;face=0_0_2400_1260');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Home&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Docker Documentation is the official Docker library of resources, manuals, and guides to help you containerize applications.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.docker.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 이 곳에서 명령어를 포함한 많은 정보를 얻을수 있다.&lt;/p&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;컨테이너 이미지 관리 명령어&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이미지 검색 : docker search (docker hub에서만 검색된다)&lt;/li&gt;
&lt;li&gt;이미지 다운로드 : docker pull&lt;/li&gt;
&lt;li&gt;이미지 목록 보기 : docker images&lt;/li&gt;
&lt;li&gt;이미지 히스토리 보기(레이어 정보) : docker history&lt;/li&gt;
&lt;li&gt;이미지 세부 정보 보기 : docker inspect&lt;/li&gt;
&lt;li&gt;이미지 삭제 : docker rmi&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;컨테이너 조작 명령어&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컨테이너 생성 : docker create&lt;/li&gt;
&lt;li&gt;컨테이너 실행 : docker start&lt;/li&gt;
&lt;li&gt;컨테이너 종료 : docker stop&lt;/li&gt;
&lt;li&gt;컨테이너 강제 종료 : docker kill&lt;/li&gt;
&lt;li&gt;컨테이너 삭제 : docker rm&lt;/li&gt;
&lt;li&gt;&lt;b&gt;컨테이너 실행 : docker run (create + start)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;컨테이너 목록보기 : docker ps&lt;/li&gt;
&lt;li&gt;컨테이너 세부 정보 확인 : docker inspect&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;동작중인 컨테이너 관리&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컨테이너 내부 명령어 실행 : docker exec [컨테이너 이름] [실행 명령어]&lt;/li&gt;
&lt;li&gt;컨테이너 프로세스 목록 보기 : docker top [컨테이너 이름]&lt;/li&gt;
&lt;li&gt;컨테이너 로그 보기 : docker logs [컨테이너 이름]&lt;/li&gt;
&lt;li&gt;컨테이너 내부 파일 복사 : docker cp [filename] [컨테이너 이름:/파일이름]&lt;/li&gt;
&lt;li&gt;컨테이너 내부 파일 변경 이력 확인 (read/write 레이어에서) : docker diff [컨테이너 이름]&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;컨테이너 Registry 관리&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이미지 빌드 : docker build&lt;/li&gt;
&lt;li&gt;이미지 태그 설정 : docker tag&lt;/li&gt;
&lt;li&gt;Registry 로그인 : docker login&lt;/li&gt;
&lt;li&gt;Registry 로그아웃 : docker logout&lt;/li&gt;
&lt;li&gt;이미지를 아카이브 파일로 저장 : docker save&lt;/li&gt;
&lt;li&gt;아카이브 파일을 이미지로 로드 : docker load&lt;/li&gt;
&lt;li&gt;이미지 내보내기 : docker export&lt;/li&gt;
&lt;li&gt;이미지 가져오기 : docker import&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에 나열한 기본적인 명령어를 바탕으로 여러가지 테스트를 진행한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;원하는 컨테이너 조회&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1598&quot; data-origin-height=&quot;934&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E5TGK/btsJE3j5Zps/ZXo0royp3aLYM1ZuKQkld0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E5TGK/btsJE3j5Zps/ZXo0royp3aLYM1ZuKQkld0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E5TGK/btsJE3j5Zps/ZXo0royp3aLYM1ZuKQkld0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE5TGK%2FbtsJE3j5Zps%2FZXo0royp3aLYM1ZuKQkld0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1598&quot; height=&quot;934&quot; data-origin-width=&quot;1598&quot; data-origin-height=&quot;934&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; /(슬래시) 앞에 글자가 있다면 공식적인 것이 아니라 개인이 따로 만든 이미지 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock style1&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1334&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rhjoK/btsJE3j5052/niLCn7NFFASPTKQ6CKaUCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rhjoK/btsJE3j5052/niLCn7NFFASPTKQ6CKaUCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rhjoK/btsJE3j5052/niLCn7NFFASPTKQ6CKaUCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrhjoK%2FbtsJE3j5052%2FniLCn7NFFASPTKQ6CKaUCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;1334&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1334&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 메뉴바에 Trusted Content라는 메뉴가 있다. 이 세가지중 하나에 해당한다면 믿고 쓸 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 무조건 official 이미지를 사용하자!!&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1726375272139&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker search --filter=stars=3 --no-trunc busybox&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 별 점수가 3개 이상, 설명 줄임표 없는 이미지 출력 예시&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;컨테이너 이미지 다운로드&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1334&quot; data-origin-height=&quot;360&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v8uyF/btsJE0noSxj/0jk6mkjBlrjoyU0zTVszi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v8uyF/btsJE0noSxj/0jk6mkjBlrjoyU0zTVszi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v8uyF/btsJE0noSxj/0jk6mkjBlrjoyU0zTVszi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv8uyF%2FbtsJE0noSxj%2F0jk6mkjBlrjoyU0zTVszi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1334&quot; height=&quot;360&quot; data-origin-width=&quot;1334&quot; data-origin-height=&quot;360&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; /var/lib/docker/overlay2 디렉토리에 받은 이미지 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 초기세팅은 아무것도 없음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; busybox를 pull 해서 다운 받았는데, 해시값이 보임&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 해시값: Pull complete 메시지 하나당 레이어가 한개씩 있다는 의미&lt;/p&gt;
&lt;pre id=&quot;code_1726412643390&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker images&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1720&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJujcM/btsJEHV6TLj/ih03twIFGlkq8GmTudNDPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJujcM/btsJEHV6TLj/ih03twIFGlkq8GmTudNDPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJujcM/btsJEHV6TLj/ih03twIFGlkq8GmTudNDPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJujcM%2FbtsJEHV6TLj%2Fih03twIFGlkq8GmTudNDPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1720&quot; height=&quot;248&quot; data-origin-width=&quot;1720&quot; data-origin-height=&quot;248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1400&quot; data-origin-height=&quot;1036&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dVIN3A/btsJDETwUbA/zISM8xna8DiK8Xh4kMLBYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dVIN3A/btsJDETwUbA/zISM8xna8DiK8Xh4kMLBYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dVIN3A/btsJDETwUbA/zISM8xna8DiK8Xh4kMLBYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdVIN3A%2FbtsJDETwUbA%2FzISM8xna8DiK8Xh4kMLBYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1400&quot; height=&quot;1036&quot; data-origin-width=&quot;1400&quot; data-origin-height=&quot;1036&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 태그(버전)가 같다면 동일 이미지가 유지된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLRysn/btsJDVtWwib/6FhcKWnusWzWbYRYFzeJH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLRysn/btsJDVtWwib/6FhcKWnusWzWbYRYFzeJH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLRysn/btsJDVtWwib/6FhcKWnusWzWbYRYFzeJH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLRysn%2FbtsJDVtWwib%2F6FhcKWnusWzWbYRYFzeJH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1014&quot; height=&quot;220&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;220&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; TAG는 다르게 보이지만 실제 docker hub에 현재 기준(2024.09.16) nginx의 latest는 1.27 태그 이므로 IMAGE ID가 동일한것을 확인 할 수있다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;gallery.ecr.aws Registry&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gallery.ecr.aws/&quot;&gt;https://gallery.ecr.aws/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726413138288&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;ECR Public Gallery&quot; data-og-description=&quot;Amazon ECR Public Gallery is a website that allows anyone to browse and search for public container images, view developer-provided details, and see pull commands&quot; data-og-host=&quot;gallery.ecr.aws&quot; data-og-source-url=&quot;https://gallery.ecr.aws/&quot; data-og-url=&quot;https://gallery.ecr.aws/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://gallery.ecr.aws/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://gallery.ecr.aws/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;ECR Public Gallery&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Amazon ECR Public Gallery is a website that allows anyone to browse and search for public container images, view developer-provided details, and see pull commands&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;gallery.ecr.aws&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;hub.docker.com 에서만 이미지를 다운받을수 있는게 아니다. AWS에서도 이런 컨테이너 기반 서비스를 제공한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;817&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dTTdH7/btsJDIBCsG5/kRc6WScOYDGDH3ayAT2kk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dTTdH7/btsJDIBCsG5/kRc6WScOYDGDH3ayAT2kk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dTTdH7/btsJDIBCsG5/kRc6WScOYDGDH3ayAT2kk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTTdH7%2FbtsJDIBCsG5%2FkRc6WScOYDGDH3ayAT2kk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1513&quot; height=&quot;817&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;817&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 사이트 접속후 apache(nginx와 같은 웹 서버) 검색&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; bitnami/apache 클릭 (bitnami에서 만들어진 container는 trust container임)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3022&quot; data-origin-height=&quot;1634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l7YLd/btsJFbCq2Yo/kywnfILO5yKW63nBWxc3h1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l7YLd/btsJFbCq2Yo/kywnfILO5yKW63nBWxc3h1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l7YLd/btsJFbCq2Yo/kywnfILO5yKW63nBWxc3h1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl7YLd%2FbtsJFbCq2Yo%2FkywnfILO5yKW63nBWxc3h1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3022&quot; height=&quot;1634&quot; data-origin-width=&quot;3022&quot; data-origin-height=&quot;1634&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; Copy&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; docker pull [복사한 이미지]&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1342&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lXsFJ/btsJE8Mtu3j/6UWSuVhqF9CVaawsIYZsr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lXsFJ/btsJE8Mtu3j/6UWSuVhqF9CVaawsIYZsr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lXsFJ/btsJE8Mtu3j/6UWSuVhqF9CVaawsIYZsr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlXsFJ%2FbtsJE8Mtu3j%2F6UWSuVhqF9CVaawsIYZsr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1342&quot; height=&quot;480&quot; data-origin-width=&quot;1342&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; Registry 마다 이름이 다르게 운영되는걸 확인&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;pre id=&quot;code_1726414252404&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker inspect busybox&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1622&quot; data-origin-height=&quot;1404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btgeWy/btsJDtEHSVk/XWYX8dtTkIBCBl1wn20wfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btgeWy/btsJDtEHSVk/XWYX8dtTkIBCBl1wn20wfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btgeWy/btsJDtEHSVk/XWYX8dtTkIBCBl1wn20wfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtgeWy%2FbtsJDtEHSVk%2FXWYX8dtTkIBCBl1wn20wfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1622&quot; height=&quot;1404&quot; data-origin-width=&quot;1622&quot; data-origin-height=&quot;1404&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 이미지 세부정보 보기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; Layer 등의 다양한 정보 확인 가능&lt;/p&gt;
&lt;pre id=&quot;code_1726414421016&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker history nginx&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1826&quot; data-origin-height=&quot;708&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4mhMb/btsJDndzsj9/EylYUtN2YrQNuRSPVqNKN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4mhMb/btsJDndzsj9/EylYUtN2YrQNuRSPVqNKN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4mhMb/btsJDndzsj9/EylYUtN2YrQNuRSPVqNKN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4mhMb%2FbtsJDndzsj9%2FEylYUtN2YrQNuRSPVqNKN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1826&quot; height=&quot;708&quot; data-origin-width=&quot;1826&quot; data-origin-height=&quot;708&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 컨테이너가 어떻게 만들어졌는지 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; &amp;lt;missing&amp;gt; 이라고 표시된 부분이 Base Image&lt;/p&gt;
&lt;pre id=&quot;code_1726414643743&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker rmi [이미지 이름]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1826&quot; data-origin-height=&quot;996&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bO8wbw/btsJD5wk3Gi/KvKMLfgQgrzvriOwxt7JMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bO8wbw/btsJD5wk3Gi/KvKMLfgQgrzvriOwxt7JMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bO8wbw/btsJD5wk3Gi/KvKMLfgQgrzvriOwxt7JMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbO8wbw%2FbtsJD5wk3Gi%2FKvKMLfgQgrzvriOwxt7JMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1826&quot; height=&quot;996&quot; data-origin-width=&quot;1826&quot; data-origin-height=&quot;996&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 리소스 삭제해서 디스크 공간 확보&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;컨테이너 관리&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;컨테이너는 읽기전용의 이미지 레이어(불변의 Union File System(UFS)) + 읽기/쓰기 가능한 컨테이너 레이어를 결합&lt;/li&gt;
&lt;li&gt;컨테이너 생성 (create) : 컨테이너 레이어 생성&lt;/li&gt;
&lt;li&gt;컨테이너 실행 (start)을 하면 격리된 환경에서 &lt;b&gt;프로세스&lt;/b&gt;로 동작&lt;/li&gt;
&lt;/ol&gt;
&lt;pre id=&quot;code_1726415125890&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd /var/lib/docker/overlay2&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 레이어 관리 디렉토리로 이동&lt;/p&gt;
&lt;pre id=&quot;code_1726415100049&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker create --name web nginx&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 컨테이너 생성&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2282&quot; data-origin-height=&quot;916&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bP6Cwu/btsJDowGUy6/2vLTqU0eBSPr2czeiFdpHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bP6Cwu/btsJDowGUy6/2vLTqU0eBSPr2czeiFdpHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bP6Cwu/btsJDowGUy6/2vLTqU0eBSPr2czeiFdpHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbP6Cwu%2FbtsJDowGUy6%2F2vLTqU0eBSPr2czeiFdpHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2282&quot; height=&quot;916&quot; data-origin-width=&quot;2282&quot; data-origin-height=&quot;916&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 컨테이너 레이어 생성 확인&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;80&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pofcD/btsJC0JOEIE/k6grQ68h8OidTYGQWwNdaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pofcD/btsJC0JOEIE/k6grQ68h8OidTYGQWwNdaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pofcD/btsJC0JOEIE/k6grQ68h8OidTYGQWwNdaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpofcD%2FbtsJC0JOEIE%2Fk6grQ68h8OidTYGQWwNdaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1198&quot; height=&quot;80&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;80&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 컨테이너를 실행한적은 없다. 다만 생성 했을 뿐&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실행 하고 있지 않은 모든 컨테이너를 보고 싶다면?&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1726415325368&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker ps -a&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1484&quot; data-origin-height=&quot;162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SuAM1/btsJEjun027/6dKTlGo3SKGfQofpm68KDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SuAM1/btsJEjun027/6dKTlGo3SKGfQofpm68KDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SuAM1/btsJEjun027/6dKTlGo3SKGfQofpm68KDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSuAM1%2FbtsJEjun027%2F6dKTlGo3SKGfQofpm68KDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1484&quot; height=&quot;162&quot; data-origin-width=&quot;1484&quot; data-origin-height=&quot;162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; -a 옵션&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1726415418538&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker start [컨테이너 이름 OR CONTAINER ID]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1604&quot; data-origin-height=&quot;296&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/43E07/btsJCX0C3mG/1NxKT9jS6oJgKQO1s2EdEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/43E07/btsJCX0C3mG/1NxKT9jS6oJgKQO1s2EdEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/43E07/btsJCX0C3mG/1NxKT9jS6oJgKQO1s2EdEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F43E07%2FbtsJCX0C3mG%2F1NxKT9jS6oJgKQO1s2EdEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1604&quot; height=&quot;296&quot; data-origin-width=&quot;1604&quot; data-origin-height=&quot;296&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 프로세스로 동작 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; PORTS 열림&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Container의 6가지 Isolation&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;PID, Network[IP address], Host[hostname], Mount, User, IPC(Shared Memory)&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그렇다면 컨테이너의 IP 주소는 어떻게 찾지?&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1726415680138&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker inspect [컨테이너 이름]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2994&quot; data-origin-height=&quot;1578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsaq4W/btsJDIhlLoE/qPpUM1rcUyBgCInpB6c0c1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsaq4W/btsJDIhlLoE/qPpUM1rcUyBgCInpB6c0c1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsaq4W/btsJDIhlLoE/qPpUM1rcUyBgCInpB6c0c1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbsaq4W%2FbtsJDIhlLoE%2FqPpUM1rcUyBgCInpB6c0c1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2994&quot; height=&quot;1578&quot; data-origin-width=&quot;2994&quot; data-origin-height=&quot;1578&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; IP 주소 확인&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;818&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqn3Dp/btsJDcceTuo/Mi9REM3k4KmimktgyJlv4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqn3Dp/btsJDcceTuo/Mi9REM3k4KmimktgyJlv4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqn3Dp/btsJDcceTuo/Mi9REM3k4KmimktgyJlv4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbqn3Dp%2FbtsJDcceTuo%2FMi9REM3k4KmimktgyJlv4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1226&quot; height=&quot;818&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;818&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; curl 명령으로 nginx 컨테이너 접속&lt;/p&gt;
&lt;pre id=&quot;code_1726415867571&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker stop web&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcj5uz/btsJETINyNN/qQA1WEQQZJMuCJnvACIWR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcj5uz/btsJETINyNN/qQA1WEQQZJMuCJnvACIWR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcj5uz/btsJETINyNN/qQA1WEQQZJMuCJnvACIWR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbcj5uz%2FbtsJETINyNN%2FqQA1WEQQZJMuCJnvACIWR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;930&quot; height=&quot;134&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;134&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; Exited(0) : 정상종료 되었다는 의미&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1726415990328&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker rm [컨테이너 이름]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2180&quot; data-origin-height=&quot;258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z6ftT/btsJE8lppSl/GDPchdTQdIuHKsJ7GC1kIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z6ftT/btsJE8lppSl/GDPchdTQdIuHKsJ7GC1kIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z6ftT/btsJE8lppSl/GDPchdTQdIuHKsJ7GC1kIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz6ftT%2FbtsJE8lppSl%2FGDPchdTQdIuHKsJ7GC1kIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2180&quot; height=&quot;258&quot; data-origin-width=&quot;2180&quot; data-origin-height=&quot;258&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 레이어가 다시 줄어든것을 확인&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Docker run 명령어&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;pull -&amp;gt; create -&amp;gt; start -&amp;gt; attach(이미지가 없다면 연결) 전부 포함&lt;/li&gt;
&lt;li&gt;옵션이 굉장히 많음&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;-d 옵션 : 백그라운드(daemon 모드)로 동작&lt;br /&gt;--name 옵션 : 뒤에 이름 붙일수 있음&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1726416257762&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker run -d --name web nginx&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1662&quot; data-origin-height=&quot;994&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj9vZk/btsJEl6NCbK/oKIGPK48lAfa6X4LLqSDZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj9vZk/btsJEl6NCbK/oKIGPK48lAfa6X4LLqSDZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj9vZk/btsJEl6NCbK/oKIGPK48lAfa6X4LLqSDZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj9vZk%2FbtsJEl6NCbK%2FoKIGPK48lAfa6X4LLqSDZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1662&quot; height=&quot;994&quot; data-origin-width=&quot;1662&quot; data-origin-height=&quot;994&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; create + start 와 같은 결과&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Docker exec 명령어 (컨테이너 내부로 들어가기)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;docker exec [options] [container_name OR id] [컨테이너에서 실행하고 싶은 명령어]&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;-i + -t = -it 옵션 : bash OR shell 명령을 쓸때 무조건 사용&lt;/blockquote&gt;
&lt;pre id=&quot;code_1726416789132&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker exec -it web /bin/bash&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;394&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnee7n/btsJFcnOka2/tKcmi3halutpvXLHZibo0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnee7n/btsJFcnOka2/tKcmi3halutpvXLHZibo0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnee7n/btsJFcnOka2/tKcmi3halutpvXLHZibo0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbnee7n%2FbtsJFcnOka2%2FtKcmi3halutpvXLHZibo0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;394&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;394&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; Container ID, IP 주소 확인&lt;/p&gt;
&lt;pre id=&quot;code_1726417027708&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd /usr/share/nginx/html/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WB8EE/btsJDcDkYyu/cyr0x3sNCtIS4T8pTnsLQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WB8EE/btsJDcDkYyu/cyr0x3sNCtIS4T8pTnsLQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WB8EE/btsJDcDkYyu/cyr0x3sNCtIS4T8pTnsLQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWB8EE%2FbtsJDcDkYyu%2Fcyr0x3sNCtIS4T8pTnsLQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;932&quot; height=&quot;160&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; Nginx html 파일인 index.html 파일 확인&lt;/p&gt;
&lt;pre id=&quot;code_1726417094808&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exit&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 컨테이너 외부로 나오기&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;호스트 파일 컨테이너로 복사&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1726417262916&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker cp index.html web:/usr/share/nginx/html&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컨테이너 -&amp;gt; 호스트의 경우 파일 순서만 바꿔서 명령어를 입력해주면 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1358&quot; data-origin-height=&quot;1056&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ba4aw7/btsJE1tb577/JK42iBxU5kOr4s02rISap1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ba4aw7/btsJE1tb577/JK42iBxU5kOr4s02rISap1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ba4aw7/btsJE1tb577/JK42iBxU5kOr4s02rISap1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fba4aw7%2FbtsJE1tb577%2FJK42iBxU5kOr4s02rISap1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1358&quot; height=&quot;1056&quot; data-origin-width=&quot;1358&quot; data-origin-height=&quot;1056&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 디폴트 nginx 페이지 변경 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;로그 파일 확인&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;docker logs [컨테이너 이름]&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;--follow 옵션, -f 옵션 : 실시간 로그&lt;br /&gt;--since, --until : 기간에 따라 로그 조회&lt;br /&gt;--tail 옵션 : 제일 마지막 몇 개까지 조회&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;docker top [컨테이너 이름] : 컨테이너 내부에서 어떤 프로세스가 동작 중?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3018&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EoWyY/btsJDrAct6U/kXuADwB8Jn9idni8VVOiO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EoWyY/btsJDrAct6U/kXuADwB8Jn9idni8VVOiO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EoWyY/btsJDrAct6U/kXuADwB8Jn9idni8VVOiO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEoWyY%2FbtsJDrAct6U%2FkXuADwB8Jn9idni8VVOiO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3018&quot; height=&quot;156&quot; data-origin-width=&quot;3018&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;docker diff [컨테이너 이름] : Base Image와 생성된 컨테이너 사이에 달라진 부분만 보여줌&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;766&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Z6Rbt/btsJElTmzoL/AuVlP0kFicirQ9wQnMktmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Z6Rbt/btsJElTmzoL/AuVlP0kFicirQ9wQnMktmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Z6Rbt/btsJElTmzoL/AuVlP0kFicirQ9wQnMktmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZ6Rbt%2FbtsJElTmzoL%2FAuVlP0kFicirQ9wQnMktmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1022&quot; height=&quot;766&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;766&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; C : Change&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; A : Add&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; D : Delete&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Foreground 컨테이너 설정&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;docker run -it&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;Background(Daemon) 실행 : -d 옵션&lt;br /&gt;Foreground(터미널) 실행 : -it 옵션&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1726418512715&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ls /bin&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령어로 쓸 수 있는 명령어 확인&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;exit 하면 바로 컨테이너가 종료됨 (stop 상태)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정~~말 기본적인 Docker 명령어에 대해서 알아봤다! 많은 도움이 되었으면 합니다 :)&lt;/p&gt;</description>
      <category>DevOps/Docker</category>
      <category>CLI</category>
      <category>Container</category>
      <category>docker</category>
      <category>docker pull</category>
      <category>docker run</category>
      <category>image</category>
      <category>도커 이미지</category>
      <category>명령어</category>
      <category>컨테이너 이미지</category>
      <category>태그</category>
      <author>Ls._.Rain</author>
      <guid isPermaLink="true">https://lsdiary.tistory.com/134</guid>
      <comments>https://lsdiary.tistory.com/134#entry134comment</comments>
      <pubDate>Mon, 16 Sep 2024 01:44:58 +0900</pubDate>
    </item>
    <item>
      <title>[DOCKER] Docker 아키텍처</title>
      <link>https://lsdiary.tistory.com/133</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://lsdiary.tistory.com/132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.09.15 - [DevOps/Docker] - [DOCKER] 도커 설치 및 컨테이너 개념과 동작 원리&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726329502096&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[DOCKER] 도커 설치 및 컨테이너 개념과 동작 원리&quot; data-og-description=&quot;클라우드 네이티브 이해&amp;nbsp;CNCF(Cloud Native Computing Foundation) : 클라우드 네이티브라는 용어를 처음 만든 단체https://www.cncf.io/&amp;nbsp;Cloud Native Computing FoundationCNCF is the vendor-neutral hub of cloud native computing, dedic&quot; data-og-host=&quot;lsdiary.tistory.com&quot; data-og-source-url=&quot;https://lsdiary.tistory.com/132&quot; data-og-url=&quot;https://lsdiary.tistory.com/132&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bwBxpd/hyW2ZinAeO/Y6E2lKcuilvXs3GDhyyuTk/img.jpg?width=800&amp;amp;height=422&amp;amp;face=0_0_800_422,https://scrap.kakaocdn.net/dn/Yywdy/hyW24cWGg2/ut6vItRtKp59xIiePHobe0/img.jpg?width=800&amp;amp;height=422&amp;amp;face=0_0_800_422,https://scrap.kakaocdn.net/dn/btaNG3/hyW2VAie0d/hUAaI3ZTi8RqRkkmeI01ek/img.png?width=1652&amp;amp;height=1434&amp;amp;face=0_0_1652_1434&quot;&gt;&lt;a href=&quot;https://lsdiary.tistory.com/132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://lsdiary.tistory.com/132&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bwBxpd/hyW2ZinAeO/Y6E2lKcuilvXs3GDhyyuTk/img.jpg?width=800&amp;amp;height=422&amp;amp;face=0_0_800_422,https://scrap.kakaocdn.net/dn/Yywdy/hyW24cWGg2/ut6vItRtKp59xIiePHobe0/img.jpg?width=800&amp;amp;height=422&amp;amp;face=0_0_800_422,https://scrap.kakaocdn.net/dn/btaNG3/hyW2VAie0d/hUAaI3ZTi8RqRkkmeI01ek/img.png?width=1652&amp;amp;height=1434&amp;amp;face=0_0_1652_1434');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[DOCKER] 도커 설치 및 컨테이너 개념과 동작 원리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;클라우드 네이티브 이해&amp;nbsp;CNCF(Cloud Native Computing Foundation) : 클라우드 네이티브라는 용어를 처음 만든 단체https://www.cncf.io/&amp;nbsp;Cloud Native Computing FoundationCNCF is the vendor-neutral hub of cloud native computing, dedic&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;lsdiary.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅에서는 EC2 인스턴스를 생성하고 인스턴스 내부에 도커를 설치해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 도커가 어떻게 생겼는지 알아보자&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;컨테이너 아키텍처&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 34px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style5&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;BUILD&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;SHIP&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt;RUN&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;환경 시작(컨테이너 생성)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;이미지 생성(컨테이너 저장소에 저장)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;실행, 관리, 스케일링&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1233&quot; data-origin-height=&quot;651&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sR2c8/btsJDglauCG/QQMnLDOazr0Zb75ONe9dQk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sR2c8/btsJDglauCG/QQMnLDOazr0Zb75ONe9dQk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sR2c8/btsJDglauCG/QQMnLDOazr0Zb75ONe9dQk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsR2c8%2FbtsJDglauCG%2FQQMnLDOazr0Zb75ONe9dQk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1233&quot; height=&quot;651&quot; data-origin-width=&quot;1233&quot; data-origin-height=&quot;651&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출처 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://docs.docker.com/get-started/docker-overview/&quot;&gt;https://docs.docker.com/get-started/docker-overview/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726364657217&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;What is Docker?&quot; data-og-description=&quot;Get an in-depth overview of the Docker platform including what it can be used for, the architecture it employs, and its underlying technology.&quot; data-og-host=&quot;docs.docker.com&quot; data-og-source-url=&quot;https://docs.docker.com/get-started/docker-overview/&quot; data-og-url=&quot;https://docs.docker.com/get-started/docker-overview/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/W7DzO/hyW2XLHhrx/ingU637LOGFSxyADtlvtJK/img.jpg?width=2400&amp;amp;height=1260&amp;amp;face=0_0_2400_1260&quot;&gt;&lt;a href=&quot;https://docs.docker.com/get-started/docker-overview/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.docker.com/get-started/docker-overview/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/W7DzO/hyW2XLHhrx/ingU637LOGFSxyADtlvtJK/img.jpg?width=2400&amp;amp;height=1260&amp;amp;face=0_0_2400_1260');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;What is Docker?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Get an in-depth overview of the Docker platform including what it can be used for, the architecture it employs, and its underlying technology.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.docker.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DOCKER_HOST : 리눅스 운영체제의 Docker daemon이 동작되는 서버를 앞선 포스팅에서 만들었다.&lt;/li&gt;
&lt;li&gt;Registry : 컨테이너 이미지가 보관된 저장소, 컨테이너 이미지는 읽기 전용&lt;/li&gt;
&lt;li&gt;Container Image : 읽기 전용의 컨테이너 템플릿
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;애플리케이션 실행환경, 소스, runtime(여러개의 layer)이 포함된 독립된 컨테이너 애플리케이션&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1638&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pHXoc/btsJDsMrvqU/joH0O8iEA2KukjWkremp70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pHXoc/btsJDsMrvqU/joH0O8iEA2KukjWkremp70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pHXoc/btsJDsMrvqU/joH0O8iEA2KukjWkremp70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpHXoc%2FbtsJDsMrvqU%2FjoH0O8iEA2KukjWkremp70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1638&quot; height=&quot;198&quot; data-origin-width=&quot;1638&quot; data-origin-height=&quot;198&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 다운로드 받은 컨테이너 이미지 위치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Container : 하나의 프로세스, 호스트 운영체제의 커널을 공유
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;호스트 입장에서 프로세스 중 하나라는 점은 변함없지만, 완벽히 격리되어 운영된다는 차이점&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;컨테이너 이미지 레이어&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이미지는 한 개 이상의 불변의 읽기전용 레이어의 2집한인 Union 파일 시스템&lt;/li&gt;
&lt;li&gt;가장 아래 Base Image부터 블록 쌓듯 레이어가 배치되어 overlay(여러 개의 레이어를 하나로 보여주는 것) 구현&lt;/li&gt;
&lt;li&gt;컨테이너가 실행될 때(&lt;b&gt;docker run 할때&lt;/b&gt;) Container layer(read/write 레이어)가 상단에 배치(생성)되고 전체 레이어를 merge&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1454&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lwP86/btsJDpvtUw0/WEDMsiXdrYVgpTHasCXwQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lwP86/btsJDpvtUw0/WEDMsiXdrYVgpTHasCXwQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lwP86/btsJDpvtUw0/WEDMsiXdrYVgpTHasCXwQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlwP86%2FbtsJDpvtUw0%2FWEDMsiXdrYVgpTHasCXwQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1454&quot; height=&quot;428&quot; data-origin-width=&quot;1454&quot; data-origin-height=&quot;428&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;컨테이너 레지스트리&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://hub.docker.com/&quot;&gt;https://hub.docker.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726365941782&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Docker Hub Container Image Library | App Containerization&quot; data-og-description=&quot;Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.&quot; data-og-host=&quot;hub.docker.com&quot; data-og-source-url=&quot;https://hub.docker.com/&quot; data-og-url=&quot;https://hub.docker.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bWwONH/hyW2XyaHVZ/vKcXkG9LiU0AyK9Y23wnnk/img.png?width=3372&amp;amp;height=1896&amp;amp;face=0_0_3372_1896,https://scrap.kakaocdn.net/dn/zw4Nc/hyW21AAJfh/OQouKr2OxKglStWjqK1c8K/img.png?width=2560&amp;amp;height=1030&amp;amp;face=0_0_2560_1030,https://scrap.kakaocdn.net/dn/enEESr/hyW2XrqgtP/7sZKQfeR1pWBJmFpMFhEK0/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000&quot;&gt;&lt;a href=&quot;https://hub.docker.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hub.docker.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bWwONH/hyW2XyaHVZ/vKcXkG9LiU0AyK9Y23wnnk/img.png?width=3372&amp;amp;height=1896&amp;amp;face=0_0_3372_1896,https://scrap.kakaocdn.net/dn/zw4Nc/hyW21AAJfh/OQouKr2OxKglStWjqK1c8K/img.png?width=2560&amp;amp;height=1030&amp;amp;face=0_0_2560_1030,https://scrap.kakaocdn.net/dn/enEESr/hyW2XrqgtP/7sZKQfeR1pWBJmFpMFhEK0/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Docker Hub Container Image Library | App Containerization&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hub.docker.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 곳이 바로 컨테이너 레지스트리에 해당한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;registry : 컨테이너 이미지를 보관하고 있는 저장소&lt;/li&gt;
&lt;li&gt;repository : 하나의 컨테이너 이미지에 대해 &lt;b&gt;태그&lt;/b&gt;를 사용해 다양한 출시버전을 보관하는 곳&lt;/li&gt;
&lt;li&gt;레지스트리 &amp;gt; 레파지토리 &amp;gt; 컨테이너 이미지&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;Public Regisrty : 누구나 이용할 수 있는 공개된 레지스트리
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;Docker Hub : hub.docker.com&lt;/li&gt;
&lt;li&gt;Redhat Quay : quay.io&lt;/li&gt;
&lt;li&gt;AWS : gallery.ecr.aws&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cloud Registry : CSP가 제공하는 레지스트리
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;Amazon ECR, Azure container registry, GCP Artifact Registry, NHN Container Registry 등&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Private Registry : 온프레미스 환경으로 사내에서 운영할 수 있는 오픈소스 레지스트리
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;Harbor&lt;/li&gt;
&lt;li&gt;GitLab Container Registry&lt;/li&gt;
&lt;li&gt;docker registry&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/Docker</category>
      <category>Container</category>
      <category>Container Image</category>
      <category>docker</category>
      <category>MSA</category>
      <category>서비스</category>
      <category>컨테이너</category>
      <category>컨테이너 이미지</category>
      <category>클라우드네이티브</category>
      <author>Ls._.Rain</author>
      <guid isPermaLink="true">https://lsdiary.tistory.com/133</guid>
      <comments>https://lsdiary.tistory.com/133#entry133comment</comments>
      <pubDate>Sun, 15 Sep 2024 11:31:15 +0900</pubDate>
    </item>
    <item>
      <title>[DOCKER] 도커 설치 및 컨테이너 개념과 동작 원리</title>
      <link>https://lsdiary.tistory.com/132</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;클라우드 네이티브 이해&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CNCF(Cloud Native Computing Foundation) : 클라우드 네이티브라는 용어를 처음 만든 단체&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.cncf.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.cncf.io/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726303459797&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Cloud Native Computing Foundation&quot; data-og-description=&quot;CNCF is the vendor-neutral hub of cloud native computing, dedicated to making cloud native ubiquitous.&quot; data-og-host=&quot;www.cncf.io&quot; data-og-source-url=&quot;https://www.cncf.io/&quot; data-og-url=&quot;https://www.cncf.io/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cAcSDM/hyW2QMrOsl/ophxIkhTggY75c7O57cjrk/img.jpg?width=2500&amp;amp;height=1313&amp;amp;face=2054_97_2151_202,https://scrap.kakaocdn.net/dn/c1F4iG/hyW2Y4Mml2/ubxgDioTfICCHMVn77y9N1/img.jpg?width=2500&amp;amp;height=1313&amp;amp;face=2054_97_2151_202,https://scrap.kakaocdn.net/dn/x9P8b/hyW2RkhpY7/NI5Cc0wuK0lKUiKHkVBvv0/img.jpg?width=720&amp;amp;height=304&amp;amp;face=0_0_720_304&quot;&gt;&lt;a href=&quot;https://www.cncf.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.cncf.io/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cAcSDM/hyW2QMrOsl/ophxIkhTggY75c7O57cjrk/img.jpg?width=2500&amp;amp;height=1313&amp;amp;face=2054_97_2151_202,https://scrap.kakaocdn.net/dn/c1F4iG/hyW2Y4Mml2/ubxgDioTfICCHMVn77y9N1/img.jpg?width=2500&amp;amp;height=1313&amp;amp;face=2054_97_2151_202,https://scrap.kakaocdn.net/dn/x9P8b/hyW2RkhpY7/NI5Cc0wuK0lKUiKHkVBvv0/img.jpg?width=720&amp;amp;height=304&amp;amp;face=0_0_720_304');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Cloud Native Computing Foundation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;CNCF is the vendor-neutral hub of cloud native computing, dedicated to making cloud native ubiquitous.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.cncf.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;퍼블릭, 프라이빗, 하이브리드 클라우드와 같은 현대적이고 동적인 환경에서 확장 가능한 애플리케이션을 개발하고 실행할 수 있게 해줌&lt;/li&gt;
&lt;li&gt;&lt;b&gt;컨테이너(도커)&lt;/b&gt;, 서비스 메쉬, 마이크로서비스(쿠버네티스), 불변 인프라, 선언형 API 등등이 클라우드 네이티브 접근 방식의 예시&lt;/li&gt;
&lt;li&gt;회복성, 관리 편의성, 가시성을 갖춘 느슨하게 결합된 시스템을 가능하게 해줌&lt;/li&gt;
&lt;li&gt;엔지니어 입장에서 영향이 큰 변경을 최소한의 노력으로 자주 배포할 수있다.&lt;/li&gt;
&lt;li&gt;시간 흐름에 따라 생산성과 민첩성이 높아지면서 자연스럽게 생겨남&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 131px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 16.6667%; height: 17px; text-align: center;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 17px; text-align: center;&quot;&gt;Native APP&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;Web APP&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;Cloud Native App&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;width: 16.6667%; height: 38px; text-align: center;&quot;&gt;애플리케이션 개발 방법론&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 38px; text-align: center;&quot;&gt;폭포수 모델&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 38px; text-align: center;&quot;&gt;애자일&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 38px; text-align: center;&quot;&gt;DevOps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;width: 16.6667%; height: 38px; text-align: center;&quot;&gt;애플리케이션 운영 구조&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 38px; text-align: center;&quot;&gt;모놀리틱&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 38px; text-align: center;&quot;&gt;멀티티어(프론트 - 비즈니스 - 백엔드)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 38px; text-align: center;&quot;&gt;MSA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;width: 16.6667%; height: 38px; text-align: center;&quot;&gt;애플리케이션 운영 인프라&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 38px; text-align: center;&quot;&gt;물리 서버&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 38px; text-align: center;&quot;&gt;가상 서버&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 38px; text-align: center;&quot;&gt;컨테이너&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라우드 네이티브 기술 계층&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cloud 서비스 -&amp;gt; &lt;b&gt;컨테이너&lt;/b&gt; -&amp;gt; MSA -&amp;gt; 자동화&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;컨테이너 이해&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;애플리케이션과 운영환경이 모두 들어있는 독립된 공간&lt;/li&gt;
&lt;li&gt;애플리케이션 가상화&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;경량의 독립 실행형 소프트웨어 패키지&lt;/li&gt;
&lt;li&gt;코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같이 응용 프로그램을 실행하는 데 필요한 모든 것을 포함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도커가 그냥 뚝 하고 만들어진것은 아니다! 이것도 역사가 깊다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Jails -&amp;gt; VServer(리눅스) -&amp;gt; Zonesw -&amp;gt; cgroups(구글) : 특정 프로세스에게 CPU, 메모리, 디스크 같은 리소스 할당 -&amp;gt; Namespaces(redhat) : 특정 프로세스 격리시켜줌 -&amp;gt; LXC(IBM) 의 과정을 걸쳐서 최종적으로 Docker가 탄생했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;도커 컨테이너 WorkFlow&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1233&quot; data-origin-height=&quot;651&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc9ddt/btsJED6YybH/ymu52fpB1bZtgFTTLlklR0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc9ddt/btsJED6YybH/ymu52fpB1bZtgFTTLlklR0/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc9ddt/btsJED6YybH/ymu52fpB1bZtgFTTLlklR0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc9ddt%2FbtsJED6YybH%2Fymu52fpB1bZtgFTTLlklR0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1233&quot; height=&quot;651&quot; data-origin-width=&quot;1233&quot; data-origin-height=&quot;651&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출처 : &lt;a href=&quot;https://docs.docker.com/get-started/docker-overview/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://docs.docker.com/get-started/docker-overview/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726305052727&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;What is Docker?&quot; data-og-description=&quot;Get an in-depth overview of the Docker platform including what it can be used for, the architecture it employs, and its underlying technology.&quot; data-og-host=&quot;docs.docker.com&quot; data-og-source-url=&quot;https://docs.docker.com/get-started/docker-overview/&quot; data-og-url=&quot;https://docs.docker.com/get-started/docker-overview/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/hUYk3/hyW24xavOV/xkT8s13RcKyZDmWXHgKO30/img.jpg?width=2400&amp;amp;height=1260&amp;amp;face=0_0_2400_1260&quot;&gt;&lt;a href=&quot;https://docs.docker.com/get-started/docker-overview/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.docker.com/get-started/docker-overview/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/hUYk3/hyW24xavOV/xkT8s13RcKyZDmWXHgKO30/img.jpg?width=2400&amp;amp;height=1260&amp;amp;face=0_0_2400_1260');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;What is Docker?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Get an in-depth overview of the Docker platform including what it can be used for, the architecture it employs, and its underlying technology.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.docker.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DOCKER_HOST : 도커 서버, 서비스 Daemon 동작&lt;/li&gt;
&lt;li&gt;Registry : 컨테이너 저장&lt;/li&gt;
&lt;li&gt;Client - Server 모델의 Daemon 형태로 운영&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Docker vs Podman&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Docker daemon : image, container, kernel에 대한 접근에 대해 제어
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중지되면 컨테이너 관련된 애플리케이션 서비스는 하나도 할수없다.(의존성이 강하다)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Root 계정이 아니면 동작 할수없다.&lt;/li&gt;
&lt;li&gt;PODMAN : 컨테이너 관리를 위한 도커와 아주 유사한 OCI 컨테이너 관리 툴, Deamon에 의존적인 형태가 아닌 각각 독립적으로 운영 (Root less 컨테이너 운영 가능)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;도커 컨테이너 설치&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Amazon EC2 인스턴스 만들기&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;이름 : docker-host&lt;br /&gt;AMI : Ubuntu Server 22.04 LTS (HVM), SSD Volume Type&lt;br /&gt;인스턴스 유형 : t2.micro(cpu 1, memory 1GiB)&lt;br /&gt;키 페어 : 이전에 만들었던 developer.pem&lt;br /&gt;네트워크 설정 : [편집]&lt;br /&gt;VPC : default&lt;br /&gt;서브넷 정보 : ap-northeast-2a&lt;br /&gt;퍼블릭 IP 자동 할당 : 활성화&lt;br /&gt;보안 그룹 : 보안그룹 생성&lt;br /&gt;스토리지 : 8G, gp3&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://lsdiary.tistory.com/124&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.08.15 - [DevOps/AWS] - [AWS] Amazon EC2 인스턴스 만들기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726327157000&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[AWS] Amazon EC2 인스턴스 만들기&quot; data-og-description=&quot;2024.08.15 - [DevOps/AWS] - [AWS] Amazon 네트워크 운영하기&amp;nbsp;[AWS] Amazon 네트워크 운영하기2024.08.15 - [DevOps/AWS] - [AWS] Amazon 클라우드 시작하기&amp;nbsp;[AWS] Amazon 클라우드 시작하기클라우드 이해&amp;nbsp;Cloud는 IT 자원(서&quot; data-og-host=&quot;lsdiary.tistory.com&quot; data-og-source-url=&quot;https://lsdiary.tistory.com/124&quot; data-og-url=&quot;https://lsdiary.tistory.com/124&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bbfXzZ/hyW21tJ0Mp/2KG5vwA2hrfirw6uQS6A3k/img.png?width=800&amp;amp;height=151&amp;amp;face=0_0_800_151,https://scrap.kakaocdn.net/dn/uKksA/hyW23ZnX7v/XecnHGSIZbeAzVsfuaShf1/img.png?width=800&amp;amp;height=151&amp;amp;face=0_0_800_151,https://scrap.kakaocdn.net/dn/5Lc19/hyW2SjfAPx/l7sP7m06n4Tr7YK9Ka44GK/img.png?width=1646&amp;amp;height=1350&amp;amp;face=0_0_1646_1350&quot;&gt;&lt;a href=&quot;https://lsdiary.tistory.com/124&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://lsdiary.tistory.com/124&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bbfXzZ/hyW21tJ0Mp/2KG5vwA2hrfirw6uQS6A3k/img.png?width=800&amp;amp;height=151&amp;amp;face=0_0_800_151,https://scrap.kakaocdn.net/dn/uKksA/hyW23ZnX7v/XecnHGSIZbeAzVsfuaShf1/img.png?width=800&amp;amp;height=151&amp;amp;face=0_0_800_151,https://scrap.kakaocdn.net/dn/5Lc19/hyW2SjfAPx/l7sP7m06n4Tr7YK9Ka44GK/img.png?width=1646&amp;amp;height=1350&amp;amp;face=0_0_1646_1350');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[AWS] Amazon EC2 인스턴스 만들기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2024.08.15 - [DevOps/AWS] - [AWS] Amazon 네트워크 운영하기&amp;nbsp;[AWS] Amazon 네트워크 운영하기2024.08.15 - [DevOps/AWS] - [AWS] Amazon 클라우드 시작하기&amp;nbsp;[AWS] Amazon 클라우드 시작하기클라우드 이해&amp;nbsp;Cloud는 IT 자원(서&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;lsdiary.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글을 참고해서 만들면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1726327619488&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ssh -i developer.pem ubuntu@43.203.199.110&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1652&quot; data-origin-height=&quot;1434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4uAqk/btsJDW64EtD/LvD1wulkTN878AAkVNduNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4uAqk/btsJDW64EtD/LvD1wulkTN878AAkVNduNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4uAqk/btsJDW64EtD/LvD1wulkTN878AAkVNduNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4uAqk%2FbtsJDW64EtD%2FLvD1wulkTN878AAkVNduNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1652&quot; height=&quot;1434&quot; data-origin-width=&quot;1652&quot; data-origin-height=&quot;1434&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; EC2에 ssh 원격접속&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;키 페어를 새로 만드는 경우 chmod 400 xxx.pem 명령어를 통해 권한 범위를 줄여줘야한다.&lt;/blockquote&gt;
&lt;pre id=&quot;code_1726327953132&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt update&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 관리자 권한 필요&lt;/p&gt;
&lt;pre id=&quot;code_1726328639275&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt install -y apt-transport-https ca-certificates curl software-properties-common&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 필요한 의존성 패키지 설치&lt;/p&gt;
&lt;pre id=&quot;code_1726328654227&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 도커 공식 GPG 키 추가&lt;/p&gt;
&lt;pre id=&quot;code_1726328684036&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;echo &quot;deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 도커 repository 추가&lt;/p&gt;
&lt;pre id=&quot;code_1726328716184&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt update
sudo apt install docker-ce&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 도커 설치&lt;/p&gt;
&lt;pre id=&quot;code_1726328732163&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo docker --version&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 도커 설치 확인&lt;/p&gt;
&lt;pre id=&quot;code_1726328802397&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo systemctl start docker&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 도커 시작&lt;/p&gt;
&lt;pre id=&quot;code_1726328817335&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo systemctl enable docker&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 부팅시 도커 자동 시작 설정&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;docker 관리자(ec2-user) 설정&lt;/blockquote&gt;
&lt;pre id=&quot;code_1726328840750&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo usermod -aG docker $USER[ubuntu 사용]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 도커 그룹에 현재 사용자 추가 (sudo 권한 없이 Docker 명령 사용)&lt;/p&gt;
&lt;pre id=&quot;code_1726329115063&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;id ubuntu&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2848&quot; data-origin-height=&quot;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bClXt3/btsJElZSg7p/B1ezrkYqGCkgtm2JBLv78K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bClXt3/btsJElZSg7p/B1ezrkYqGCkgtm2JBLv78K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bClXt3/btsJElZSg7p/B1ezrkYqGCkgtm2JBLv78K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbClXt3%2FbtsJElZSg7p%2FB1ezrkYqGCkgtm2JBLv78K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2848&quot; height=&quot;76&quot; data-origin-width=&quot;2848&quot; data-origin-height=&quot;76&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도커 설치가 완료 됐고, 다음 포스팅에선 Docker 명령어들에 대해서 알아보고자 한다.&lt;/p&gt;</description>
      <category>DevOps/Docker</category>
      <category>cncf</category>
      <category>docker</category>
      <category>podman</category>
      <category>네이티브</category>
      <category>다운로드</category>
      <category>도커</category>
      <category>설치</category>
      <category>컨테이너</category>
      <category>클라우드</category>
      <author>Ls._.Rain</author>
      <guid isPermaLink="true">https://lsdiary.tistory.com/132</guid>
      <comments>https://lsdiary.tistory.com/132#entry132comment</comments>
      <pubDate>Sun, 15 Sep 2024 00:56:25 +0900</pubDate>
    </item>
    <item>
      <title>도커 + EC2 + Nginx +Github Actions를 이용한 다중 컨테이너 배포하기</title>
      <link>https://lsdiary.tistory.com/131</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;요구사항&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도커 컨테이너(Spring 프로젝트 2개)&lt;/li&gt;
&lt;li&gt;MongoDB(MongoDB Atlas)&lt;/li&gt;
&lt;li&gt;MySQL(RDS)&lt;/li&gt;
&lt;li&gt;Redis(Elastic Cache)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같이 스프링 프로젝트를 컨테이너화 시킨것을 CI/CD 구축할것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 위와 같이 많은 리소스들의 파이프라인 관리와 배포를 위해서 많은 도구들이 제공되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ECS, ECR, Jenkins 등등... 아직 나는 그 정도까지는 못할것 같고, 비교적 간단하게(?) 도커, EC2, Nginx, Github Actions를 이용해 보려고한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yCSgp/btsIQIiB1S2/KDkf1izN9EdqOYcGmwPiF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yCSgp/btsIQIiB1S2/KDkf1izN9EdqOYcGmwPiF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yCSgp/btsIQIiB1S2/KDkf1izN9EdqOYcGmwPiF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyCSgp%2FbtsIQIiB1S2%2FKDkf1izN9EdqOYcGmwPiF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;250&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;250&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 배포를 위해서는 docker 파일에 대한 정보를 알려주기 위해 Dockerfile을 직접 작성하고, push하고, container Image에 build하고, registry에 등록 하는 방식은 정말 벌써부터 하기가 싫다... -&amp;gt; 이를 자동화 시켜준 도구가 바로 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&lt;i&gt;Jib&lt;/i&gt;&lt;/b&gt;&lt;/span&gt; 이다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Jib&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글에서 만든 Java Image Container Service로, Java에 최적화된 방식으로 이미지를 만들어주고, 위와 같이 복잡한 flow를 &lt;b&gt;Layer Caching&lt;/b&gt;으로 세분화 시켜서 이를 자동화, 변경사항만 다시 빌드시켜준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KG3mH/btsIRpiQoyv/ofqWix3GOwfSKaH4cAqBIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KG3mH/btsIRpiQoyv/ofqWix3GOwfSKaH4cAqBIK/img.png&quot; data-alt=&quot;jib를 사용했을떄&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KG3mH/btsIRpiQoyv/ofqWix3GOwfSKaH4cAqBIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKG3mH%2FbtsIRpiQoyv%2FofqWix3GOwfSKaH4cAqBIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;114&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;114&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;jib를 사용했을떄&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 명령어 하나면 모든 작업이 끝난다!!!&lt;/p&gt;
&lt;pre id=&quot;code_1722427341277&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;./gradlew jib&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;프로젝트 세팅&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 작업했던 프로젝트를 들고 오고 Dockerfile을 세팅해주자.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;# jdk 17사용
FROM openjdk:17
# 컨테이너속 저장 위치
WORKDIR /app
# 빌드된 JAR 파일 경로, 복사할 위치
COPY ./build/libs/helloworld-mvc-0.0.1-SNAPSHOT.jar /app/helloworld-mvc.jar
EXPOSE 8080
# 복사한 JAR 파일을 실행하도록 설정
CMD [&quot;java&quot;, &quot;-jar&quot;, &quot;helloworld-mvc.jar&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;# jdk 17사용
FROM openjdk:17
# 컨테이너속 저장 위치
WORKDIR /app
# 빌드된 JAR 파일 경로, 복사할 위치
COPY ./build/libs/helloworld-webflux-0.0.1-SNAPSHOT.jar /app/helloworld-webflux.jar
EXPOSE 8082
# 복사한 JAR 파일을 실행하도록 설정
CMD [&quot;java&quot;, &quot;-jar&quot;, &quot;helloworld-webflux.jar&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;docker 이미지를 기반으로 CI/CD를 진행하기 위해 이미지를 만들어줄 Docker Hub 계정이 필요하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://hub.docker.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://hub.docker.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1725420329596&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Docker Hub Container Image Library | App Containerization&quot; data-og-description=&quot;Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.&quot; data-og-host=&quot;hub.docker.com&quot; data-og-source-url=&quot;https://hub.docker.com/&quot; data-og-url=&quot;https://hub.docker.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/biko2P/hyWVZw7207/EL14nAKVyke8edaUGKXAHk/img.png?width=3372&amp;amp;height=1896&amp;amp;face=0_0_3372_1896,https://scrap.kakaocdn.net/dn/dL4BvQ/hyWVT4JVMU/KfY75FuK3QhZ13F9fjKdcK/img.png?width=2560&amp;amp;height=1030&amp;amp;face=0_0_2560_1030,https://scrap.kakaocdn.net/dn/P5xQL/hyWV5xjPKh/vBENY4YVSrIlOxJWQpzhik/img.png?width=980&amp;amp;height=515&amp;amp;face=0_0_980_515&quot;&gt;&lt;a href=&quot;https://hub.docker.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hub.docker.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/biko2P/hyWVZw7207/EL14nAKVyke8edaUGKXAHk/img.png?width=3372&amp;amp;height=1896&amp;amp;face=0_0_3372_1896,https://scrap.kakaocdn.net/dn/dL4BvQ/hyWVT4JVMU/KfY75FuK3QhZ13F9fjKdcK/img.png?width=2560&amp;amp;height=1030&amp;amp;face=0_0_2560_1030,https://scrap.kakaocdn.net/dn/P5xQL/hyWV5xjPKh/vBENY4YVSrIlOxJWQpzhik/img.png?width=980&amp;amp;height=515&amp;amp;face=0_0_980_515');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Docker Hub Container Image Library | App Containerization&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hub.docker.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 로그인/회원가입 진행하면된다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;VPC, EC2, RDS, ElasticCache, MongoDB Atlas&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://lsdiary.tistory.com/123&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.08.15 - [DevOps/AWS] - [AWS] Amazon 네트워크 운영하기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://lsdiary.tistory.com/124&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.08.15 - [DevOps/AWS] - [AWS] Amazon EC2 인스턴스 만들기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://lsdiary.tistory.com/127&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.08.17 - [DevOps/AWS] - [AWS] Amazon RDS 사용해보기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1725420417048&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[AWS] Amazon RDS 사용해보기&quot; data-og-description=&quot;2024.08.16 - [DevOps/AWS] - [AWS] Amazon EC2 원격 로그인&amp;nbsp;[AWS] Amazon EC2 원격 로그인2024.08.15 - [DevOps/AWS] - [AWS] Amazon EC2 인스턴스 만들기&amp;nbsp;[AWS] Amazon EC2 인스턴스 만들기2024.08.15 - [DevOps/AWS] - [AWS] Amazon 네트워&quot; data-og-host=&quot;lsdiary.tistory.com&quot; data-og-source-url=&quot;https://lsdiary.tistory.com/127&quot; data-og-url=&quot;https://lsdiary.tistory.com/127&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bB5rli/hyWZdmWodm/MLVEkkCJxmRamUiVehRXV1/img.png?width=800&amp;amp;height=426&amp;amp;face=0_0_800_426,https://scrap.kakaocdn.net/dn/bZLOGa/hyWV2N6FQ0/9sGJZ581zRER5vjMXCUbSK/img.png?width=800&amp;amp;height=426&amp;amp;face=0_0_800_426,https://scrap.kakaocdn.net/dn/bmlqmG/hyWVWf49iY/djlcvZ9TVw1vI4sYs6olR0/img.png?width=3022&amp;amp;height=1640&amp;amp;face=0_0_3022_1640&quot;&gt;&lt;a href=&quot;https://lsdiary.tistory.com/127&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://lsdiary.tistory.com/127&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bB5rli/hyWZdmWodm/MLVEkkCJxmRamUiVehRXV1/img.png?width=800&amp;amp;height=426&amp;amp;face=0_0_800_426,https://scrap.kakaocdn.net/dn/bZLOGa/hyWV2N6FQ0/9sGJZ581zRER5vjMXCUbSK/img.png?width=800&amp;amp;height=426&amp;amp;face=0_0_800_426,https://scrap.kakaocdn.net/dn/bmlqmG/hyWVWf49iY/djlcvZ9TVw1vI4sYs6olR0/img.png?width=3022&amp;amp;height=1640&amp;amp;face=0_0_3022_1640');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[AWS] Amazon RDS 사용해보기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2024.08.16 - [DevOps/AWS] - [AWS] Amazon EC2 원격 로그인&amp;nbsp;[AWS] Amazon EC2 원격 로그인2024.08.15 - [DevOps/AWS] - [AWS] Amazon EC2 인스턴스 만들기&amp;nbsp;[AWS] Amazon EC2 인스턴스 만들기2024.08.15 - [DevOps/AWS] - [AWS] Amazon 네트워&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;lsdiary.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미 만드는 방법에 대한 포스팅을 진행했기에 위 글들을 보고 오면 좋을것같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; text-align: left;&quot;&gt;ElasticCache, MongoDB Atlas 사용법은 구글링을 통해 자세히 알아보길 추천한다(본인은 아직 잘 못하기에)&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Github Action 스크립트 파일생성&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;** 꼭 root 디렉토리에 .github 이름의 폴더에 작성해줘야한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;name: Hello-World Dev CI/CD

on:
  pull_request:
    types: [ closed ]
  workflow_dispatch: # (2).수동 실행도 가능하도록

jobs:
  build:
    runs-on: ubuntu-latest # (3).OS환경
    if: github.event.pull_request.merged == true &amp;amp;&amp;amp; github.event.pull_request.base.ref == 'develop'

    steps:
      - name: Checkout
        uses: actions/checkout@v2 # (4).코드 check out

      - name: Set up JDK 17
        uses: actions/setup-java@v4
        with:
          java-version: 17 # (5).자바 설치
          distribution: 'adopt'

      - name: Setup Gradle
        uses: gradle/actions/setup-gradle@v3

      - name: Grant execute permission for gradlew
        run: chmod +x ./gradlew
        shell: bash # (6).권한 부여

      - name: Build with Gradle
        run: ./gradlew clean build -x test
        shell: bash # (7).build시작

      - name: Set Version
        id: set_current_date
        run: echo &quot;version=$(date '+%Y-%m-%d-%H-%M-%S')&quot; &amp;gt;&amp;gt; $GITHUB_OUTPUT

      - name: Docker Image Build
        run: |
          docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/helloworld-mvc:${{ steps.set_current_date.outputs.version }} .
          docker tag ${{ secrets.DOCKERHUB_USERNAME }}/helloworld-mvc:${{ steps.set_current_date.outputs.version }} ${{ secrets.DOCKERHUB_USERNAME }}/helloworld-mvc:latest

      - name: Docker Login
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_PASSWORD }}

      - name: Docker Hub Push
        run: |
          docker push ${{ secrets.DOCKERHUB_USERNAME }}/helloworld-mvc:${{ steps.set_current_date.outputs.version }}
          docker push ${{ secrets.DOCKERHUB_USERNAME }}/helloworld-mvc:latest

      #ssh 접속 후 docker-compose
      - name: Deploy in EC2
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ubuntu
          key: ${{ secrets.SSH_KEY }}
          script: |
            cd app
            sudo docker rm -f $(docker ps -qa)
            sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/helloworld-mvc
            docker-compose up -d
            sudo docker logs -f helloworld-mvc &amp;amp;&amp;gt; helloworld-mvc.log &amp;amp;
            docker image prune -f&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실행흐름도&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;develop 브랜치로 checkout&lt;/li&gt;
&lt;li&gt;자바 설치&lt;/li&gt;
&lt;li&gt;gradle 실행 권한 부여&lt;/li&gt;
&lt;li&gt;.jar파일 생성&lt;/li&gt;
&lt;li&gt;.jar파일 docker image로 빌드&lt;/li&gt;
&lt;li&gt;docker-compose up -d 명령어로 도커 컨테이너 빌드&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;docker-compose.yml&lt;/blockquote&gt;
&lt;pre id=&quot;code_1725420214801&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;services:
  helloworld-mvc:
    image: swlee1999/helloworld-mvc:latest
    container_name: helloworld-mvc
    ports:
      - &quot;8080:8080&quot;
    environment:
      - 환경 변수 설정

  helloworld-webflux:
    image: swlee1999/helloworld-webflux:latest
    container_name: helloworld-webflux
    ports:
      - &quot;8082:8082&quot;
    environment:
      - 환경 변수 설정&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나의 경우 EC2 인스턴스 내부에 파일을 직접 작성해주었다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;문제상황&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;develop 브랜치가 merge 되었을때 CI/CD가 작동되게 한줄 알았으나, 터미널에서 원격(ssh)접속을 할때 무한 로딩되는 에러가 발생했다. 문제 원인을 살펴보니, AWS EC2모니터링에서 메모리 부족이슈로 인스턴스를 t3.micro -&amp;gt; t3.small 로 스펙업을 해주니 해결되었다.&lt;/li&gt;
&lt;li&gt;현재 진행하고있는 사이드 프로젝트에 구글 로그인 구현 부분을 맡았는데, 구글 API에 redirect_url을 설정해줘야한다. 이 부분에서 구글은 비교적 최근부터 HTTPS즉, SSL(Secure Socket Layer)을 적용한 도메인을 배포된 url로 허용해준다.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;** SSL : 웹 통신을 할때 적용하는 보안프로토콜&lt;br /&gt;클라이언트 &amp;lt;-&amp;gt; 서버 보안이 향상된 통신 가능&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;도메인 등록&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;HTTPS를 적용하기 위해서는 우선 도메인을 먼저 등록해줘야한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 과정 역시 이전 포스팅에서 방법을 다뤘으므로 찾아가서 보길 바란다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://lsdiary.tistory.com/129&quot;&gt;2024.09.04 - [DevOps/AWS] - [AWS] Route 53으로 도메인 서비스 구축하기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1725432585338&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[AWS] Route 53으로 도메인 서비스 구축하기&quot; data-og-description=&quot;2024.08.18 - [DevOps/AWS] - [AWS] EC2에 스프링 프로젝트 띄우기&amp;nbsp;[AWS] EC2에 스프링 프로젝트 띄우기2024.08.17 - [DevOps/AWS] - [AWS] Amazon RDS 사용해보기&amp;nbsp;[AWS] Amazon RDS 사용해보기2024.08.16 - [DevOps/AWS] - [AWS] Amazon E&quot; data-og-host=&quot;lsdiary.tistory.com&quot; data-og-source-url=&quot;https://lsdiary.tistory.com/129&quot; data-og-url=&quot;https://lsdiary.tistory.com/129&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ujIjS/hyWVXlLHhx/jzO6fMV1M8vZd6uZ13WbNk/img.png?width=800&amp;amp;height=434&amp;amp;face=0_0_800_434,https://scrap.kakaocdn.net/dn/bBnb0O/hyWZbWZEni/Yp9LNdakZv55v5klc1IGYK/img.png?width=800&amp;amp;height=434&amp;amp;face=0_0_800_434,https://scrap.kakaocdn.net/dn/isYFN/hyWVVBtjNA/Nwxyf3cuHa5gtXaBkpmV8k/img.png?width=3020&amp;amp;height=1636&amp;amp;face=0_0_3020_1636&quot;&gt;&lt;a href=&quot;https://lsdiary.tistory.com/129&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://lsdiary.tistory.com/129&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ujIjS/hyWVXlLHhx/jzO6fMV1M8vZd6uZ13WbNk/img.png?width=800&amp;amp;height=434&amp;amp;face=0_0_800_434,https://scrap.kakaocdn.net/dn/bBnb0O/hyWZbWZEni/Yp9LNdakZv55v5klc1IGYK/img.png?width=800&amp;amp;height=434&amp;amp;face=0_0_800_434,https://scrap.kakaocdn.net/dn/isYFN/hyWVVBtjNA/Nwxyf3cuHa5gtXaBkpmV8k/img.png?width=3020&amp;amp;height=1636&amp;amp;face=0_0_3020_1636');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[AWS] Route 53으로 도메인 서비스 구축하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2024.08.18 - [DevOps/AWS] - [AWS] EC2에 스프링 프로젝트 띄우기&amp;nbsp;[AWS] EC2에 스프링 프로젝트 띄우기2024.08.17 - [DevOps/AWS] - [AWS] Amazon RDS 사용해보기&amp;nbsp;[AWS] Amazon RDS 사용해보기2024.08.16 - [DevOps/AWS] - [AWS] Amazon E&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;lsdiary.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;SSL 인증서 발급&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 발급 방법&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;EC2에 직접 인증서를 설치&lt;/li&gt;
&lt;li&gt;&lt;i&gt;AWS의 인증서 관리서비스인 ACM(AWS Certificate Manager) 사용&lt;/i&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 AWS 클라우드 서비스를 사용하는김에 2번 방법을 선택해서 진행했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3014&quot; data-origin-height=&quot;1638&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LKPxA/btsJpHKsybG/4f43pkpzE65dGJPMWBDfVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LKPxA/btsJpHKsybG/4f43pkpzE65dGJPMWBDfVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LKPxA/btsJpHKsybG/4f43pkpzE65dGJPMWBDfVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLKPxA%2FbtsJpHKsybG%2F4f43pkpzE65dGJPMWBDfVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3014&quot; height=&quot;1638&quot; data-origin-width=&quot;3014&quot; data-origin-height=&quot;1638&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; AWS Certificate Manager -&amp;gt; 인증서 -&amp;gt; 인증서 요청 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 퍼블릭 인증서 요청&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3016&quot; data-origin-height=&quot;1586&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuh8i3/btsJp4r1hFd/boIGmDjm8WhBDvTkSrSVOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuh8i3/btsJp4r1hFd/boIGmDjm8WhBDvTkSrSVOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuh8i3/btsJp4r1hFd/boIGmDjm8WhBDvTkSrSVOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcuh8i3%2FbtsJp4r1hFd%2FboIGmDjm8WhBDvTkSrSVOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3016&quot; height=&quot;1586&quot; data-origin-width=&quot;3016&quot; data-origin-height=&quot;1586&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 완전히 정규화된 도메인 이름 : 가비아에서 구매한 도메인 이름(와일드 카드 인증서 사용가능)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 검증 방법 : DNS 검증&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;**와일드 카드 인증서 : HTTPS 프로토콜을 사용하여 안전하게 통신할 수 있도록 하는 디지털 인증서, 특정 도메인 이름의 하위 도메인에 얼마든지 사용할 수 있다.&lt;br /&gt;ex. 도메인 이름 : naver.com&lt;br /&gt;www.naver.com, hello.naver.com, bye.naver.com ... 등등 *.naver.com 즉 인증서 관리 최소화 및 비용 절감의 효과를 가져온다!&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3014&quot; data-origin-height=&quot;1608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNKXUT/btsJpIbtn6R/SufgKmQtQwev6gtl0JRI8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNKXUT/btsJpIbtn6R/SufgKmQtQwev6gtl0JRI8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNKXUT/btsJpIbtn6R/SufgKmQtQwev6gtl0JRI8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNKXUT%2FbtsJpIbtn6R%2FSufgKmQtQwev6gtl0JRI8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3014&quot; height=&quot;1608&quot; data-origin-width=&quot;3014&quot; data-origin-height=&quot;1608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 인증서 발급 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; CNAME 레코드 (도메인 이름 -&amp;gt; 다른 도메인 이름에 매핑) 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 인증서 &amp;lt;-&amp;gt; Route53 연결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; Route53에서 레코드 생성 클릭&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;로드 밸런서 생성&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AWS에서 HTTPS, 즉 SSL을 적용하기 위해선 서버 인스턴스가 하나더라도&lt;i&gt;&lt;b&gt; ELB(로드 밸런서)&lt;/b&gt;&lt;/i&gt;를 적용해야한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;로드 밸런서란?&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;들어오는 트래픽을 여러 타깃에 분산하고, 애플리케이션의 가용성, 확장성, 보안, 성능을 개선하며, 전송 중인 민감한 데이터를 HTTPS로 암호화, 트래픽 관리 및 모니터링을 위한 고급 기능을 제공하는 역할&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3022&quot; data-origin-height=&quot;1624&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/V9ESG/btsJrJsYFqe/l3ISKNcMLr3PogOx3XgGh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/V9ESG/btsJrJsYFqe/l3ISKNcMLr3PogOx3XgGh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/V9ESG/btsJrJsYFqe/l3ISKNcMLr3PogOx3XgGh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FV9ESG%2FbtsJrJsYFqe%2Fl3ISKNcMLr3PogOx3XgGh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3022&quot; height=&quot;1624&quot; data-origin-width=&quot;3022&quot; data-origin-height=&quot;1624&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; EC2 -&amp;gt; 로드 밸런서 -&amp;gt; Application Load Balancer 선택 (https 적용을 원하기 때문)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3022&quot; data-origin-height=&quot;1638&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDSg5d/btsJrQMhrqW/4i0pxah3xjhKkvNaaJTlC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDSg5d/btsJrQMhrqW/4i0pxah3xjhKkvNaaJTlC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDSg5d/btsJrQMhrqW/4i0pxah3xjhKkvNaaJTlC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDSg5d%2FbtsJrQMhrqW%2F4i0pxah3xjhKkvNaaJTlC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3022&quot; height=&quot;1638&quot; data-origin-width=&quot;3022&quot; data-origin-height=&quot;1638&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 로드 밸런서 이름 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 인터넷 경계 체계 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; IPv4 선택&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1654&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bX1jVC/btsJrPNnyXj/bYVIOiYdMPQy9r4v6TAyCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bX1jVC/btsJrPNnyXj/bYVIOiYdMPQy9r4v6TAyCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bX1jVC/btsJrPNnyXj/bYVIOiYdMPQy9r4v6TAyCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbX1jVC%2FbtsJrPNnyXj%2FbYVIOiYdMPQy9r4v6TAyCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;1654&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1654&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; EC2가 있는 VPC 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; EC2가 있는 서브넷 하나 이상 선택&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2192&quot; data-origin-height=&quot;520&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIwT1o/btsJqEsHbDU/izPEVkt2xetyIc3AVnovpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIwT1o/btsJqEsHbDU/izPEVkt2xetyIc3AVnovpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIwT1o/btsJqEsHbDU/izPEVkt2xetyIc3AVnovpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIwT1o%2FbtsJqEsHbDU%2FizPEVkt2xetyIc3AVnovpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2192&quot; height=&quot;520&quot; data-origin-width=&quot;2192&quot; data-origin-height=&quot;520&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 기존 EC2에 설정한 보안그룹 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 보안그룹 인바운드 규칙 : HTTP(80 포트), HTTPS(443 포트) 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1604&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ct2KSK/btsJqi4r0EW/TEnxDG06fC6ZSCWYIb7iNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ct2KSK/btsJqi4r0EW/TEnxDG06fC6ZSCWYIb7iNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ct2KSK/btsJqi4r0EW/TEnxDG06fC6ZSCWYIb7iNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fct2KSK%2FbtsJqi4r0EW%2FTEnxDG06fC6ZSCWYIb7iNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;1604&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1604&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 리스너 및 라우팅 2개 등록 (HTTP, HTTPS)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; HTTPS의 경우 인증된 ACM을 등록해주자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 80, 443 포트에서 들어오는 트래픽을 수&lt;span style=&quot;text-align: start;&quot;&gt;신 대기하고 등록된 대상으로 전달하여 처리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;대상 그룹을 만들어줘야한다!! 만들러가자&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;대상 그룹 생성&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgqjuF/btsJDOg0nBv/IwLmNJTL7vwyDZ3I2NOgok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgqjuF/btsJDOg0nBv/IwLmNJTL7vwyDZ3I2NOgok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgqjuF/btsJDOg0nBv/IwLmNJTL7vwyDZ3I2NOgok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgqjuF%2FbtsJDOg0nBv%2FIwLmNJTL7vwyDZ3I2NOgok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;626&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;626&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; EC2 -&amp;gt; 대상 그룹 -&amp;gt; 대상 그룹 생성&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bn5wfN/btsJDTJhnzO/zCKDrbAL2eNj4woCzMCbOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bn5wfN/btsJDTJhnzO/zCKDrbAL2eNj4woCzMCbOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bn5wfN/btsJDTJhnzO/zCKDrbAL2eNj4woCzMCbOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbn5wfN%2FbtsJDTJhnzO%2FzCKDrbAL2eNj4woCzMCbOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;1634&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1634&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 대상 유형 = 인스턴스 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1624&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/N3O2h/btsJEFRcYEr/mWYi9QZpcQpUKJII4OL3N0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N3O2h/btsJEFRcYEr/mWYi9QZpcQpUKJII4OL3N0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N3O2h/btsJEFRcYEr/mWYi9QZpcQpUKJII4OL3N0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN3O2h%2FbtsJEFRcYEr%2FmWYi9QZpcQpUKJII4OL3N0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;1624&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1624&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 대상 그룹 이름 입력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 프로토콜 = HTTP, 포트 = 80 -&amp;gt; EC2 인스턴스가 80포트 이용하기 때문&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1644&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjQk9A/btsJCTReukC/y0Xcfl0Z5ARLpaoKKHJSfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjQk9A/btsJCTReukC/y0Xcfl0Z5ARLpaoKKHJSfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjQk9A/btsJCTReukC/y0Xcfl0Z5ARLpaoKKHJSfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjQk9A%2FbtsJCTReukC%2Fy0Xcfl0Z5ARLpaoKKHJSfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;1644&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1644&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 로드 밸런서를 적용할 인스턴스 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 대상 그룹 생성&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;로드 밸런서 생성 (다시 돌아와서)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 하다 만 로드 밸런서 생성과정중 생성한 대상 그룹을 설정해주자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 최종적으로 로드 밸런서 생성!&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;HTTP -&amp;gt; HTTPS 리다이렉션&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3020&quot; data-origin-height=&quot;1600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brSKzo/btsJDgedAL2/6jkC3QmPlwTglH9XDqpcsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brSKzo/btsJDgedAL2/6jkC3QmPlwTglH9XDqpcsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brSKzo/btsJDgedAL2/6jkC3QmPlwTglH9XDqpcsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrSKzo%2FbtsJDgedAL2%2F6jkC3QmPlwTglH9XDqpcsK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3020&quot; height=&quot;1600&quot; data-origin-width=&quot;3020&quot; data-origin-height=&quot;1600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 리스너 -&amp;gt; HTTP:80 편집&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 도메인 80포트로 들어왔을때 조건 추가&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1558&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1ET8A/btsJDcpvwf6/7K5ciKouQOjNsWe7S4h6CK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1ET8A/btsJDcpvwf6/7K5ciKouQOjNsWe7S4h6CK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1ET8A/btsJDcpvwf6/7K5ciKouQOjNsWe7S4h6CK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1ET8A%2FbtsJDcpvwf6%2F7K5ciKouQOjNsWe7S4h6CK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;1558&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1558&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; HTTPS(443포트)로 URI 영구 리다이렉션&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이제 HTTP로 접속해도 자동으로 SSL 접속이 된다!&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Route53 설정&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;만든 도메인으로 접속하면 바로 EC2로 접속하는게 아닌, 로드 밸런서로 접근하게 해줘야한다. Route53에서 설정해주자.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;1352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JgAMA/btsJEmRLsiA/aWC8f2USyLY4luiogXnX4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JgAMA/btsJEmRLsiA/aWC8f2USyLY4luiogXnX4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JgAMA/btsJEmRLsiA/aWC8f2USyLY4luiogXnX4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJgAMA%2FbtsJEmRLsiA%2FaWC8f2USyLY4luiogXnX4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;928&quot; height=&quot;1352&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;1352&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; A레코드 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 트래픽 라우팅 대상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 리전 선택, 라우팅할 로드 밸런서 선택&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;** 맨앞에 내가 생성한 기억이 없는 dualstack이라는것이 붙어있는데 주소 체계를 IPv4, IPv6 모두 사용하는 경우에 해당하는 것이라고 하니 나 같이 IPv4 주소에 대해서 설정해줄때는 앞에 dualstack을 빼주자&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;EC2에 NGINX 설치&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;NGINX란?&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대표적인 웹 서버로, Apache보다 높은 성능과 안정성이 특징인 웹 서버이다.&lt;/li&gt;
&lt;li&gt;스프링에 띄운 서버 2개에 접근하기 위한 리버스 프록시 용도로 사용했다.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;nginx에 대해서는 내용이 많으므로 다른 글에 따로 정리할 예정이다. 우선 리버스 프록시를 위해서 사용한다는 정도만 알고 있자.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1589463076738&quot; class=&quot;bash&quot; style=&quot;background-color: #f6f7f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;sudo ssh -i &amp;lt;pem 키 파일 위치&amp;gt; ubuntu@&amp;lt;퍼블릭IP&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; bash에서 ssh 명령어로 EC2에 원격접속&lt;/p&gt;
&lt;pre id=&quot;code_1726293861233&quot; class=&quot;java&quot; style=&quot;background-color: #f6f7f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;sudo apt update
sudo apt-get install nginx&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; nginx 설치&lt;/p&gt;
&lt;pre id=&quot;code_1726294872734&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo service nginx start&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;706&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzFsE5/btsJENO9vFh/TcqQ6lp4xcL0jEAnulkiM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzFsE5/btsJENO9vFh/TcqQ6lp4xcL0jEAnulkiM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzFsE5/btsJENO9vFh/TcqQ6lp4xcL0jEAnulkiM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzFsE5%2FbtsJENO9vFh%2FTcqQ6lp4xcL0jEAnulkiM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;706&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;706&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 설치 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1726294988942&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd /etc/nginx/sites-available/default&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; nginx 설정파일 경로 이동&lt;/p&gt;
&lt;pre id=&quot;code_1726295982226&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo vi default&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1726295350499&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;server {
        listen 80 default_server;
        listen [::]:80 default_server;
        
        server_name gotoend.store;
        # HTTP 요청 받을시 Header에 _(언더바) 인식
        underscores_in_headers on;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        location /mvc {
        		# nginx에서 spring으로 요청할때 /mvc 제외하고 uri 요청
                rewrite ^/mvc(/.*)$ $1 break;
                # swagger 요청 prefix
                proxy_set_header X-Forwarded-Prefix /mvc;
                proxy_pass http://localhost:8080;
                # CORS 관련 헤더 추가
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
                add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type';
                proxy_set_header    Upgrade             $http_upgrade;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;	# 요청 클라이언트 IP
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;	# 클라이언트의 IP와 거쳐온 프록시 서버들의 IP들
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_pass_request_headers on; # 클라이언트의 모든 요청 헤더를 백엔드로 전달
        }

        location /webflux {
                # nginx에서 spring으로 요청할때 /webflux 제외하고 uri 요청
                rewrite ^/webflux(/.*)$ $1 break;
                # swagger 요청 prefix
                proxy_set_header X-Forwarded-Prefix /webflux;
                proxy_pass http://localhost:8082;
                # CORS 관련 헤더 추가
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
                add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type';
                proxy_set_header    Upgrade             $http_upgrade;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_pass_request_headers on; # 클라이언트의 모든 요청 헤더를 백엔드로 전달
        }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; defalut 파일에 리버스 프록시 구성 설정&lt;/p&gt;
&lt;pre id=&quot;code_1726296703078&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo nginx -t  # 설정 파일 테스트
sudo systemctl restart nginx  # Nginx 재시작&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sTmZi/btsJDZJrwCO/KP9qKNh66WTIk9Dl3mK0vK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sTmZi/btsJDZJrwCO/KP9qKNh66WTIk9Dl3mK0vK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sTmZi/btsJDZJrwCO/KP9qKNh66WTIk9Dl3mK0vK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsTmZi%2FbtsJDZJrwCO%2FKP9qKNh66WTIk9Dl3mK0vK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1088&quot; height=&quot;122&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; nginx 설정 파일 적용 테스트&lt;/p&gt;
&lt;pre id=&quot;code_1726295377516&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; forward-headers-strategy: FRAMEWORK&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 스프링 .yml 파일 수정&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;X- : 비표준 헤더를 의미&lt;/li&gt;
&lt;li&gt;스프링에서 디폴트 설정(none)은 표준헤더값만 가져올수있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;최초 Client의 IP로 부터 header 정보를 함께 가져오는데&lt;br /&gt;1. Nginx에서 remoteAddr로 최초 IP를 가져온다.&lt;br /&gt;2. Nginx에서 설정한 proxy_set_header는 비표준 헤더이므로 스프링에 .yml 파일에 framework 설정을 추가해준다.&lt;br /&gt;3. X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Prefix 등등 표준 헤더 외에 비표준 헤더를 가져올 수 있다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;도커 + EC2 + Nginx +Github Actions를 이용한 다중 컨테이너 배포하기 완료!!&lt;/b&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;클라이언트 접속 플로우&lt;/blockquote&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Route53에 있는 도메인 주소&lt;/li&gt;
&lt;li&gt;ELB로 이동&lt;/li&gt;
&lt;li&gt;ELB (80포트)로 이동&lt;/li&gt;
&lt;li&gt;ELB(443포트)로 이동&lt;/li&gt;
&lt;li&gt;EC2(80포트)로 이동&lt;/li&gt;
&lt;li&gt;Nginx가 리버스 프록시 역할
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;/mvc(8080 포트) 로 이동&lt;/li&gt;
&lt;li&gt;/webflux(8082 포트) 로 이동&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>DevOps/AWS</category>
      <category>CI/CD</category>
      <category>docker</category>
      <category>EC2</category>
      <category>ELB</category>
      <category>nginx</category>
      <category>Proxy</category>
      <category>Reverse</category>
      <category>Spring</category>
      <category>로드밸런서</category>
      <category>배포</category>
      <author>Ls._.Rain</author>
      <guid isPermaLink="true">https://lsdiary.tistory.com/131</guid>
      <comments>https://lsdiary.tistory.com/131#entry131comment</comments>
      <pubDate>Sat, 14 Sep 2024 16:44:07 +0900</pubDate>
    </item>
    <item>
      <title>[AWS] AWS 리소스 삭제하기!</title>
      <link>https://lsdiary.tistory.com/130</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;나를 포함해서 많은 사람들이 AWS를 사용하고 있지않는다고 생각함에도 매달 비용이 청구되는 경우가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이건 여러 서비스들을 이용하고 더 이상 필요하지 않은 리소스를 삭제해주지 않아서 생기는 문제다. 이 포스팅이 리소스를 잘 삭제할수있게 도와주고 돈을(?) 아끼게 해주면 좋겠다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;상황설명&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;나의 경우 AWS VPC를 만들어서 네트워크를 구축했고, 거기에 EC2 인스턴스를 만들었다.&lt;br /&gt;RDS도 네트워크상에 만들어줬고, 만든 EC2에는 Route 53으로 도메인 이름을 설정해줬다.&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;리소스 삭제 순서&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Route 53 삭제
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;레코드 삭제&lt;/li&gt;
&lt;li&gt;호스팅 영역 삭제&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;RDS 삭제
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;데이터베이스 삭제&lt;/li&gt;
&lt;li&gt;옵션그룹 삭제&lt;/li&gt;
&lt;li&gt;파라미터 그룹 삭제&lt;/li&gt;
&lt;li&gt;서브넷 그룹 삭제&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;EC2 인스턴스 삭제
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;인스턴스 삭제&lt;/li&gt;
&lt;li&gt;탄력적 IP 삭제&lt;/li&gt;
&lt;li&gt;보안 그룹 삭제&lt;/li&gt;
&lt;li&gt;키페어 삭제 (옵션)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;AWS 네트워크 삭제
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;NAT 게이트웨이&lt;/li&gt;
&lt;li&gt;인터넷 게이트웨이 삭제&lt;/li&gt;
&lt;li&gt;VPC 삭제&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Route 53 삭제&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1520&quot; data-origin-height=&quot;801&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c76N9Q/btsJpuRjqQS/4iIVIIdaJEI1bIDqJakRO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c76N9Q/btsJpuRjqQS/4iIVIIdaJEI1bIDqJakRO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c76N9Q/btsJpuRjqQS/4iIVIIdaJEI1bIDqJakRO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc76N9Q%2FbtsJpuRjqQS%2F4iIVIIdaJEI1bIDqJakRO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1520&quot; height=&quot;801&quot; data-origin-width=&quot;1520&quot; data-origin-height=&quot;801&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 기본으로 생성된 NS, SOA 레코드를 제외한 모든 레코드 삭제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 이후 호스팅 영역 삭제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;** 가비아에서 구매한 도메인도 계속 과금이 되기 때문에 그것도 가비아에서 직접 삭제해줘야한다!&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;RDS 삭제&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZeC5D/btsJqmdWnQt/axNnHAeFvDkR8XqieRfmE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZeC5D/btsJqmdWnQt/axNnHAeFvDkR8XqieRfmE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZeC5D/btsJqmdWnQt/axNnHAeFvDkR8XqieRfmE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZeC5D%2FbtsJqmdWnQt%2FaxNnHAeFvDkR8XqieRfmE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;1628&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1628&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 데이터베이스 삭제 (시간 조금 걸림)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1622&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M9iv9/btsJoNRzj7P/C8bjHMxkz1cwT6xmYSi0x1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M9iv9/btsJoNRzj7P/C8bjHMxkz1cwT6xmYSi0x1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M9iv9/btsJoNRzj7P/C8bjHMxkz1cwT6xmYSi0x1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM9iv9%2FbtsJoNRzj7P%2FC8bjHMxkz1cwT6xmYSi0x1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;1622&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1622&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 옵션 그룹 삭제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 파라미터 그룹 삭제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 서브넷 그룹 삭제 (서브넷 그룹의 경우 데이터베이스가 삭제되어야 삭제가능)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;EC2 인스턴스 삭제&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3012&quot; data-origin-height=&quot;1606&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3qIxA/btsJrbitsgY/qjzH13N8r6dBVH9BZq0Ilk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3qIxA/btsJrbitsgY/qjzH13N8r6dBVH9BZq0Ilk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3qIxA/btsJrbitsgY/qjzH13N8r6dBVH9BZq0Ilk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3qIxA%2FbtsJrbitsgY%2FqjzH13N8r6dBVH9BZq0Ilk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3012&quot; height=&quot;1606&quot; data-origin-width=&quot;3012&quot; data-origin-height=&quot;1606&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; Terminate (delete) instance (인스턴스 종료 = 삭제)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3016&quot; data-origin-height=&quot;1646&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIaFdJ/btsJq868xrn/chemrt2nxkAABgSL4pB4u0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIaFdJ/btsJq868xrn/chemrt2nxkAABgSL4pB4u0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIaFdJ/btsJq868xrn/chemrt2nxkAABgSL4pB4u0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIaFdJ%2FbtsJq868xrn%2Fchemrt2nxkAABgSL4pB4u0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3016&quot; height=&quot;1646&quot; data-origin-width=&quot;3016&quot; data-origin-height=&quot;1646&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 탄력적 IP 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; EC2에 할당된 탄력적 IP 주소 릴리스 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; NAT 게이트웨이에 연결된 탄력적 IP주소는 VPC가 먼저 제거되어야 삭제가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3020&quot; data-origin-height=&quot;1618&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oU5fu/btsJpHiIQcK/YIkhqnpZxpnt1dG5V27AP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oU5fu/btsJpHiIQcK/YIkhqnpZxpnt1dG5V27AP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oU5fu/btsJpHiIQcK/YIkhqnpZxpnt1dG5V27AP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoU5fu%2FbtsJpHiIQcK%2FYIkhqnpZxpnt1dG5V27AP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3020&quot; height=&quot;1618&quot; data-origin-width=&quot;3020&quot; data-origin-height=&quot;1618&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; EC2, DB에 대한 보안 그룹 삭제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;AWS 네트워크 삭제&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3020&quot; data-origin-height=&quot;1622&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mzE9w/btsJqSi9cRc/OwON4hhYaiIkEtZP588Huk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mzE9w/btsJqSi9cRc/OwON4hhYaiIkEtZP588Huk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mzE9w/btsJqSi9cRc/OwON4hhYaiIkEtZP588Huk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmzE9w%2FbtsJqSi9cRc%2FOwON4hhYaiIkEtZP588Huk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3020&quot; height=&quot;1622&quot; data-origin-width=&quot;3020&quot; data-origin-height=&quot;1622&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; VPC -&amp;gt; NAT 게이트웨이&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; NAT 게이트웨이 삭제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; NAT 게이트웨이가 삭제완료되어야 인터넷 게이트웨이를 삭제할수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3018&quot; data-origin-height=&quot;1634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUdE68/btsJpgeQXdJ/uBYvwuT90k2c3eLtGRqXO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUdE68/btsJpgeQXdJ/uBYvwuT90k2c3eLtGRqXO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUdE68/btsJpgeQXdJ/uBYvwuT90k2c3eLtGRqXO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUdE68%2FbtsJpgeQXdJ%2FuBYvwuT90k2c3eLtGRqXO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3018&quot; height=&quot;1634&quot; data-origin-width=&quot;3018&quot; data-origin-height=&quot;1634&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 인터넷 게이트웨이 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 디폴트 IG 제외하고 VPC에서 분리 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 이후 인터넷 게이트웨이 삭제&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3016&quot; data-origin-height=&quot;1626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDihJ2/btsJpujuCj5/ZII51PHeIlkxJckN1QzFE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDihJ2/btsJpujuCj5/ZII51PHeIlkxJckN1QzFE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDihJ2/btsJpujuCj5/ZII51PHeIlkxJckN1QzFE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDihJ2%2FbtsJpujuCj5%2FZII51PHeIlkxJckN1QzFE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3016&quot; height=&quot;1626&quot; data-origin-width=&quot;3016&quot; data-origin-height=&quot;1626&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; VPC 삭제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 라우팅 테이블, 서브넷을 포함한 VPC와 관련된 모든 리소스 삭제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 마지막으로 NAT 게이트웨이에 연결된 탄력적 IP 주소 릴리스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;비용관리&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3014&quot; data-origin-height=&quot;1612&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqNPHK/btsJqZJeraY/lB3kobXAJjI3jR9Z7vYlK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqNPHK/btsJqZJeraY/lB3kobXAJjI3jR9Z7vYlK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqNPHK/btsJqZJeraY/lB3kobXAJjI3jR9Z7vYlK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqNPHK%2FbtsJqZJeraY%2FlB3kobXAJjI3jR9Z7vYlK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3014&quot; height=&quot;1612&quot; data-origin-width=&quot;3014&quot; data-origin-height=&quot;1612&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 청구서에서 얼마정도의 금액이 청구될것인지 확인할수있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 프리티어 서비스의 경우 0.00$로 표시된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;(NAT 게이트웨이 더럽게 비싸다)&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3016&quot; data-origin-height=&quot;1644&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGblH8/btsJpETNQD2/023bNBjKXCKHNIA3vpYCy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGblH8/btsJpETNQD2/023bNBjKXCKHNIA3vpYCy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGblH8/btsJpETNQD2/023bNBjKXCKHNIA3vpYCy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGblH8%2FbtsJpETNQD2%2F023bNBjKXCKHNIA3vpYCy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3016&quot; height=&quot;1644&quot; data-origin-width=&quot;3016&quot; data-origin-height=&quot;1644&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 프리티어 서비스 사용량도 확인할수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/AWS</category>
      <category>AWS</category>
      <category>과금</category>
      <category>리소스</category>
      <category>비용</category>
      <category>삭제</category>
      <category>인스턴스</category>
      <category>청구</category>
      <author>Ls._.Rain</author>
      <guid isPermaLink="true">https://lsdiary.tistory.com/130</guid>
      <comments>https://lsdiary.tistory.com/130#entry130comment</comments>
      <pubDate>Wed, 4 Sep 2024 10:54:54 +0900</pubDate>
    </item>
    <item>
      <title>[AWS] Route 53으로 도메인 서비스 구축하기</title>
      <link>https://lsdiary.tistory.com/129</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://lsdiary.tistory.com/128&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.08.18 - [DevOps/AWS] - [AWS] EC2에 스프링 프로젝트 띄우기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1725355288503&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[AWS] EC2에 스프링 프로젝트 띄우기&quot; data-og-description=&quot;2024.08.17 - [DevOps/AWS] - [AWS] Amazon RDS 사용해보기&amp;nbsp;[AWS] Amazon RDS 사용해보기2024.08.16 - [DevOps/AWS] - [AWS] Amazon EC2 원격 로그인&amp;nbsp;[AWS] Amazon EC2 원격 로그인2024.08.15 - [DevOps/AWS] - [AWS] Amazon EC2 인스턴스 만들&quot; data-og-host=&quot;lsdiary.tistory.com&quot; data-og-source-url=&quot;https://lsdiary.tistory.com/128&quot; data-og-url=&quot;https://lsdiary.tistory.com/128&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c9mvlC/hyWV2N0w4r/J06WWOZsWnjbaHEwVFk4fK/img.png?width=800&amp;amp;height=679&amp;amp;face=0_0_800_679,https://scrap.kakaocdn.net/dn/UIDum/hyWZcanvs6/tQmMxowcIKOSYCxZZJjbHk/img.png?width=800&amp;amp;height=679&amp;amp;face=0_0_800_679,https://scrap.kakaocdn.net/dn/C1u8K/hyWZkGfzoA/bWXSdcKOZNIW0V6hx1O5Sk/img.png?width=3018&amp;amp;height=1634&amp;amp;face=0_0_3018_1634&quot;&gt;&lt;a href=&quot;https://lsdiary.tistory.com/128&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://lsdiary.tistory.com/128&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c9mvlC/hyWV2N0w4r/J06WWOZsWnjbaHEwVFk4fK/img.png?width=800&amp;amp;height=679&amp;amp;face=0_0_800_679,https://scrap.kakaocdn.net/dn/UIDum/hyWZcanvs6/tQmMxowcIKOSYCxZZJjbHk/img.png?width=800&amp;amp;height=679&amp;amp;face=0_0_800_679,https://scrap.kakaocdn.net/dn/C1u8K/hyWZkGfzoA/bWXSdcKOZNIW0V6hx1O5Sk/img.png?width=3018&amp;amp;height=1634&amp;amp;face=0_0_3018_1634');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[AWS] EC2에 스프링 프로젝트 띄우기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2024.08.17 - [DevOps/AWS] - [AWS] Amazon RDS 사용해보기&amp;nbsp;[AWS] Amazon RDS 사용해보기2024.08.16 - [DevOps/AWS] - [AWS] Amazon EC2 원격 로그인&amp;nbsp;[AWS] Amazon EC2 원격 로그인2024.08.15 - [DevOps/AWS] - [AWS] Amazon EC2 인스턴스 만들&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;lsdiary.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 포스팅까지 EC2에 스프링 프로젝트를 띄우고, 인터넷에서 Public IP 주소로 접근해서 나의 Rest API가 잘 작동하는지 테스트했다. 그렇다면 &lt;a href=&quot;http://www.naver.com&quot;&gt;www.(호스트 이름)naver.com(도메인이름)&lt;/a&gt;같은 도메인 주소로 접근할려면 어떤 설정이 필요할까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;인터넷상의 모든 컴퓨팅 기기들은 고유한 IP 주소를 통해 통신한다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 개념에서 사람은 IP 주소 대신 호스트이름 + &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&lt;i&gt;도메인 이름 -&amp;gt; FQDN(Full Qualified Domain Name)&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜? 사람한테 편하니까!&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;호스트이름 &amp;lt;-&amp;gt; IP 주소 매핑&lt;/li&gt;
&lt;li&gt;초기에는 각 서버에 HOSTS.TXT(/etc/hosts) 라는 파일을 두고 관리를 했었다 -&amp;gt; 시간이 지날수록  네트워크로 연결되는 컴퓨터가 너무 많아짐&lt;/li&gt;
&lt;li&gt;그래서 나온것이 DNS Server (IP주소, 호스트이름, 별칭)이다. HOSTS.TXT에서 DNS Server로 질의를 보내는 방식이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;DNS(Domain Name System)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트/서버 모델&lt;/li&gt;
&lt;li&gt;분산/계층 모델&lt;/li&gt;
&lt;li&gt;ICANN(국제 인터넷 주소 관리 기구) -&amp;gt; 도메인 이름 유일성 만족시키게 관리&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;순서대로 계층적 관리 root(.) -&amp;gt; TLD(.com) -&amp;gt; SLD(naver) -&amp;gt; www&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자신보다 한단계 밑에있는 도메인만 관리한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;도메인 등록은 어떻게?&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도메인 등록처에 중복되지 않는 도메인이름을 요청하면된다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;ex. aws, gabia 등 제공업체를 이용하자&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;도메인 접속 흐름도&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 모든 HOST는 로컬 DNS서버가 등록되어있다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;도메인으로 접속 요청 -&amp;gt; Local DNS 서버&lt;/li&gt;
&lt;li&gt;도메인에 해당하는 IP주소를 캐시로 요청한다.
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;캐시에 정보 없으면 Local DNS 서버(&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;&lt;b&gt;Client&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;) -&amp;gt; 전세계 13곳(A~N) Root 서버(&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;&lt;b&gt;Server&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;)에 질의&lt;/li&gt;
&lt;li&gt;TLD 질의&lt;/li&gt;
&lt;li&gt;SLD 질의&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;실제 IP 주소로 접속 요청&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Amazon Route 53&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;가용성과 확장성이 뛰어난 도메인 이름 시스템(DNS) 웹 서비스&lt;/li&gt;
&lt;li&gt;사용자 요청을 AWS 또는 온프레미스에서 실행되는 인터넷 어플리케이션에 연결&lt;/li&gt;
&lt;li&gt;주요기능
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도메인 등록&lt;/li&gt;
&lt;li&gt;상태 확인 및 모니터링&lt;/li&gt;
&lt;li&gt;DNS 장애 조치&lt;/li&gt;
&lt;li&gt;다양한 라우팅 정책&lt;/li&gt;
&lt;li&gt;VPC 용 Private DNS&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 도메인 접속 흐름도에서 캐시에 정보가 없다면 Root 서버에 질의 한다고 했는데, 마지막 SLD질의 이후 IP주소를 확인 하기 위해 Route 53에서는 레코드라는 것이 존재한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Key-Value 형식으로 도메인의 IP주소 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도메인으로 나의 서버를 접속할수 있게 만들기위해서 간단하게 정리하자면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;도메인 신청&lt;/li&gt;
&lt;li&gt;Route53 만들기&lt;/li&gt;
&lt;li&gt;레코드 파일 만들기&lt;/li&gt;
&lt;li&gt;레코드에 매핑정보 기록&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Amazon Route 53 레코드 유형&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NS(Name Server) : 도메인 네임서버의 이름을 나열. Route 53 만들면 기본 4개의 DNS서버가 레코드 정보를 관리 - 자동생성&lt;/li&gt;
&lt;li&gt;SOA(Start Of Authority) : 레코드 및 Route 53 동작을 결정하는 기본 정보를 나열 - 자동생성&lt;/li&gt;
&lt;li&gt;A(Address) : 특정 FQDN의 IP 주소 나열 - 따로 설정(IP가 자주 변동되면 안되기 때문에 EC2에 탄력적 IP 설정)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;도메인 구매&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://domain.gabia.com/?utm_source=google-gdn&amp;amp;utm_medium=banner&amp;amp;utm_campaign=%EB%8F%84%EB%A9%94%EC%9D%B8&amp;amp;utm_term=%EB%8F%84%EB%A9%94%EC%9D%B8&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://domain.gabia.com/?utm_source=google-gdn&amp;amp;utm_medium=banner&amp;amp;utm_campaign=%EB%8F%84%EB%A9%94%EC%9D%B8&amp;amp;utm_term=%EB%8F%84%EB%A9%94%EC%9D%B8&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1725362076164&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;가비아: 대한민국 도메인 점유율 1위&quot; data-og-description=&quot;대한민국 100만 도메인 등록 업체&quot; data-og-host=&quot;domain.gabia.com&quot; data-og-source-url=&quot;https://domain.gabia.com/?utm_source=google-gdn&amp;amp;utm_medium=banner&amp;amp;utm_campaign=%EB%8F%84%EB%A9%94%EC%9D%B8&amp;amp;utm_term=%EB%8F%84%EB%A9%94%EC%9D%B8&quot; data-og-url=&quot;https://domain.gabia.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bEsqQF/hyWV3zssgd/Vp87lvn9KfD2B5YqHcDG4k/img.jpg?width=1200&amp;amp;height=1000&amp;amp;face=0_0_1200_1000,https://scrap.kakaocdn.net/dn/oKbHP/hyWZh3Rm07/9Ru3ThnJSUXG1LPmtCcMzK/img.png?width=1244&amp;amp;height=536&amp;amp;face=0_0_1244_536&quot;&gt;&lt;a href=&quot;https://domain.gabia.com/?utm_source=google-gdn&amp;amp;utm_medium=banner&amp;amp;utm_campaign=%EB%8F%84%EB%A9%94%EC%9D%B8&amp;amp;utm_term=%EB%8F%84%EB%A9%94%EC%9D%B8&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://domain.gabia.com/?utm_source=google-gdn&amp;amp;utm_medium=banner&amp;amp;utm_campaign=%EB%8F%84%EB%A9%94%EC%9D%B8&amp;amp;utm_term=%EB%8F%84%EB%A9%94%EC%9D%B8&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bEsqQF/hyWV3zssgd/Vp87lvn9KfD2B5YqHcDG4k/img.jpg?width=1200&amp;amp;height=1000&amp;amp;face=0_0_1200_1000,https://scrap.kakaocdn.net/dn/oKbHP/hyWZh3Rm07/9Ru3ThnJSUXG1LPmtCcMzK/img.png?width=1244&amp;amp;height=536&amp;amp;face=0_0_1244_536');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;가비아: 대한민국 도메인 점유율 1위&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;대한민국 100만 도메인 등록 업체&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;domain.gabia.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS에서도 도메인을 등록할수있지만, 가비아에서 등록하도록 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1520&quot; data-origin-height=&quot;825&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjKCzE/btsJqLdbWrC/FSLMZetFjo6r5kHH2Jf73k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjKCzE/btsJqLdbWrC/FSLMZetFjo6r5kHH2Jf73k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjKCzE/btsJqLdbWrC/FSLMZetFjo6r5kHH2Jf73k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjKCzE%2FbtsJqLdbWrC%2FFSLMZetFjo6r5kHH2Jf73k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1520&quot; height=&quot;825&quot; data-origin-width=&quot;1520&quot; data-origin-height=&quot;825&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 원하는 도메인 이름 검색&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각각 TLD 마다 요금이 다르게 측정된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(연습이니까 저렴한걸로 구매..)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결제는 사이트 절차에 따라서 하면된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1514&quot; data-origin-height=&quot;785&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/euzuDp/btsJoOW8S9n/WpFrGgtbBFm9Ya2qFXLK60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/euzuDp/btsJoOW8S9n/WpFrGgtbBFm9Ya2qFXLK60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/euzuDp/btsJoOW8S9n/WpFrGgtbBFm9Ya2qFXLK60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeuzuDp%2FbtsJoOW8S9n%2FWpFrGgtbBFm9Ya2qFXLK60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1514&quot; height=&quot;785&quot; data-origin-width=&quot;1514&quot; data-origin-height=&quot;785&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; Route 53 -&amp;gt; 호스팅 영역에서 구매한 도메인 등록할수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 등록된 도메인에서 도메인을 구매할수도 있음(나는 가비아에서 구매했으므로 패스)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 호스팅 영역 생성 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3002&quot; data-origin-height=&quot;1610&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3ChfU/btsJo3zRjMx/XhNmnKVFvB6z48WU1nc8T0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3ChfU/btsJo3zRjMx/XhNmnKVFvB6z48WU1nc8T0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3ChfU/btsJo3zRjMx/XhNmnKVFvB6z48WU1nc8T0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3ChfU%2FbtsJo3zRjMx%2FXhNmnKVFvB6z48WU1nc8T0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3002&quot; height=&quot;1610&quot; data-origin-width=&quot;3002&quot; data-origin-height=&quot;1610&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 가비아에서 등록한 도메인 이름과 똑같이 입력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 퍼블릭 호스팅 영역 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 호스팅 영역 생성 클릭&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2120&quot; data-origin-height=&quot;310&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGlj1F/btsJpf1cBQH/WKKkW9q1joG9MzgVzFGcyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGlj1F/btsJpf1cBQH/WKKkW9q1joG9MzgVzFGcyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGlj1F/btsJpf1cBQH/WKKkW9q1joG9MzgVzFGcyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGlj1F%2FbtsJpf1cBQH%2FWKKkW9q1joG9MzgVzFGcyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2120&quot; height=&quot;310&quot; data-origin-width=&quot;2120&quot; data-origin-height=&quot;310&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 자동생성된 NS 4개 -&amp;gt; 가비아에 등록&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 가비아 -&amp;gt; DNS 관리툴 -&amp;gt; 만든 도메인 클릭 -&amp;gt; 전체 도메인 -&amp;gt; 네임서버 -&amp;gt; 설정 -&amp;gt; 1차 ~ 4차 까지 NS 등록 (단 맨 뒤 '.' 제외)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 소유자 인증 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 적용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3020&quot; data-origin-height=&quot;1636&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkZZWF/btsJpKTZs6h/H0ccJkzLmFixVzrhgE8kd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkZZWF/btsJpKTZs6h/H0ccJkzLmFixVzrhgE8kd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkZZWF/btsJpKTZs6h/H0ccJkzLmFixVzrhgE8kd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkZZWF%2FbtsJpKTZs6h%2FH0ccJkzLmFixVzrhgE8kd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3020&quot; height=&quot;1636&quot; data-origin-width=&quot;3020&quot; data-origin-height=&quot;1636&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; EC2 -&amp;gt; 탄력적 IP -&amp;gt; 탄력적 IP주소 할당 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 기존에 만든 EC2와 주소 연결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; EC2의 IP주소 고정&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2138&quot; data-origin-height=&quot;302&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCzk0L/btsJqD7x3rB/9EXcwpLDMIpZWrWfXKtvzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCzk0L/btsJqD7x3rB/9EXcwpLDMIpZWrWfXKtvzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCzk0L/btsJqD7x3rB/9EXcwpLDMIpZWrWfXKtvzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCzk0L%2FbtsJqD7x3rB%2F9EXcwpLDMIpZWrWfXKtvzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2138&quot; height=&quot;302&quot; data-origin-width=&quot;2138&quot; data-origin-height=&quot;302&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 레코드 생성 클릭&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1514&quot; data-origin-height=&quot;814&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwI1Qi/btsJqIVb3Mw/KvfxcZf8H3cKopKQTSjFT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwI1Qi/btsJqIVb3Mw/KvfxcZf8H3cKopKQTSjFT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwI1Qi/btsJqIVb3Mw/KvfxcZf8H3cKopKQTSjFT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwI1Qi%2FbtsJqIVb3Mw%2FKvfxcZf8H3cKopKQTSjFT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1514&quot; height=&quot;814&quot; data-origin-width=&quot;1514&quot; data-origin-height=&quot;814&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 호스트 이름 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 레코드 유형 - A 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 값에 - 탄력적 IP 주소 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 레코드 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;&amp;gt; 도메인 이름으로 접속 가능!&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;** 동일한 IP 주소로 여러개의 이름을 등록하는것도 가능하다.&lt;/blockquote&gt;</description>
      <category>DevOps/AWS</category>
      <category>AWS</category>
      <category>dns</category>
      <category>EC2</category>
      <category>EIP</category>
      <category>route53</category>
      <category>Spring</category>
      <category>SpringBoot</category>
      <category>도메인</category>
      <author>Ls._.Rain</author>
      <guid isPermaLink="true">https://lsdiary.tistory.com/129</guid>
      <comments>https://lsdiary.tistory.com/129#entry129comment</comments>
      <pubDate>Wed, 4 Sep 2024 09:52:25 +0900</pubDate>
    </item>
    <item>
      <title>[AWS] EC2에 스프링 프로젝트 띄우기</title>
      <link>https://lsdiary.tistory.com/128</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://lsdiary.tistory.com/127&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.08.17 - [DevOps/AWS] - [AWS] Amazon RDS 사용해보기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1723894391818&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[AWS] Amazon RDS 사용해보기&quot; data-og-description=&quot;2024.08.16 - [DevOps/AWS] - [AWS] Amazon EC2 원격 로그인&amp;nbsp;[AWS] Amazon EC2 원격 로그인2024.08.15 - [DevOps/AWS] - [AWS] Amazon EC2 인스턴스 만들기&amp;nbsp;[AWS] Amazon EC2 인스턴스 만들기2024.08.15 - [DevOps/AWS] - [AWS] Amazon 네트워&quot; data-og-host=&quot;lsdiary.tistory.com&quot; data-og-source-url=&quot;https://lsdiary.tistory.com/127&quot; data-og-url=&quot;https://lsdiary.tistory.com/127&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/kKko9/hyWOib6GLD/cqHNblMlnCuK5ZrCWBA9NK/img.png?width=800&amp;amp;height=426&amp;amp;face=0_0_800_426,https://scrap.kakaocdn.net/dn/9Azci/hyWSo9Bqys/cSa5G45BkjtA8Zbs6ni9p1/img.png?width=800&amp;amp;height=426&amp;amp;face=0_0_800_426,https://scrap.kakaocdn.net/dn/bAgarw/hyWOhRODba/LBtkS5qwTV63HcBZzcESa1/img.png?width=3022&amp;amp;height=1640&amp;amp;face=0_0_3022_1640&quot;&gt;&lt;a href=&quot;https://lsdiary.tistory.com/127&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://lsdiary.tistory.com/127&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/kKko9/hyWOib6GLD/cqHNblMlnCuK5ZrCWBA9NK/img.png?width=800&amp;amp;height=426&amp;amp;face=0_0_800_426,https://scrap.kakaocdn.net/dn/9Azci/hyWSo9Bqys/cSa5G45BkjtA8Zbs6ni9p1/img.png?width=800&amp;amp;height=426&amp;amp;face=0_0_800_426,https://scrap.kakaocdn.net/dn/bAgarw/hyWOhRODba/LBtkS5qwTV63HcBZzcESa1/img.png?width=3022&amp;amp;height=1640&amp;amp;face=0_0_3022_1640');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[AWS] Amazon RDS 사용해보기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2024.08.16 - [DevOps/AWS] - [AWS] Amazon EC2 원격 로그인&amp;nbsp;[AWS] Amazon EC2 원격 로그인2024.08.15 - [DevOps/AWS] - [AWS] Amazon EC2 인스턴스 만들기&amp;nbsp;[AWS] Amazon EC2 인스턴스 만들기2024.08.15 - [DevOps/AWS] - [AWS] Amazon 네트워&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;lsdiary.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅까지 AWS에서 제공하는 다양한 서비스들을 활용하며 테스트 해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버/백엔드 개발자로서 많이 사용하는 Spring 프로젝트를 이때까지 진행했던 클라우드 서비스에 올려보려고한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;전체과정&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;테스트 스프링 프로젝트 준비(property / yml 파일 변경)&lt;/li&gt;
&lt;li&gt;Gradle로 패키징 -&amp;gt; jar 파일 생성&lt;/li&gt;
&lt;li&gt;EC2에 jar 파일 업로드&lt;/li&gt;
&lt;li&gt;EC2 서버 내부에서 스프링부트 실행(8080 포트)
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;보안그룹 인바운드 규칙에 8080 포트 추가&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;MySQL 연결 확인&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;SpringBoot&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;로컬 설정파일&lt;/blockquote&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;server:
  port: 8080


spring:
  datasource:
    url: jdbc:h2:mem:admin;mode=mysql
    username: admin
    password: admin
    driver-class-name: org.h2.Driver

  h2:
    console:
      enabled: true  # 웹 콘솔 사용 설정
      path: /h2-console
      settings:
        web-allow-others: true

  jpa:
    # jpa 수행 쿼리 확인.
    show-sql: true
    hibernate:
      ddl-auto: create-drop
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
        implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
    defer-datasource-initialization: true
  output:
    ansi:
      enabled: always
  sql:
    init:
      platform: h2
      data-locations: classpath:sql/admin.sql
      mode: always
logging:
  level:
    org.hibernate.type: trace&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;EC2에 연결될 설정&lt;/blockquote&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;server:
  port: 8080


spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://test1-rds-mysql8.ctcbbrvzgs2x.ap-northeast-2.rds.amazonaws.com:3306/projectdb
    username: developer
    password: developer123!


  jpa:
    # jpa 수행 쿼리 확인.
    show-sql: true
    hibernate:
      ddl-auto: create-drop
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
        implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
    defer-datasource-initialization: true
  output:
    ansi:
      enabled: always
  sql:
    init:
      platform: h2
      data-locations: classpath:sql/admin.sql
      mode: always
logging:
  level:
    org.hibernate.type: trace&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RDS 엔드포인트 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1604&quot; data-origin-height=&quot;1362&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ldFxM/btsI7L5LSXI/KGTuXPOQiMkYzs1AkKo5Fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ldFxM/btsI7L5LSXI/KGTuXPOQiMkYzs1AkKo5Fk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ldFxM/btsI7L5LSXI/KGTuXPOQiMkYzs1AkKo5Fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FldFxM%2FbtsI7L5LSXI%2FKGTuXPOQiMkYzs1AkKo5Fk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1604&quot; height=&quot;1362&quot; data-origin-width=&quot;1604&quot; data-origin-height=&quot;1362&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 활성 yml파일 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;&amp;gt; 연결 확인!&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;admin.sql&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;INSERT INTO SampleProject (id,projectName, description) VALUES (1,'project-1', 'project-1-DESCRIPTION');
INSERT INTO SampleProject (id,projectName, description) VALUES (2,'project-2', 'project-2-DESCRIPTION');
INSERT INTO SampleProject (id,projectName, description) VALUES (3,'project-3', 'project-3-DESCRIPTION');&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3018&quot; data-origin-height=&quot;1634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cS0bE8/btsI6WG3vHv/q24FJZXmiWYHKfkKkDxJX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cS0bE8/btsI6WG3vHv/q24FJZXmiWYHKfkKkDxJX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cS0bE8/btsI6WG3vHv/q24FJZXmiWYHKfkKkDxJX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcS0bE8%2FbtsI6WG3vHv%2Fq24FJZXmiWYHKfkKkDxJX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3018&quot; height=&quot;1634&quot; data-origin-width=&quot;3018&quot; data-origin-height=&quot;1634&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; API 작동 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3020&quot; data-origin-height=&quot;1142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIkaVp/btsI61Brjyf/RK9XEWUkU2FmyQCjCpEn1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIkaVp/btsI61Brjyf/RK9XEWUkU2FmyQCjCpEn1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIkaVp/btsI61Brjyf/RK9XEWUkU2FmyQCjCpEn1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIkaVp%2FbtsI61Brjyf%2FRK9XEWUkU2FmyQCjCpEn1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3020&quot; height=&quot;1142&quot; data-origin-width=&quot;3020&quot; data-origin-height=&quot;1142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; h2 데이터베이스 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;로컬, RDS 연결 모두 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;gradle로 패키징 (jar 파일)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3016&quot; data-origin-height=&quot;1708&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uGuqB/btsI44syM3g/2mkeWPilyecpacrttIK7Ik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uGuqB/btsI44syM3g/2mkeWPilyecpacrttIK7Ik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uGuqB/btsI44syM3g/2mkeWPilyecpacrttIK7Ik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuGuqB%2FbtsI44syM3g%2F2mkeWPilyecpacrttIK7Ik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3016&quot; height=&quot;1708&quot; data-origin-width=&quot;3016&quot; data-origin-height=&quot;1708&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; build로 jar파일 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;1070&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OPzsi/btsI7sk3jh6/KDbWgCeD9pD7vRuBsVKth0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OPzsi/btsI7sk3jh6/KDbWgCeD9pD7vRuBsVKth0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OPzsi/btsI7sk3jh6/KDbWgCeD9pD7vRuBsVKth0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOPzsi%2FbtsI7sk3jh6%2FKDbWgCeD9pD7vRuBsVKth0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1012&quot; height=&quot;1070&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;1070&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; jar 파일 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2930&quot; data-origin-height=&quot;1400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYyMNM/btsI79efssx/sThoY37AlXeVokoGskiSUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYyMNM/btsI79efssx/sThoY37AlXeVokoGskiSUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYyMNM/btsI79efssx/sThoY37AlXeVokoGskiSUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYyMNM%2FbtsI79efssx%2FsThoY37AlXeVokoGskiSUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2930&quot; height=&quot;1400&quot; data-origin-width=&quot;2930&quot; data-origin-height=&quot;1400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; jar 파일 실행&lt;/p&gt;
&lt;pre id=&quot;code_1723904093621&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java -jar projectsample-0.0.1-SNAPSHOT.jar&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;EC2에 jar파일 업로드&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;EC2 퍼블릭 IP 주소 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1723904560029&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;scp -i ~/desktop/Spring정리/AWS/developer.pem projectsample-0.0.1-SNAPSHOT.jar ec2-user@43.202.62.115:~/&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;원격 파일 복사 명령 : scp -i [.pem위치] [jar파일] [EC2사용자아이디@EC2 퍼블릭 IPv4주소]:~/[원하는 주소]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/COW2r/btsI6y0Sz76/6zIPcdU0rTl0pgOo2SihdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/COW2r/btsI6y0Sz76/6zIPcdU0rTl0pgOo2SihdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/COW2r/btsI6y0Sz76/6zIPcdU0rTl0pgOo2SihdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCOW2r%2FbtsI6y0Sz76%2F6zIPcdU0rTl0pgOo2SihdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;828&quot; height=&quot;124&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;124&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; EC2에 원격접속해서 복사된 파일 확인&lt;/p&gt;
&lt;pre id=&quot;code_1723904786513&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ssh -i [.pem 파일] [EC2 사용자 아이디]@[EC2 퍼블릭 IPv4 주소]&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;EC2에 java 설치&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;루트 권한 부여&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1723904993130&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo su&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Java 설치할수 있는 목록 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1723905060424&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yum list | grep java-11&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Java설치&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1723905150047&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yum install java-11-amazon-corretto.x86_64&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3016&quot; data-origin-height=&quot;594&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xGjvD/btsI5T5AU1P/kM134KGPCr3qCEr29262c1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xGjvD/btsI5T5AU1P/kM134KGPCr3qCEr29262c1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xGjvD/btsI5T5AU1P/kM134KGPCr3qCEr29262c1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxGjvD%2FbtsI5T5AU1P%2FkM134KGPCr3qCEr29262c1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3016&quot; height=&quot;594&quot; data-origin-width=&quot;3016&quot; data-origin-height=&quot;594&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 중간에 &quot;y&quot; 로 설치 계속 진행&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;242&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvhPVi/btsI5ZdH8BY/Wm0kWa85HCQvPHEukFHET0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvhPVi/btsI5ZdH8BY/Wm0kWa85HCQvPHEukFHET0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvhPVi/btsI5ZdH8BY/Wm0kWa85HCQvPHEukFHET0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvhPVi%2FbtsI5ZdH8BY%2FWm0kWa85HCQvPHEukFHET0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;242&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;242&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 설치완료 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1723905336855&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java -jar projectsample-0.0.1-SNAPSHOT.jar&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;&amp;nbsp; EC2 내부에서 jar 파일 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1696&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btOEDs/btsI7f0JOKI/0F7GgPqGbW1BLiHySwzIX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btOEDs/btsI7f0JOKI/0F7GgPqGbW1BLiHySwzIX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btOEDs/btsI7f0JOKI/0F7GgPqGbW1BLiHySwzIX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtOEDs%2FbtsI7f0JOKI%2F0F7GgPqGbW1BLiHySwzIX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;1696&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1696&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;배포된 EC2의 퍼블릭 IPv4 주소로 접속&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;빙글빙글 로딩되는 것만 보이고 접속이 안됨..&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜 안되지???&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 8080 PORT를 보안그룹의 인바운드 규칙에서 안열어줬기 때문!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;AWS -&amp;gt; EC2 -&amp;gt; 보안그룹 이동&lt;/li&gt;
&lt;li&gt;인바운드 규칙 8080포트 추가&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1296&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ds2k4p/btsI6eO07Kv/GynjJheX0KRWhFgqjuaNGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ds2k4p/btsI6eO07Kv/GynjJheX0KRWhFgqjuaNGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ds2k4p/btsI6eO07Kv/GynjJheX0KRWhFgqjuaNGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fds2k4p%2FbtsI6eO07Kv%2FGynjJheX0KRWhFgqjuaNGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;1296&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1296&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3020&quot; data-origin-height=&quot;1624&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEElP4/btsI6h6fzJK/O5cMjs8alLuVhqc1YfDse0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEElP4/btsI6h6fzJK/O5cMjs8alLuVhqc1YfDse0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEElP4/btsI6h6fzJK/O5cMjs8alLuVhqc1YfDse0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEElP4%2FbtsI6h6fzJK%2FO5cMjs8alLuVhqc1YfDse0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3020&quot; height=&quot;1624&quot; data-origin-width=&quot;3020&quot; data-origin-height=&quot;1624&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 간단 서버 배포 성공!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 이렇게 배포된 스프링부트는 아까 두가지의 설정이있었는데, 디폴트 설정만 적용되어서 배포되지 않나..?&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;CLI 명령어를 통한 옵션 설정&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1723906000323&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java -jar -Dspring.profiles.active=prd [jar 파일]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3010&quot; data-origin-height=&quot;772&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAjyVJ/btsI62UJBly/6D1GVKPAfmGWkpzVTJke30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAjyVJ/btsI62UJBly/6D1GVKPAfmGWkpzVTJke30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAjyVJ/btsI62UJBly/6D1GVKPAfmGWkpzVTJke30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAjyVJ%2FbtsI62UJBly%2F6D1GVKPAfmGWkpzVTJke30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3010&quot; height=&quot;772&quot; data-origin-width=&quot;3010&quot; data-origin-height=&quot;772&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; prd로 구동되는것을 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;로그 확인&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1723906316825&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;nohup java -jar -Dspring.profiles.active=prd [jar 파일] &amp;amp;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;nohup : 백그라운드로 jar 파일을 실행할수 있게하는 옵션&lt;/li&gt;
&lt;li&gt;&amp;amp; : 실행시킨 프로세스의 PID를 반환&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;682&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chRXlI/btsI7WlNKEE/6SaB3xLvxFDV3ApIsH0R11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chRXlI/btsI7WlNKEE/6SaB3xLvxFDV3ApIsH0R11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chRXlI/btsI7WlNKEE/6SaB3xLvxFDV3ApIsH0R11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchRXlI%2FbtsI7WlNKEE%2F6SaB3xLvxFDV3ApIsH0R11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;682&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;682&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 백그라운드로 실행되고, 로그를 확인할수 있게됨&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;EC2 내부 MySQL 접속 확인&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1723907048284&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; mysql -h [RDS 엔드포인트] -u [사용자아이디] -p&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;-p : 패스워드로 접속한다는 옵션&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1240&quot; data-origin-height=&quot;1016&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byVSSd/btsI6YdNCEZ/3gafJic5Q5oZlzKYrn6bm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byVSSd/btsI6YdNCEZ/3gafJic5Q5oZlzKYrn6bm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byVSSd/btsI6YdNCEZ/3gafJic5Q5oZlzKYrn6bm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyVSSd%2FbtsI6YdNCEZ%2F3gafJic5Q5oZlzKYrn6bm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1240&quot; height=&quot;1016&quot; data-origin-width=&quot;1240&quot; data-origin-height=&quot;1016&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 잘 접속 되었음!&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;백그라운드 실행 프로세스 종료&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1723907188934&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ps -ef&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실행 프로세스 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1723907220902&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ps -ef | grep java&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;java에 관련된 실행중인 프로세스 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1723907455557&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kill -9 [PID]&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로세스 죽이기&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 배포하는 방법을 살펴봤다!&lt;/p&gt;</description>
      <category>DevOps/AWS</category>
      <category>AWS</category>
      <category>cloud</category>
      <category>Database</category>
      <category>EC2</category>
      <category>RDS</category>
      <category>Spring</category>
      <category>구축</category>
      <category>서버</category>
      <author>Ls._.Rain</author>
      <guid isPermaLink="true">https://lsdiary.tistory.com/128</guid>
      <comments>https://lsdiary.tistory.com/128#entry128comment</comments>
      <pubDate>Sun, 18 Aug 2024 00:11:46 +0900</pubDate>
    </item>
  </channel>
</rss>