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} 방화벽 열어줘야함
'Container' 카테고리의 다른 글
Docker Container 환경변수, network, --link, --add-host (0) | 2023.09.22 |
---|---|
Docker Volume (0) | 2023.09.21 |
Docker 설치, 기본 명령어 (0) | 2023.09.20 |