Cloud Engineering Bootcamp/6. Docker (13)
2025-09-23 09:17:05
반응형

반응형
2025-09-23 09:16:10
반응형

ㅇㅇ

반응형
2025-09-22 20:17:10
반응형

1. Django 환경 구축하기


1-1. 빌드 도구/의존 패키지 설치하기

sudo apt update

sudo apt install -y \
  build-essential make curl ca-certificates git \
  libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev \
  libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \
  libffi-dev liblzma-dev uuid-dev

1-2. pyenv 설치

curl https://pyenv.run | bash

1-3. 셸 초기화(.bashrc) 설정 추가하기

# 홈디렉토리에서 파일 목록 보기

ls -al

vi .bashrc

vi 편집기에서 Shift + G 단축키로 맨 아래로 이동 후 아래 설정 추가
# 해당 부분을 문서 가장 아래 추가
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

1-4. 쉘 재시작 

exec $SHELL

1-5. pyenv설치 확인

pyenv


2. pyenv를 활용한 파이썬 가상 환경 구축하기


파이썬 버전 확인 및 설치

2-1. 설치 가능한 파이썬 버전 확인

pyenv install --list

2-2. pyenv 최신화하기

cd ~/.pyenv && git pull

2-3. Python 설치하기

pyenv install 3.11.9

2-4. pyenv 버전 확인

pyenv versions

2-5. 기본 사용 버전 지정

pyenv global 3.11.9

2-6. Python 버전 확인

python -V

3. 가상 환경 생성 및 활성화하기

3-1. 가상 환경 생성하기

pyenv virtualenv 3.11.9 py3_11_9
pyenv versions

3-2. 가상 환경 활성화하기

pyenv activate [가상환경이름]
pyenv activate py3_11_9

3-3. 라이브러 설치 진행

python -m pip install --upgrade pip setuptools wheel

3-4. 필요한 파이썬 라이브러리 설치하기

웹프레임워크 : django
웹서버와 통신하기 위한 라이브러리 : gunicorn
파이썬에서 PostgreSQL활용하기위해 사용하는 라이브러리 : psycopg2-binary
pip install django gunicorn psycopg2-binary

3-5. 파이썬 인터프리터에서 import 및 version 확인

python

import django
import gunicorn
import psycopg2

django.__version__
gunicorn.__version__
psycopg2.__version__

quit()

3-6. tree 설치하기

sudo apt install tree
cd ..
cd work
tree ./

3-7. Django 실행을 위한 네트워크 설정

 

반응형
2025-09-22 20:15:47
반응형

ㅇㅇ

반응형
2025-09-22 20:14:41
반응형

dd

반응형
2025-09-22 20:14:04
반응형

ㅇㅇ

반응형
2025-09-22 20:13:17
반응형

ㅇㅇ

반응형
2025-09-20 03:48:11
반응형
docker image pull postgres

docker image ls


docker container ls

 

psql -U postgres


 

 

 

 

 


컨테이너 재생성 후 데이터 확인

반응형
2025-09-19 11:09:02
반응형
docker network ls

 

docker container ls -a
docker container start [my-ubuntu:0.1 Container ID]
docker container attach [my-ubuntu:0.1 Container ID]
ifconfig

 

 

nice@myserver01:~$ docker container run -it --network=host my-ubuntu:0.1 bash
root@myserver01:/# ifconfig
root@myserver01:/# exit

 

nice@myserver01:~$ docker container run -it --network=bridge my-ubuntu:0.1 bash
root@myserver01:/# ifconfig
root@myserver01:/# exit

 

nice@myserver01:~$ docker container run -it --network=none my-ubuntu:0.1 bash
root@myserver01:/# ifconfig
root@myserver01:/# exit


 

 


 

 


 


 

 

 


도커 컨테이너 네트워크 퀴즈

Q1. 네트워크 드라이버 비교

  1. ubuntu 이미지를 이용해 컨테이너를 각각 네트워크 모드로 실행하시오. (net-tools 또는 iproute2 설치)
    • bridge
    • host
    • none

 


 

 

 

 

    2. 컨테이너 내부에서 네트워크 정보를 확인해 결과를 비교하고 차이를 확인하세요. (ifconfig 또는 ip addr)

  • apt-get update && apt-get install -y iproute2
  • ip a

Q2. 파일 전송

  • 호스트 ↔ 컨테이너 파일 전송
    1. 호스트에서 work/ch03/ex01/hello.txt 파일을 만든다. (내용은 자유)
    2. 실행 중인 컨테이너의 /home 디렉토리로 복사하시오.
    3. 컨테이너 내부에서 해당 파일을 확인하시오.
  • 컨테이너 ↔ 호스트 파일 전송
    1. 컨테이너 내부에서 /home/hello.txt 를 복사해 /home/hello2.txt 로 만든 뒤, 현재 시간(date)을 추가하시오.
    2. 이 파일을 호스트의 work/ch03/ex01 디렉토리로 복사하시오.
    3. 호스트에서 파일이 잘 복사되었는지 확인하시오.
반응형
2025-09-18 11:31:50
반응형
# openjdk 검색
docker search openjdk

 

# docker mysql
docker search mysql

 

# 실행 중인 컨테이너만 표시
docker container ls

# 컨테이너 전체 목록 표시 (실행 중 및 정지 상태)
docker container ls -a

반응형
2025-09-18 01:12:03
반응형

🐳 리눅스(Ubuntu)에서 Docker 설치하기

1. 사전 준비 사항

필요한 패키지 설치

sudo apt-get update  
# 패키지 목록을 최신으로 갱신

sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
# 도커 설치에 필요한 기본 도구 설치
# - ca-certificates : 보안 인증서 관련
# - curl : 인터넷에서 파일 다운로드
# - gnupg : 보안 키 관리
# - lsb-release : Ubuntu 버전 확인용

2. GPG 키 추가

sudo mkdir -m 0755 -p /etc/apt/keyrings
# 도커 키를 저장할 폴더 생성 (권한 0755)

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
    sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 도커 공식 GPG 키를 다운로드 후 변환하여 저장


3. Docker 리포지토리 추가

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 도커 소프트웨어를 받을 수 있는 저장소(repository)를 시스템에 등록
 
 
 
 

4. Docker 엔진 설치

sudo apt-get update
# 저장소 등록 후 다시 패키지 목록 업데이트

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 도커 본체와 관련 도구 설치
# - docker-ce : 도커 엔진 (Community Edition)
# - docker-ce-cli : 도커 명령어 도구
# - containerd.io : 컨테이너 관리 런타임
# - docker-buildx-plugin : 확장 빌드 도구
# - docker-compose-plugin : 여러 컨테이너 실행 도구
 

💡 설치 중 Y 를 입력해야 설치가 진행됩니다.


5. 설치 확인

docker # 도커 명령어 실행 → 사용 가능한 옵션이 나오면 정상 설치


6. 도커 서비스 상태 확인

systemctl status docker # 도커 서비스가 실행 중인지 확인 # active (running) 이 나오면 정상 실행 중


7. 일반 사용자도 도커 사용 가능하게 설정

sudo usermod -aG docker $USER
# 현재 사용자를 docker 그룹에 추가 → sudo 없이 사용 가능

exit
# 세션 종료 후 다시 로그인해야 반영됨


8. 도커 버전 확인

docker version # 도커 클라이언트/서버 버전 확인


9. 샘플 실행 (Hello World)

docker run hello-world 

# 도커 허브에서 hello-world 이미지 다운로드 후 실행 
# 정상 설치 시 안내 메시지 출력


📊 설치 과정 시각화 (Mermaid)

 

 


🔧 현업에서 도커 설치 후 하는 일

  1. 개발 환경 구축
    • 팀원이 같은 환경에서 개발 → 환경 차이 줄임
  2. 테스트 서버 운영
    • docker-compose 로 웹 서버, DB, 캐시 서버 쉽게 띄움
  3. 자동 배포 파이프라인 구축 (CI/CD)
    • 깃허브 푸시 → 도커 이미지 빌드 → 서버 자동 배포
  4. 클라우드 서비스 연계
    • AWS ECS, EKS, GCP GKE 등에서 컨테이너 기반 운영

✅ 정리

  • Docker 설치는 패키지 준비 → 키 등록 → 저장소 추가 → 엔진 설치 순서
  • 설치 후 docker run hello-world 로 정상 동작 여부 확인
  • 현업에서는 개발환경 통일, 테스트 자동화, 마이크로서비스 운영에 필수

 

더보기

🐳 Ubuntu에서 Docker 설치 요약

1. 사전 준비

sudo apt-get update sudo apt-get install ca-certificates curl gnupg lsb-release

2. GPG 키 추가

sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
 

3. 리포지토리 등록

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \ | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4. Docker 설치

sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

5. 설치 확인

docker # 명령어 확인 
systemctl status docker # 실행 상태 확인 
docker version # 버전 확인

6. 일반 사용자 권한 추가

sudo usermod -aG docker $USER 
exit # 로그아웃 후 다시 로그인

7. 샘플 실행

docker run hello-world

📊 설치 흐름 (Mermaid)

 
 

✅ 현업 활용

  • 팀원 모두 같은 개발환경 공유
  • 테스트/운영 서버에 빠른 배포
  • CI/CD 자동화 (GitHub, Jenkins와 연동)
  • 클라우드 연계 (AWS ECS/EKS, GCP GKE 등)

 

반응형
2025-09-18 00:59:19
반응형

# 🐳 Docker 사용 가이드

## 1. 도커 구성 요소

### 📌 주요 구성요소

- **Docker Client (docker-cli)**  
    사용자가 터미널에서 명령어 입력 (예: `docker run`)
    
- **Docker Daemon (dockerd)**  
    백그라운드에서 실행, 컨테이너/이미지 관리
    
- **containerd**  
    컨테이너의 전체 생애주기 관리 (생성, 실행, 중지, 삭제)
    
- **runc**  
    실제 컨테이너 실행 담당
    
- **containerd-shim**  
    containerd ↔ runc 중간 연결자, 실행 조정
    

---

### 📊 도커 구성요소 다이어그램

```mermaid
flowchart TD
    A["사용자 (Docker CLI)"] --> B["Docker Daemon (dockerd)"]
    B --> C["containerd (컨테이너 생애주기 관리)"]
    C --> D["runc (컨테이너 실행)"]
    C --> E["containerd-shim (중개자)"]
```


---

## 2. 도커 실행 환경

- **리눅스**: 바로 설치 가능 (CLI 환경 위주)
    
- **윈도우 / macOS**:
    
    - Docker Desktop 패키지 사용 (내부적으로 리눅스 VM 실행)
        
    - 사용자는 VM 신경 안 쓰고 일반 프로그램처럼 실행 가능
        

---

### 📋 도커 Desktop 요구사항

- **윈도우**
    
    - Windows 10 64bit (Pro, Enterprise, Education) / Build 16299 이후
        
    - Home 버전은 WSL2 필요
        
    - CPU 가상화(SLAT) 지원, 메모리 4GB 이상
        
- **macOS**
    
    - 2010년 이후 모델
        
    - macOS 10.13 이후, 메모리 4GB 이상
        
- **리눅스**
    
    - Ubuntu 16.04 이후 등 주요 배포판 지원
        

---

## 3. 도커 동작 방식

### 📊 동작 흐름

```mermaid
sequenceDiagram
    participant U as 사용자 (docker run)
    participant C as Docker Client
    participant D as Docker Daemon
    participant H as Docker Hub
    participant N as Container

    U->>C: docker run hello-world
    C->>D: 명령 전달
    D->>H: 이미지 요청 (hello-world)
    H-->>D: 이미지 다운로드
    D->>N: 컨테이너 생성 및 실행
    N-->>U: 실행 결과 출력
```



---

### 📦 이미지와 컨테이너

- **이미지(Image)**
    
    - 프로그램 + 라이브러리 + 설정을 묶은 패키지
        
    - "빵틀" 같은 역할
        
    - 여러 개의 "레이어(Layer)"로 구성
        
- **컨테이너(Container)**
    
    - 이미지를 실행한 인스턴스
        
    - 실행/중지/삭제 가능
        
    - 독립된 파일 시스템과 환경을 가짐
        

---

## 4. 도커 첫 실행 (Hello World)

### 🚀 명령어

`# 도커 "hello-world" 컨테이너 실행 docker run hello-world`  

### 📝 한 줄씩 설명

- `docker` → 도커 명령어 실행
    
- `run` → 새로운 컨테이너를 실행하겠다는 의미
    
- `hello-world` → Docker Hub에서 제공하는 기본 테스트 이미지
    

---

### ⚡ 실행 과정

1. 사용자가 `docker run hello-world` 입력
    
2. Docker Client → Docker Daemon에 명령 전달
    
3. Daemon이 Docker Hub에서 이미지 다운로드
    
4. Daemon이 컨테이너 생성 및 실행
    
5. 실행 결과를 사용자 터미널에 출력
    

---

## 5. 컨테이너가 가벼운 이유

- 운영체제를 하나씩 포함하는 VM과 달리,  
    **호스트 OS 커널을 공유**해서 불필요한 리소스 사용이 없음.
    
- 따라서 실행 속도도 빠르고, 메모리/디스크 효율도 좋음.
    

---

## 6. 현업에서 도커 활용 사례

- **개발 환경 공유**
    
    - 팀원 모두 같은 개발 환경 사용 (환경 차이로 인한 문제 방지)
        
- **테스트 및 배포 자동화 (CI/CD)**
    
    - GitHub Actions, Jenkins, GitLab CI/CD와 연계해 자동 배포
        
- **마이크로서비스 운영**
    
    - 여러 개의 독립적인 컨테이너로 서비스 운영 (예: 웹, DB, 캐시 분리)
        
- **클라우드 환경과 결합**
    
    - AWS ECS, EKS / GCP GKE / Azure AKS 등과 함께 사용
        

---

# ✅ 정리

- 도커는 **이미지 → 컨테이너 실행 구조**
    
- **Docker CLI → Daemon → containerd → runc** 흐름
    
- 현업에서는 **개발환경 통일, 자동화 배포, 마이크로서비스 운영**에 필수
    

---

👉 여기까지 하면 **도커 사용 구조 + 설치 + 동작 원리 + Hello World 실습**을 전체적으로 이해할 수 있어요.

반응형