본문 바로가기
Library

Docker Container의 Script Reverse

by Andrew's Akashic Records 2023. 4. 24.
728x90

실행 중인 Docker 컨테이너에서 컨테이너 실행 스크립트를 리버스하는 것은 컨테이너가 생성된 이미지와 관련 메타데이터를 검사하여 원래 실행 명령 및 관련 설정을 찾는 것을 의미합니다.

1. 컨테이너의 실행 명령 및 기본 설정 확인:

`docker inspect` 명령어를 사용하여 컨테이너의 메타데이터를 확인할 수 있습니다. 실행 중인 컨테이너의 ID 또는 이름을 사용하여 `docker inspect`를 실행합니다.

docker inspect <container_id_or_name>


출력된 JSON 결과에서 `Config.Cmd` 및 `Config.Entrypoint` 값을 찾아 컨테이너의 실행 명령을 확인할 수 있습니다. 또한, `Config.Env`에서 환경 변수, `HostConfig.PortBindings`에서 포트 바인딩, `HostConfig.Binds`에서 볼륨 마운트 등을 확인할 수 있습니다.

2. 도커 실행 스크립트 생성:

위에서 확인한 설정 값을 기반으로 `docker run` 명령어를 다시 작성합니다. 예를 들어, 다음과 같은 설정을 갖는 컨테이너가 있다고 가정해 보겠습니다.

- 이미지: `my_image:latest`
- 컨테이너 이름: `my_container`
- 실행 명령: `/app/start.sh`
- 환경 변수: `MY_ENV_VAR=my_value`
- 포트 바인딩: 호스트 8080 -> 컨테이너 80
- 볼륨 마운트: 호스트 `/host/data` -> 컨테이너 `/container/data`

이 경우, 다음과 같은 `docker run` 명령어를 작성할 수 있습니다.

docker run -d \
  --name my_container \
  -p 8080:80 \
  -e MY_ENV_VAR=my_value \
  -v /host/data:/container/data \
  my_image:latest \
  /app/start.sh


리버스 엔지니어링을 통해 실행 중인 Docker 컨테이너의 실행 스크립트를 작성할 수 있습니다. 이렇게 하면 해당 컨테이너를 새로 생성하거나 다른 시스템에서 실행할 수 있는 스크립트를 얻을 수 있습니다.

728x90