์ปจํ ์ด๋ ๊ธฐ์ ์ ๋ฐ์ ๊ณผ์
- Traditional Deployment
- ํ๋์จ์ด ์์ OS ์ค์น ํ App ์คํ์ ํ์ํ Library๋ฅผ OS์ ์ค์น
- ๋ค์ํ ์๋น์ค๋ฅผ ํ ์๋ฒ์์ ์ด์ํด์ผ ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ (๋น์ฉ ํจ์จ์ฑ)
- ์๋น์ค๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถฉ๋์ด ๋ฐ์ํจ์ ๊น๋ผ ์๋น์ค๊ฐ ํ๊ฒฝ ๊ฒฉ๋ฆฌ๊ฐ ์๊ตฌ๋จ
- Virtualized Deployment
- Hypervisor: VM(Virtual Machine)์ ๊ด๋ฆฌํ๋ ์ญํ ์ ํจ
- Guest OS(VM)์ ํ๋์จ์ด ์์์ ์๋ฎฌ๋ ์ดํ ์ ํ๋ค๋ณด๋ ์ฑ๋ฅ ํ๋ฝ์ด ๋ฐ์ํ๋ฉฐ, ๊ฐ์๋จธ์ ์ ๋์ฐ๊ธฐ ์ํ ์์์ ์ค๋ฒํค๋๊ฐ ๋ฐ์
- Container Deployment
- Docker : ๋ํ์ ์ธ Container Engine
- chroot, namespace ๋ฑ์ ์ด์ฉํ ๊ฒฉ๋ฆฌ๊ธฐ์ ์ ๊ณต
- Host Process์์ ์คํ๋๋ ํ๊ฒฝ์ด๊ธฐ์ ์ฑ๋ฅํ๋ฝ๊ณผ ์์ ์ค๋ฒํค๋ ๋ฌธ์ ์์ ๋ฒ์ด๋จ
- Kubernetes Deployment
- Kubernetes : ๋ํ์ ์ธ Container Orchestration System
- ์ฌ๋ฌ ์๋ฒ์์ ๊ตฌ์ฑ๋ ํ๊ฒฝ์์ Container๋ฅผ ์ด๋ป๊ฒ ์ ์ด์ํ ์ ์๋์ง ๋ชฉ์ ์ผ๋ก ํจ
Docker์ ๊ตฌ์ฑ์์
- Image์ Container๋ Docker์์ ์ฌ์ฉํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋จ์๋ก Image์ Container๋ 1:N ๊ด๊ณ
- ์ด๋ฏธ์ง(Image): Container๋ฅผ ์์ฑํ ๋ ํ์ํ ์์๋ก Container์ ๋ชฉ์ ์ ๋ง๋ ๋ฐ์ด๋๋ฆฌ์ ์์กด์ฑ์ด ์ค์น๋์ด ์์ผ๋ฉฐ, ์ด๋ ๋ฐ์ด๋๋ฆฌ๋ ์ฌ๋ฌ ๊ฐ์ ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ
- ์ปจํ ์ด๋(Container): Host์ ๋ค๋ฅธ Container๋ก๋ถํฐ ๊ฒฉ๋ฆฌ๋ ์์คํ ์์๊ณผ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ธ์ค๋ก Container์์ ๋ฌด์์ ํ๋ ๊ธฐ๋ฐ์ด ๋๋ Image๋ ์ํฅ์ ๋ฐ์ง ์์
- Docker Image์ Container ์์ฑ ํ๋ก์ธ์ค
- Docker์ Image ์ด๋ฆ ๊ตฌ์ฑ (ex: dockerhub/nginx:1.21)
- ์ ์ฅ์ ์ด๋ฆ(Repository Name) : ์๋ต ์ ๊ธฐ๋ณธ ์ ์ฅ์์ธ Dockerhub๋ก ์ธ์
- Public ๋์ปค ์ด๋ฏธ์ง ์ ์ฅ์ : Dockerhub, QUAY
- Private ๋์ปค ์ด๋ฏธ์ง ์ ์ฅ์ : AWS ECR, Docker Registry
- ์ด๋ฏธ์ง ์ด๋ฆ(Image Name)
- ์ด๋ฏธ์ง ํ๊ทธ(Image Tag) : ์๋ต ์ ์ต์ ๋ฆฌ๋น์ ์ ๊ฐ๋ฆฌํค๋ lastest๋ก ์ธ์
- ์ ์ฅ์ ์ด๋ฆ(Repository Name) : ์๋ต ์ ๊ธฐ๋ณธ ์ ์ฅ์์ธ Dockerhub๋ก ์ธ์
๊ธฐ๋ณธ ํ๊ฒฝ ์ค์น
- Container๋ ๊ธฐ๋ณธ์ ์ผ๋ก Linux๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์๋น์ค์ด๊ธฐ์ Ubuntu ํ๊ฒฝ์ ์ถ์ฒ
Docker
- Single Container๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋๊ตฌ๋ก ์ปค๋งจ๋ ๋ผ์ธ์์ ๋ช ๋ น์ด ์คํ ๊ฐ๋ฅ
- ๊ด๋ จ ๋งํฌ : https://docs.docker.com/engine/install/ubuntu
- ํ๊ธฐ์ Shell Script ์คํ (install-docker.sh)
#!/usr/bin/env bash
## INFO: https://docs.docker.com/engine/install/ubuntu/
set -euf -o pipefail
DOCKER_USER=ubuntu
# Install dependencies
sudo apt-get update && sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
# Add Docker’s official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --yes --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Set up the stable repository
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker CE
sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# Use Docker without root
sudo usermod -aG docker $DOCKER_USER
- Docker ์คํ ์ ํ๊ธฐ์ ๊ถํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ฉด /var/run/docker.sock ํ์ผ์ ๊ถํ ๋ณ๊ฒฝ ์งํ ํ์
# Docker Test : with Permission Error
docker ps -a
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
# Solution 1 : Change File Permission
sudo chmod 666 /var/run/docker.sock
# Solution 2 : Change Group Ownership
sudo chown root:docker /var/run/docker.sock
Docker-Compose
- yaml ํ์ผ ๊ธฐ๋ฐ์ผ๋ก Multi Container๋ฅผ ๊ด๋ฆฌํ ์ ์๋ Client ์๋น์ค
- yaml ํ์ผ์ ๋ช ๋ น์ด๋ฅผ ์ ์ด์ ์ปจํ ์ด๋๋ฅผ ์ ์ํ๊ณ ๊ด๋ฆฌ
- ๊ด๋ จ ๋งํฌ : https://docs.docker.com/compose/install
- ํ๊ธฐ์ Shell Script ์คํ (install-docker-compose.sh)
#!/usr/bin/env bash
## INFO: https://docs.docker.com/compose/install/
set -euf -o pipefail
DOCKER_COMPOSE_VERSION=v2.1.1
# Download and install
sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
๋์ปค ์ค์น ํ
๋์ปค ๋ฒ์ ํ์ธ
sudo docker version
๊ถํ ์ค๋ฅ ์ ๋ช ๋ น์ด ์ ๋ ฅ
sudo chmod 666 /var/run/docker.sock
๋์ปค ์ด๋ฏธ์ง ๋ค์ด๋ฐ๊ธฐ
docker pull ubuntu:latest
๋์ปค ์ด๋ฏธ์ง ํ์ธ
docker images
์ด๋ฏธ์ง๋ฅผ ์ปจํ ์ด๋๋ก ์คํํ ๋ค bash shell ์ด๊ธฐ -> ์๋ก์ด shell๋ก ์ ์๋ ๊ฒ ํ์ธ
docker run -i -t —name ubuntu01 ubuntu /bin/bash
exit ํ๊ณ ๋น ์ ธ๋์์ ๋ค์ ubuntu01 ์์ํ ๋
docker restart ubuntu01
๋ค์ ํด๋น ์ปจํ ์ด๋์ ์ ์
docker attach ubuntu01
์คํ ์ค์ธ ์ปจํ ์ด๋ ํ์ธ ํ ์ข ๋ฃ
docker ps -a -q
docker stop (์ปจํ
์ด๋id)
์ปจํ ์ด๋ ์ฌ์คํํด๋ณด๊ธฐ
docker restart 4eee6afdeec6
์ฌ์คํ ํ์ธ
docker ps
์ปจํ ์ด๋ ํ์ธํ๊ธฐ
docker ps -a
์ปจํ ์ด๋ ์ญ์
docker rm
์ด๋ฏธ์ง ์ญ์
docker rmi ์ด๋ฏธ์ง์ด๋ฆ:์ด๋ฏธ์งํ๊ทธ
728x90