Library

Docker Container의 Script Reverse

Andrew's Akashic Records 2023. 4. 24. 11:54
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