반응형
🐳 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을 사용하면 다양한 서비스를 효율적으로 관리 가능한 이미지로 만들 수 있습니다.
반응형
'컨테이너' 카테고리의 다른 글
Docker 네트워크 및 볼륨 관리 실습 가이드 (0) | 2025.03.11 |
---|---|
Docker(Rocky Linux) 기초 사용법: 컨테이너 기초 (0) | 2025.03.10 |