-
Docker 실행파일 분석리눅스 2024. 4. 20. 22:56
모의해킹 1주차에 주어졌던 가상머신에서 서버를 열때 사용했던 dockerCMD 파일에 들어있던 명령어를 분석해보려고 한다.
내가 알고 있는 정보는 1018번 포트가 열렸었고, webApp이 웹루트 경로가 되었었다.
sudo docker run -p "1018:80" --name studentWeb -v ${PWD}/webApp:/app -v ${PWD}/mysql:/var/lib/mysql mattrayner/lamp:latest-1604-php7
'sudo docker run'이라는 명령어는 docker의 명령어로, 컨테이너를 실행하는 역할을 한다. root 계정이 아니라 일반 사용자 계정으로 실행하기 때문에 sudo로 root 권한을 얻어 실행한다. 물론 root 계정의 비밀번호도 필요하다.
'-p "1018:80"' 는 호스트의 1018 포트를 컨테이너의 80포터에 매핑한다. 여기서 호스트는 내가 dockerCMD 파일을 실행한 리눅스이고, 컨테이너는 docker로 생성된 것을 말한다. 컨테이너를 간략하게 설명하자면, 컴퓨터의 자원을 해당 프로세스 전용으로 가상의 공간을 만들어 주는 말한다. 예를 들면 포트, pid, 경로 등을 특정 프로세스 전용으로 해서 다른 프로세스의 설정파일과 서로 충돌이 일어나지 않게 또 다른 컴퓨터에서 실행되는 것처럼 해준다. 그래서 호스트의 1018번 포트를 컨테이너의 80번포트(http)로 매핑한다.
'--name studentWeb' 은 컨테이너의 이름을 지정해주는 옵션이다. 이 경우는 studentWeb이 컨테이너의 이름이 된다.
'-v ${PWD}/webApp:/app' 은 호스트의 '${PWD}/webApp' 디렉토리를 컨테이너 내부의 '/app' 디렉토리에 마운트한다. '-v' 옵션은 docker 컨테이너 내부와 호스트 사이의 볼륨을 마운트하는데 사용된다. 아까 말한 것 처럼 컨테이너의 경로가 따로 존재하는 것 처럼 관리하는데, 그 경로의 호스트의 디렉토리와 연결해준다. 해당 호스트의 디렉토리에 파일을 넣으면 컨테이너의 '/app' 경로에서 파일이 공유된다.
'-v ${PWD}/mysql:/var/lib/mysql' 또한 호스트의 '${PWD}/mysql 디렉토리를 컨테이너의 '/var/lib/mysql' 디렉토리에 마운트한다. 컨테이너의 디렉토리에서 mysql 데이터가 저장되면 호스트에도 저장되어 컨테이너가 종료되어도 호스트에 남게된다.
'mattrayner/lamp:latest-1604 -php7'는 사용할 docker 이미지를 지정하는 역할을 한다. docker이미지란 docker 컨테이너를 실행하는데 필요한 파일, 라이브러리 및 설정을 포함하는 패키지를 의미한다. 이 때 'mattrayner/lamp' 이미지의 'latest-1604-php7' 태그를 사용한다. 이 이미지는 LAMP(Linux, Apache, Mysql, Php)스택을 포함하며 php버전은 7임을 의미한다. 웹 서버를 빠르게 열어준다.
'리눅스' 카테고리의 다른 글
DNS 서버 설치와 운영하는 방법 (2) - 로컬 네임 서버 (0) 2024.05.02 DNS 서버 설치와 운영하는 방법 (1) - 기본개념 (0) 2024.05.01 OpenSSH 서버 사용하는 법 (1) 2024.04.30 telnet 사용하는 법 (0) 2024.04.30 vmware에서 호스트os와 게스트os간 복사 붙여넣기 설정 (0) 2024.04.24