컨테이너

Dockerfile을 이용한 다양한 서비스 컨테이너 이미지 만들기

kkuniyo 2025. 3. 12. 16:30
반응형

🐳 Dockerfile을 이용한 다양한 서비스 컨테이너 이미지 만들기

Docker는 애플리케이션을 패키징하고 배포하는 데 강력한 도구입니다.
그중에서도 Dockerfile을 사용하면 컨테이너 이미지를 코드로 정의하고,
일관된 환경에서 다양한 서비스를 자동으로 구축할 수 있습니다.

📌 이번 글에서는 Dockerfile을 사용하여 웹 서버, 데이터베이스, 애플리케이션을 컨테이너화하는 방법을 소개합니다! 🚀


📌 1. Dockerfile이란? (기본 개념 이해하기)

Dockerfile이란?
➡ Docker 컨테이너 이미지를 자동으로 생성할 수 있도록 명령어를 정의한 스크립트 파일
➡ docker build 명령어를 통해 Dockerfile을 기반으로 새로운 이미지 생성 가능

Dockerfile의 주요 장점
일관된 환경 구축 → 어디서든 동일한 환경으로 배포 가능
자동화 및 유지보수 용이 → 코드로 환경을 정의하여 변경 관리가 쉬움
CI/CD 파이프라인과 연동 가능 → 애플리케이션 배포 자동화 가능

📌 쉽게 말해?

"Dockerfile을 사용하면 컨테이너 환경을 코드로 정의하고, 원하는 설정을 자동화할 수 있다!"


📌 Rocky Linux에 Apache 웹 서버 구축하기

Dockerfile 작성

FROM rockylinux/rockylinux
RUN dnf install -y httpd
COPY index.html /var/www/html/index.html
CMD ["/usr/sbin/httpd", "-DFOREGROUND"]
EXPOSE 80
  • index.html 파일을 사전에 준비합니다.

이미지 빌드 및 컨테이너 실행

docker build -t ysjang/web .
docker run -itd -p 60080:80 --name h1 ysjang/web

📌 Alpine Linux에 Nginx 웹 서버 구축하기

Dockerfile 작성

FROM alpine
RUN sed -i 's/https/http/g' /etc/apk/repositories
RUN apk add nginx
COPY nginx.conf /etc/nginx/nginx.conf
COPY index.html /var/lib/nginx/html/index.html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
  • 사전에 nginx.conf와 index.html 파일을 준비합니다.

이미지 빌드 및 컨테이너 실행

docker build -t ysjang/nginx .
docker run -itd -p 60180:80 --name n1 ysjang/nginx

📌 Rocky Linux에 FTP 서버 구축하기

Dockerfile 작성

FROM rockylinux/rockylinux
RUN dnf install -y vsftpd passwd
RUN mkdir /vftp
RUN useradd -m -s /bin/bash aaa && echo "aaa:1234" | chpasswd
COPY ban /vftp/ban
COPY chroot /vftp/chroot
COPY vsftpd.conf /etc/vsftpd/vsftpd.conf
EXPOSE 21 62000-62010
CMD ["/usr/sbin/vsftpd", "-obackground=NO"]
  • 미리 ban, chroot, vsftpd.conf 파일을 준비해야 합니다.

이미지 빌드 및 컨테이너 실행

docker build -t ysjang/ftp .
docker run -itd -p 21:21 -p 62000-62010:62000-62010 --name f1 ysjang/ftp

📌 Rocky Linux에 DNS 서버(BIND) 구축하기

Dockerfile 작성

FROM rockylinux/rockylinux
RUN dnf install -y bind bind-utils bind-libs
COPY named.rfc1912.zones /etc/named.rfc1912.zones
COPY named.conf /etc/named.conf
COPY ysjang.com /var/named/ysjang.com
RUN chmod 755 /var/named
RUN chmod 755 /var/named/ysjang.com
CMD ["/usr/sbin/named","-c","/etc/named.conf","-g","-u","named"]
EXPOSE 53/tcp 53/udp
  • DNS 설정 파일(named.rfc1912.zones, named.conf, ysjang.com)을 미리 준비해야 합니다.

이미지 빌드 및 컨테이너 실행

docker build -t ysjang/dns .
docker run -itd -p 53:53/tcp -p 53:53/udp --name d1 ysjang/dns

📌 테스트 및 환경 설정

Rocky Linux 9-2의 DNS 주소를 Rocky Linux 9-1의 IP로 변경하고, 웹(HTTP), FTP 서비스가 정상 작동하는지 확인하여 구축한 서비스들이 올바르게 설정되었는지 테스트합니다.

이와 같이 Dockerfile을 사용하면 다양한 서비스를 효율적으로 관리 가능한 이미지로 만들 수 있습니다.

반응형