<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Devops on HandsLog</title>
    <link>https://blog.jsontapose.com/categories/devops/</link>
    <description>Recent content in Devops on HandsLog</description>
    <generator>Hugo -- 0.146.0</generator>
    <language>ko-kr</language>
    <lastBuildDate>Mon, 23 Mar 2026 13:28:56 +0000</lastBuildDate>
    <atom:link href="https://blog.jsontapose.com/categories/devops/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Dockerizing의 의미와 기본 워크플로우</title>
      <link>https://blog.jsontapose.com/posts/dockerizing-basics-and-workflow-5d74c9/</link>
      <pubDate>Mon, 23 Mar 2026 13:28:56 +0000</pubDate>
      <guid>https://blog.jsontapose.com/posts/dockerizing-basics-and-workflow-5d74c9/</guid>
      <description>&lt;h3 id=&#34;개요&#34;&gt;개요&lt;/h3&gt;
&lt;p&gt;Dockerizing은 Docker 컨테이너를 사용해 애플리케이션을 패키징하고 배포하고 실행하는 일련의 과정
코드와 런타임, 의존성, 설정을 이미지로 고정하여 환경 차이와 배포 리스크를 낮추는 것이 목적&lt;/p&gt;
&lt;h3 id=&#34;핵심-개념&#34;&gt;핵심 개념&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Image: 애플리케이션과 런타임, 의존성, 설정을 포함한 불변 아티팩트&lt;/li&gt;
&lt;li&gt;Container: 이미지를 실행한 격리된 프로세스 단위&lt;/li&gt;
&lt;li&gt;Dockerfile: 이미지를 만들기 위한 선언형 스펙&lt;/li&gt;
&lt;li&gt;Registry: 이미지를 저장하고 배포하는 원격 저장소&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;동작-흐름&#34;&gt;동작 흐름&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;빌드 단계&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Dockerfile 작성 후 docker build 실행해 이미지 생성&lt;/li&gt;
&lt;li&gt;태그 전략 수립 필요 ex) app:1.2.3, app:stable, app:commit-hash&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;배포 단계&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;레지스트리에 docker push&lt;/li&gt;
&lt;li&gt;환경별 레지스트리 또는 네임스페이스 구분으로 충돌 방지&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;실행 단계&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;docker run으로 컨테이너 기동, 포트 매핑과 환경 변수 주입&lt;/li&gt;
&lt;li&gt;로그는 표준 출력으로 수집, 상태 점검을 위해 헬스체크 설정 권장&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;업데이트와 롤백&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;불변 이미지와 태그 기반 배포로 롤백 단순화&lt;/li&gt;
&lt;li&gt;레지스트리 보존 정책으로 이력 관리&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;간단-예시&#34;&gt;간단 예시&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;최소 Dockerfile 스니펫&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;FROM alpine:3.19
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;WORKDIR /app
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;COPY . .
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CMD [&amp;#34;sh&amp;#34;, &amp;#34;-c&amp;#34;, &amp;#34;echo hello&amp;#34;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;로컬 빌드와 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker build -t app:local .
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker run --rm -p 8080:8080 app:local&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;주의와-베스트프랙티스&#34;&gt;주의와 베스트프랙티스&lt;/h3&gt;
&lt;ul&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;li&gt;컨테이너 리소스 제한 설정으로 노이즈 네이버 이슈 완화&lt;/li&gt;
&lt;li&gt;개발과 운영 환경 간 설정 차이는 환경 변수와 명시적 구성으로 관리&lt;/li&gt;
&lt;li&gt;보안 스캔과 베이스 이미지 업데이트 자동화로 취약점 대응&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;마무리&#34;&gt;마무리&lt;/h3&gt;
&lt;p&gt;Dockerizing은 애플리케이션을 이미지로 표준화해 이식성과 재현성을 확보하고 배포 파이프라인 단순화에 기여함
핵심은 선언적 스펙으로 빌드하고 불변 이미지를 레지스트리로 배포한 뒤 태그와 자동화를 통해 일관되게 실행하는 것
작게 빠르게 안전하게의 원칙을 적용하면 운영 효율과 신뢰도 상승&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
