1. Docker와 가상화 개념
Docker란?
Docker는 컨테이너 기반의 가상화 플랫폼 이다.
- 프로그램이 실행될 환경을 미리 설정하고, 컨테이너를 통해 가상화된 환경을 제공한다.
- 기존의 가상머신보다 가볍고 빠르게 실행 가능하다.
컨테이너(Container)란?
- 컨테이너는 가상화된 독립적인 실행 환경이다.
- 하나의 서버에서 여러 개의 컨테이너를 실행할 수 있다.
ISO와 가상머신
- ISO 파일 : 설치 CD나 파일을 이미지로 만든 형태
- 가상머신 : ISO 파일을 이용해 가상의 컴퓨터를 생성하는 방식
컨테이너와 가상머신 비교
2. Docker 기본 명령어
2.1 Docker 이미지 관련 명령어
2.2 컨테이너 실행 및 관리
2.3 컨테이너 내부 파일 확인 및 복사
3. 네트워크와 포트 설정
3.1 포트 개념
- 포트는 데이터가 송수신되는 통신 경로 이다.
- 웹서버의 기본 포트는 80(HTTP) 또는 443(HTTPS) 이다.
3.2 방화벽과 포트 열기
- 방화벽은 네트워크 보안을 위해 특정 포트를 차단 하거나 허용 한다.
- 컨테이너 내부의 포트를 외부와 연결해야 한다.
3.3 컨테이너 실행 시 포트 연결
docker container run --name my-httpd -d -p 8080:80 httpd
- -p 8080:80 : 호스트의 8080 포트를 컨테이너의 80 포트와 연결
4. 네트워크 상태 확인
4.1 현재 접속된 네트워크 상태 확인
netstat -ant
- 현재 열려 있는 포트 및 접속 상태 확인
4.2 특정 포트(8081) 사용 여부 확인
sudo netstat -nlp | grep 8081
- 8081 포트가 열려 있는지 확인 가능
5. 웹서버 컨테이너 설정
5.1 Nginx 웹서버 설정
Nginx는 가볍고 빠른 웹서버 로 많이 사용된다.
docker container run --name webserver1 -d -p 8080:80 nginx
- 8080 포트로 웹서버 실행
5.2 컨테이너 내부에 HTML 파일 추가
vi index.html
<html>
<head>
<title>Docker Web Server</title>
<style>body { background-color: #333; color: white; text-align: center; }</style>
</head>
<body>
<h1>Welcome to Docker Web Server!</h1>
</body>
</html>
docker cp index.html webserver1:/usr/share/nginx/html/index.html
- HTML 파일을 컨테이너 내부로 복사
6. Docker 이미지 만들기
6.1 Dockerfile 작성
FROM nginx:1.25.0-alpine
COPY index.html /usr/share/nginx/html/index.html
COPY docker_logo.png /usr/share/nginx/html/docker_logo.png
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
- FROM : Nginx 최신 버전(1.25.0-alpine) 사용
- COPY : HTML 및 이미지 파일 복사
- EXPOSE : 80번 포트 개방
6.2 Docker 이미지 빌드
docker build -t my-webserver .
- -t my-webserver : my-webserver라는 이름으로 이미지 생성
- . : 현재 디렉토리에서 Dockerfile을 기반으로 빌드
6.3 컨테이너 실행
docker run -d -p 8080:80 my-webserver
- 8080 포트로 웹서버 실행