[리눅스 한 학기 살기] #2 Docker 설치

curric·2025년 5월 21일
post-thumbnail

Docker란 무엇인가?


Docker는 컨테이너(Container)라는 기술을 사용하는 가상화 플랫폼이다.
전통적인 가상머신(VM)보다 훨씬 가볍고 빠르며, 백엔드 개발이나 devops 환경에서 필수적인 도구이다.

Docker를 사용하면 좋은 점

  • 앱 실행 환경이 어디서든 동일하게 유지된다.(개발-PC/서버 차이 없음)
  • 여러 앱을 동시에 돌려도 서로 간섭하지 않는다.
  • 실습용으로도 간편하게 다양한 서버/서비스를 올릴 수 있다.(MySQL, Redis, FastAPI 등)

보다 구체적인 내용(https://velog.io/@sungbinm/Docker%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80) 참고

Docker 설치 (Ubuntu 24.04 기준)


Ubuntu에 Docker를 설치하는 가장 안전하고 권장되는 공식 방법은 다음과 같다.

1) 시스템 패키지 업데이트 및 도구 설치

sudo apt update
sudo apt install ca-certificates curl gnupg
  • HTTPS 다운로드 및 GPG 키 등록을 위한 기본 도구들 설치

2) GPG 키 저장소 폴더 만들기

sudo install -m 0755 -d /etc/apt/keyrings
  • 보안 키를 저장할 디렉토리를 생성

3) Docker GPG 키 다운로드 및 등록

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  • Docker 공식 키를 받아서 Ubuntu에서 신뢰할 수 있도록 설정

4) Docker 저장소 등록

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • Docker 설치용 패키지 서버를 시스템에 등록

5) 패키지 목록 재갱신

sudo apt update

6) Docker 및 관련 패키지 설치

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • Docker를 쓸 때 필요한 구성요소를 전부 한꺼번에 설치

7) 설치 확인

docker --version

  • 출력되면 성공이다.


간단한 실습


설치만 하고 끝내기보단 실제로 Docker를 사용해서 실습을 해보려한다.

실습 1 : Redis 서버 띄워보기


Redis라는 백엔드 서비스(서버)를 Docker로 실행해보고, 서버가 실행되는게 뭔지 몸으로 느껴보려 한다. 포트를 통해 서버와 통신할 수 있다는 걸 체험할 수 있다.

간단하게 Redis란,

  • Redis는 초고속 데이터 저장소이다.
  • 메모리에 데이터를 저장해서 빠르게 읽고 쓰는 용도로 자주 사용된다.
  • 실제 웹 서비스에서 캐시, 세션 저장, 실시간 데이터 처리 등에 널리 사용된다.

Redis 실행

터미널에 아래 명령어를 친다.

docker run -d --name redis-server -p 6379:6379 redis

docker run은 Docker 컨테이너를 실행하는 것이고, Redis 이미지를 사용해서 컨테이너 이름을 redis-server로 지정하고 내 컴퓨터의 6379 포트를 Redis 컨테이너의 6379 포트와 연결해서 컨테이너를 생성한다.

실행 확인

docker ps를 통해 확인할 수 있다.

Redis 서버에 접속해보기

Redis 서버는 지금 Docker 컨테이너 안에서 실행되고 있기에, 이 서버에 명령을 내려보려면 Redis 클라이언트(recis-cil)이 필요하다.

docker exec -it redis-server redis-cli

-> docker exec(실행중인 컨테이너 안에서 명령어 실행) 즉 이를 통해 Redis 명령어를 입력할 수 있는 상태로 들어가게 된다.

ex)
set mykey hello
get mykey
-> mykey에 저장된 값 꺼내옴("hello")

cf) exit을 통해 다시 나갈 수 있음

Redis는 단순한 key-value 저장소이며, 엄청 빠른 메모리 기반 저장소라서 캐시, 세션 저장 등에 자주 사용된다.

부가적인 명령어들

  • docker stop redis-server 서버중지
  • docker start redis-server 서버 다시 시작
  • docker rm -f redis-server 서버 완전히 삭제 (컨테이너 삭제)
  • docker logs redis-server 서버 로그 확인

실습 2 : PostgreSQL DB 띄워보기


이번엔 PostgreSQL이라는 관계형 데이터베이스(DB) 서버를 Docker로 실행해보고, 데이터베이스도 서버로 동작한다는 것을 체험해보려 한다.

간단하게 PostgreSQL이란,

  • PostgreSQL은 널리 쓰이는 오픈소스 관계형 데이터베이스 시스템이다.
  • 데이터를 table 형식으로 저장하고 SQL이라는 언어로 데이터를 관리한다.
  • 실제 웹 서비스에서 사용자 정보, 게시글, 주문 내역 등 다양한 데이터를 안전하게 저장하고 조회하는데 사용된다.

PostgreSQL 실행

docker run -d --name my-postgres -e POSTGRES_PASSWORD=1234 -p 5432:5432 postgres

앞 과정과 비슷하고 똑같이 ps를 통해 확인할 수 있다.

PostgreSQL에 접속해보기

docker exec -it my-postgres psql -U postgres

앞 과정과 비슷하고 postgres 사용자로 psql 클라이언트를 실행한 것이다.

ex)

CREATE TABLE test (id SERIAL PRIMARY KEY, name VARCHAR(50));`
INSERT INTO test (name) VALUES ('hello');`
SELECT * FROM test;

table 생성하고 데이터를 넣고 내용 조회하는 간단한 코드

cf) \q를 통해 접속 종료할 수 있음

실습 3 : 간단한 웹 API 서버 띄워보기(FastAPI)


1. 폴더만들고 들어가기

mkdir fastapi-example
cd fastapi-example

2. main.py 파일 만들기

nano main.py

그리고 이 nano editor를 활용해서 아래 코드를 작성해준다.

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, Docker!"}
  • Ctrl + O -> 엔터 (저장)
  • Ctrl + X (종료)

3. Dockerfile 만들기

nano Dockerfile

다음 내용 붙여넣기:

FROM python:3.10

WORKDIR /app
COPY main.py .

RUN pip install fastapi uvicorn

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

동일하게 저장후 종료

4. 이미지 빌드

docker build -t my-fastapi .

빌드할 Dockerfile이 있는 경로를 꼭 지정해줘야하기 때문에 .을 무조건 빼먹으면 안 된다.

5. Docker 컨테이너 실행

docker run -d -p 8000:8000 my-fastapi

6. 웹 브라우저에서 확인

curl http://localhost:8000
profile
학생입니다

0개의 댓글