2023-09-25 13:43:28
728x90
728x90

docker file

docker run -itd --name c1 centos:7
docker exec -it c1 bash
yum install -y httpd
systemctl start httpd docker는 프로세스로 실행되는거라 하나만 실행가능

mkdir httpd
cd httpd/
vi Dockerfile
docker build -t khb/http . 현재 디렉토리에 http tag가 달린 khb image 파일 생성
docker run -itd -p 60080:80 --name kh1 khb/http
centos 위에 httpd를 만들면 용량이 너무 커져서 alpine 리눅스 위에 하는걸 권장
-----------------------------------------------------------------------------------------
vsftpd Dockerfile

vi Dockerfile
FROM    centos:7 불러올 image는 centos:7

RUN     yum install -y vsftpd vsftpd 설치 RUN은 쉘(shell)에서 커맨드를 실행
RUN     mkdir /test /test 디렉토리 생성

COPY    user.sh /test/user.sh 생성해 놓은 파일을 지정한 경로에 copy
COPY    ftp.txt /test/ftp.txt
COPY    chroot_list /etc/vsftpd/chroot_list
COPY    vsftpd.conf /etc/vsftpd/vsftpd.conf

RUN     sh /test/user.sh

EXPOSE  21      65000-65100 지정한 포트를 외부에 공개할 예정

CMD     ["/usr/sbin/vsftpd","-obackground=NO"] 디폴트로 실행할 커맨드

파일은 미리 생성해놓을것
docker build -t khb/vsftpd . 현재 디렉토리에 있는 dockerfile을 khb/vsftpd로 이미지를 생성
docker run -itd -p 21:21/tcp -p 65000-65100:65000-65100/tcp --name v1 khb/vsftpd
포트포워딩을 해주고 khb/vsftpd 이미지를 써서 v1이라는 container의 이름으로 실행
filezila  사이트 설정에서 전송 설정을 능동형으로 바꿀것
-----------------------------------------------------------------------------------
alpine nginx Dockerfile

vi Dockerfile
FROM    alpine alpine 이미지 사용

RUN     apk add nginx alpine은 yum이 없어서 apk add 를씀

COPY    nginx.conf /etc/nginx/nginx.conf nginx 구성 파일 미리 생성해서 copy
COPY    index.html /usr/share/nginx/html/index.html

EXPOSE  80 지정한 포트를 외부에 공개할 예정

CMD     nginx -g 'daemon off;' 디폴트로 실행할 커맨드

파일은 미리 생성
docker build -t khb/nginx . 현재 디렉토리에 있는 dockerfile을 hkb/nginx로 이미지를 생성
docker run -itd -p 60080:80 --name n1 khb/nginx
60080으로 포트포워딩을 해주고 khb/nginx 이미지를 써서 n1이라는 container의 이름으로 실행
-------------------------------------------------------------------------------------
DNS Dockerfile

vi Dockerfile
FROM    centos:7

RUN     yum install -y bind bin-utils bind-libs
RUN     sed -i 's/127.0.0.1/any/' /etc/named.conf
RUN     sed -i 's/localhost/any/' /etc/named.conf

COPY    named.rfc1912.zones /etc/named.rfc1912.zones
COPY    khb.monster /var/named/
COPY    resolv.conf /etc/resolv.conf 리눅스의 DNS 설정파일 없으면 컨테이너 실행시 무력화됨
RUN     chmod 755 /var/named
run     chmod 755 /var/named/khb.monster

CMD     ["/usr/sbin/named", "-c", "/etc/named.conf", "-g", "-u", "named"]

EXPOSE  53/udp
EXPOSE  53/tcp

vi khb.monster 정방향 파일 생성
$TTL 1D
@       IN SOA  ns1.khb.monster. web. (
                                        1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.khb.monster.
        MX 10   mx1.khb.monster.

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

vi resolv.conf
nameserver      192.168.0.3 DNS로 지정해줄 IP 입력
nameserver      8.8.8.8

named.rfc1912.zones 파일도 생성해야함
docker build -t khb/dns .
docker network create --subnet 192.168.0.0/24 --gateway 192.168.0.254 web
컨테이너의 네트워크 대역을 생성해서 실행해야함
docker run -itd -p 53:53/tcp -p 53:53/udp --net web --ip 192.168.0.3 --dns 192.168.0.3 --name d1 khb/dns
Dockerfile로 만든 image로 생성해놓은 web network 대역대로 지정해놓은 dns에 맞게 ip와 dns를 생성하고 53/tcp,udp 포트포워딩 해줌

# network를 host로 사용하려면
정방향 파일과 resolv.conf 파일의 ip를 host의 ip로 작성
network를 따로 생성해줄 필요없이 실행하면 됨
docker run -itd -p 53:53/tcp -p 53:53/udp --net host --name d1 khb/dns
firewall-cmd --add-port=53/{tcp,udp} 방화벽 열어줘야함

728x90

'Container' 카테고리의 다른 글

Docker Container 환경변수, network, --link, --add-host  (0) 2023.09.22
Docker Volume  (0) 2023.09.21
Docker 설치, 기본 명령어  (0) 2023.09.20