# 필수는 아니나 Dockerfile 를 제작할 때에는 디렉토리 생성 후 해당 디렉토리에 접근해 사용할 것을 권장 

 

1. HTTP 서비스 구축 

 1.1. 디렉토리 만들기 : mkdir /http

 1.2. 디렉토리 들어가기 : cd /http

 1.3. Dockerfile 만들기 : vi Dockerfile

# step1 : base image
FROM    rockylinux:9

# step2 : httpd install

RUN    dnf install -y httpd
RUN    dnf install -y net-tools
RUN    sed -i 's/Listen 80/Listen 8080/' /etc/http/conf/httpd.conf
RUN    systemctl enable httpd

# step3 : index.html file copy

COPY    index.html /var/www/html/

# step4 : web execute

CMD     /usr/sbin/httpd -D FOREGROUND

# step5 : port

EXPOSE  8080

 

 1.4. index.html 만들기 : vi index.html

<html>
<body>
<h1>DOCKERFILE-TEST</h1>
</body>
</html>

 

 1.5. 빌드 : docker bulid -t httpd:behwang .

 1.6. 컨테이너 실행 : docker run -itd -p 60080:80 --name h1 httpd:behwang

 

2. FTP 서비스 구축 

 2.1. 디렉토리 만들기 : mkdir /ftp

 2.2. 디렉토리 들어가기 : cd /ftp

 2.3. Dockerfile 만들기 : vi Dockerfile

#Dockerfile
FROM    rockylinux:9

RUN     dnf install -y vsftpd

RUN     setenforce 0

COPY    user.sh /ftp/user.sh

COPY    ftp.txt /ftp/ftp.txt
COPY    vsftpd.conf /etc/vsftpd/vsftpd.conf
COPY    chroot_list /etc/vsftpd/chroot_list

RUN     sh /ftp/user.sh


EXPOSE  21      50000-50010


CMD     ["/usr/sbin/vsftpd","-obackground=NO"]

 

 2.4. user.sh 만들기 : vi user.sh

useradd a
echo 'It1' | passwd --stdin a
useradd b
echo 'It1' | passwd --stdin b

 

 2.5. ftp.txt 만들기 : vi ftp.txt

+++++++++++++++++++++
Docker!
Vsftpd!
+++++++++++++++++++++

 

 2.6. vsftpd.conf 만들기 : vi vsftpd.conf

#vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
banner_file=/test/ftp.txt
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50010
allow_writeable_chroot=YES

 

 2.7. chroot_list 만들기 : vi chroot_list

a

 

 2.8. 빌드 : vi Dockerfile

 2.9. 컨테이너 실행 : docker run -d -p 21:21 -p 50000-50010:50000-50010 --name f1 vsftpd:behwang

 2.10. 방화벽 설정

  step1) firewall-cmd --permanent --add-port=21/tcp
  step2) firewall-cmd --permanent --add-port=50000-50010/tcp
  step3) 저장 : firewall-cmd --reload


 

3. DNS 구축 

 3.1. 디렉토리 만들기 : mkdir /bind

 3.2. 디렉토리 들어가기 : cd /bind

 3.3. Dockerfile 만들기 : vi Dockerfile

# DNS Build
# Step 1 : Base Image Install
FROM    rockylinux:9

# Step 2 : Bind Package Install
RUN     dnf install -y bind bind-utils bind-libs
RUN     dnf install -y net-tools
RUN     sed -i 's/127.0.0.1/any/g' /etc/named.conf
RUN     sed -i 's/localhost/any/g' /etc/named.conf
RUN     systemctl enable named

# Step 3 : Configuration File Settiong

COPY    named.rfc1912.zones /etc/named.rfc1912.zones
COPY    behwang.com /var/named/
COPY    resolv.conf /etc/resolv.conf
RUN     chmod 755 /var/named/behwang.com

# Step 4 : named execute
CMD     ["/usr/sbin/named", "-c", "/etc/named.conf", "-g", "-u", "named"]

# Step 5 : Port
EXPOSE  53/udp
EXPOSE  53/tcp

 

3.4. named.rfc1912.zones 만들기 : vi named.rfc1912.zones

zone "localhost.localdomain" IN {
        type master; 
        file "named.localhost";
        allow-update { none; };
};

zone "localhost" IN {
        type master; 
        file "named.localhost";
        allow-update { none; };
};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master; 
        file "named.loopback";
        allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
        type master; 
        file "named.loopback";
        allow-update { none; };
};

zone "0.in-addr.arpa" IN {
        type master; 
        file "named.empty";
        allow-update { none; };
};

zone "behwang.com" IN {
        type master; 
        file "behwang.com";
        allow-update { none; };
};

 

 3.5. behwang.com 만들기 : vi behwang.com

$TTL 1D
@       IN SOA  ns1.behwang.com. root. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.behwang.com.
        MX 10   mail.behwang.com.

             A       192.168.0.1
www     A       192.168.0.1
ftp         A       192.168.0.2
mail      A       192.168.0.4
ns1       A       192.168.0.3

 

 3.6. resolv.conf 만들기 : vi resolv.conf

nameserver 192.168.0.3
nameserver 8.8.8.8

 

 3.7. 빌드 : docker build -t dns1.0 .

 3.8. 컨테이너 구동 : docker run -itd --name d1 dns1.0

 3.9. 확인

 

 

 

1. 구성도 

 

2. 리눅스 DB 서버 구축 : Rocky9-3-1 

 2.1. 설치 : dnf install mysql-server

 2.2. 서비스 구동 : systemctl start mysqld

 2.3. 서비스 구동 상태 확인 : ss -nat

 2.4. Mysql 설정 

  step1) 접속 : mysql -uroot  

  step2) 사용자 및 접속 허용 호스트 확인 : select user,host from mysql.user;

  step3) 사용자 계정, 접속 허용 호스트 (모두), 비밀번호 생성 : create user root@'%' identified by "It12345!";
  step4) 사용 가능한 모든 권한 부여 : grant all privileges on *.* to root@'%';

  step5) 사용자 및 접속 허용 호스트 확인 : select user,host from mysql.user;

  step6) 종료 : exit

 

2.5. 방화벽 설정

 step1) 포트 개방 : firewall-cmd --permanent --add-port=3306/tcp
 step2) 설정 저장 : firewall-cmd --reload

 

3. 리눅스 DB 클라이언트 구축 : Rocky9-1-1 

 3.1. 설치 : dnf install -y mysql

 3.2. mysql 접속 : mysql -uroot -pIt12345! -h 10.10.10.2

 3.3. wget, tar 설치 : dnf install -y wget tar

 3.4. 워드프레스 설치 : wget https://ko.wordpress.org/wordpress-5.8.8-ko_KR.tar.gz
 3.5. 압축 풀기 : tar xvfz wordpress-5.8.8-ko_KR.tar.gz 
 3.6. http 설치 : dnf install -y httpd

 3.7. httpd.conf 파일 수정 : sed -i 's/DirectoryIndex index.html/DirectoryIndex index.php/g' /etc/httpd/conf/httpd.conf
 3.8. 워드프레스 파일 복사 : cp -ar wordpress/* /var/www/html/
 3.9. php 설치 : dnf install -y php php-cli php-gd php-opcache php-curl php-mysqlnd

 3.10. wp-config-sample.php 파일 복사 : 
cp /var/www/html/{wp-config-sample.php,wp-config.php}

 3.11. wp-config.php 파일 수정   
  step1) sed -i 's/database_name_here/wordpress/g' /var/www/html/wp-config.php
  step2) sed -i 's/username_here/root/g' /var/www/html/wp-config.php
  step3) sed -i 's/password_here/It12345!/g' /var/www/html/wp-config.php
  step4) sed -i 's/localhost/10.10.10.2/g' /var/www/html/wp-config.php

 3.12. http 서비스 구동 : systemctl start httpd
 3.13. 방화벽 설정

  step1) 80번 포트 개방 : firewall-cmd --permanent --add-port=80/tcp
  step2) 저장 : firewall-cmd --reload

 

4. 워드프레스 DB연동 확인 : W10-1

 4.1. 브라우저 접속 : 10.10.10.1

 4.2. 정보 입력 및 워드 프레스 설치 

 

 4.3. 로그인

 

 4.4. 로그인 성공

 

1. MYSQL 서비스 구축 : PC1

 1.1. 설치 : dnf install -y mysql

 1.2. docker mysql 이미지 가져오기 : docker pull mysql  

 1.3. docker mysql 볼륨 만들기 : docker volume create mysql

 1.4. mysql 컨테이너 실행 : docker run [run 옵션] -v [볼륨 명]:[마운트하고자 하는 컨테이너 디렉토리] -e [mysql 비밀번호 환경 변수]  --name [컨테이너 명] mysql:5.7

  ex) docker run -itd -v mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=It12345! --name m1 mysql:5.7

 1.5. mysql 데이터베이스 만들기

   step1) 접속 : mysql -uroot -p[root 비밀번호] -h [mysql 서버 ip 주소]

    ex) mysql -uroot -pIt12345! -h 172.17.0.2

   step2) 데이터베이스 만들기 : create database word;

   step3) 나가기 : exit

 1.6. 방화벽 설정 :  firewall-cmd --add-port=3306/tcp

 

2. WORDPRESS 서비스 구축 : PC2

 2.1. wordpress 이미지 가져오기 : docker pull wordpress

 2.2. wordpress 컨테이너 실행 : docker run [run 옵션] -e WORDPRESS_DB_HOST=[mysql 서버 ip 주소] -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=[mysql root 계정 비밀번호] -e WORDPRESS_DB_NAME=[mysql 데이터베이스 명] --net host --name [컨테이너 명] wordpress:5.8

  ex) docker run -itd -e WORDPRESS_DB_HOST=172.16.0.22 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=It12345! -e WORDPRESS_DB_NAME=word --net host --name w1 wordpress:5.8

 2.3. 방화벽 설정 : firewall-cmd --add-port=80/tcp

 

3. 연동 확인 : PC2 IP 주소 URL 입력 

+ Recent posts

# 드래그 금지