도커(Docker)는 가상머신(Virtual Machine)과 마찬가지로, 물리적 컴퓨터 위에서 동작하는 것이 아닌, 소프트웨어적 컴퓨터 위에서 동작한다. 하지만, 도커는 가상머신과 다르게, VMware, Virtual Box와 같은 Hypervisor 위에서 OS를 가상화된 이미지 형식으로 로드하고, 자원을 할당하여 사용하는 것이 아닌, 하나의 도커 엔진 위에서 프로세스 형식, 즉 프로그램 형식으로 작동한다는 차이점이 존재하여, 가상머신에 비해 가상화된 이미지 자체가 매우 경량화 되어 있어, 하드웨어 자원 확보 및 속도 측면에서 큰 이점을 가진다. 다만 호스트 PC와의 연결성, 즉 Host PC와 커널을 공유함으로써 발생하는 보안 취약성 등이 존재한다.
도커 환경 구축
필자는 Debian 계열의 Kali linux를 사용하여, 실습을 진행해나간다.
# 다운로드 가능한 목록 업데이트
sudo apt-get update
#도커엔진 다운로드
sudo apt-get install docker.io -y
#도커엔진 사용
sudo service docker start
#볼륨 생성
sudo docker volume web_01
#web01 볼륨 상세 정보 확인 가능. 특히 컨테이너 생성시, 마운트 되는 위치 확인 가능.
sudo docker volume inspect web_01
#webserver_01이라는 도커 컨테이너 생성 및 실행. image는 nginx 최신버전으로 다운로드(최신버전의 경우, 태그 생략 가능.). 포트는 HostPC의 8080번 포트와 해당 컨테이너의 80포트, 즉 웹서버와 포트포워딩. -v 옵션을 통해, web_01의 볼륨과 nginx의 index.html파일이 저장된 경로와 마운트.
sudo docker run -itd –name=webserver_01 -p 8080:80 -v web_01:/usr/share/nginx/html nginx:latest
#모든 도커컨테이너 상태 확인
sudo docker ps -a
#도커 엔진 위에 설치된 이미지 확인
sudo docker images
#생성한 도커 컨테이너 webserver_01과 마운트된 위치 경로 확인
sudo docker insepct web01 | grep “Mountpoint”
#마운트된 위치 경로로 이동
cd /var/lib/docker/volumes/web_01/_data
#vim 텍스트 에디터를 이용하여,index.html 파일 생성
vim ./index.html
#브라우저 URL창에 http://localhost:8080 입력하여, 잘 작동하는지 확인

# 다운로드 가능한 목록 업데이트
sudo apt-get update
#도커엔진 다운로드
sudo apt-get install docker.io -y
#도커 정보 확인
sudo docker info
도커 엔진 사용
볼륨 생성 및 생성된 볼륨 리스트 확인
볼륨 정보 확인 및 마운트되는 위치 경로 확인
도커 컨테이너 생성 및 실행
webserver_01이라는 도커 컨테이너 생성. HostPC의 8080포트와 해당 도커 컨테이너의 80포트, 즉 웹서버와 포트포워딩. -v 옵션을 통해, web_01 볼륨과 nginx의 index.html 파일이 저장되는 경로를 마운트 시킨다. 그리고 nginx라는 웹서버 이미지를 다운로드한다.
#webserver_01이라는 도커 컨테이너 생성 및 실행. image는 nginx 최신버전으로 다운로드(최신버전의 경우, 태그 생략 가능.). 포트는 HostPC의 8080번 포트와 해당 컨테이너의 80포트, 즉 웹서버와 포트포워딩. -v 옵션을 통해, web_01의 볼륨과 nginx의 index.html파일이 저장된 경로와 마운트.
sudo docker run -itd –name=webserver_01 -p 8080:80 -v web_01:/usr/share/nginx/html nginx:latest
#모든 도커 컨테이너 상태 확인
sudo docker ps -a
도커 엔진 위에 설치된 이미지 파일 확인
webserver_01이라는 도커 컨테이너의 index.html 파일이 저장되는 경로와 마운트된 HostPC의 경로를 확인하고, cd 명령어의 경우, sudo(superuser do) 명령어가 동작하지 않으므로, root 유저로 로그인 한 후, 위 경로로 cd 명령어를 수행한다.
vim 텍스트 에디터로 해당 경로에 테스트 파일 생성
http://localhost:8080을 브라우저 URL 창에 입력하여, 포트포워딩 연결이 잘 되었는지, 생성한 컨테이너와 마운트가 잘 되었는지 확인한다.
참고자료
https://www.simplilearn.com/tutorials/docker-tutorial/docker-vs-virtual-machine
'InfoSec Log > Docker' 카테고리의 다른 글
[Docker] PHP, MySQL, phpMyAdmin Docker 배포 방법 (3) | 2024.09.08 |
---|---|
[Docker] Docker-compose를 이용하여 워드프레스 및 DB 환경 구축 (1) | 2024.02.19 |
[Docker] Dockerfile을 이용하여 도커 컨테이너 환경 구축 (1) | 2024.02.19 |
[Docker] 로드 밸런싱 구축 (1) | 2024.02.18 |