ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 빈 컨테이너 실행 방법 - docker image debug
    OS 2023. 8. 4. 08:25
    반응형

    Docker Image를 만들다 보면 이게 잘 만들어졌는지 테스트가 필요할 때가 많은데,

    이럴 때마다 entrypoint를 실행하기까지 조금 부담스러울 때, 사용되는 방법입니다.

    파일이 어떤 형식으로 배치 되었는지, 불필요한 파일과 필요한 파일을 분리하거나,

    필요없는 dependency가 설치되었는지, 내가 원하는 실행 파일이 설치 되었는지 확인이 필요할 때가 많습니다.

     

    아무것도 실행하지 않는 도커 컨테이너를 실행하는 방법은 여러 가지가 있습니다. 아래의 방법 중 하나를 선택하여 사용할 수 있습니다.

    빈 컨테이너 실행: 가장 간단한 방법은 빈 컨테이너를 실행하는 것입니다. 이렇게 하면 실행 중인 프로세스가 없는 컨테이너가 생성됩니다.

    docker run -d --name empty_container ubuntu:latest tail -f /dev/null


    위 명령어는 "ubuntu" 이미지를 기반으로 빈 컨테이너를 실행하며, tail -f /dev/null 명령어를 사용하여 컨테이너가 종료되지 않고 계속 실행되도록 합니다.

    Pause 컨테이너 활용: Docker는 컨테이너 내에서 실행 중인 모든 프로세스를 일시 중지하고 컨테이너를 "일시 중지(pause)"할 수 있는 "pause" 컨테이너를 지원합니다. 이 방법을 사용하면 실행 중인 프로세스는 없지만 일시 중지된 상태의 컨테이너가 생성됩니다.

    docker run -d --name paused_container --pause alpine:latest


    위 명령어는 "alpine" 이미지를 기반으로 "pause" 컨테이너를 실행합니다.

    Systemd Init 컨테이너 활용: 일부 경우에는 "systemd" init 프로세스를 사용하여 아무런 프로세스가 실행되지 않는 컨테이너를 만들 수 있습니다. 이 방법은 더 복잡하며 호스트 시스템과의 통합이 필요합니다.

    예를 들어, "ubuntu" 이미지를 기반으로 "systemd"를 활용하여 빈 컨테이너를 실행하는 명령어는 아래와 같습니다. 이 경우에는 호스트의 "systemd"가 컨테이너 내에서 시작됩니다.

    docker run -d --privileged --name systemd_container ubuntu:latest /lib/systemd/systemd


    위의 방법 중 하나를 선택하여 아무런 프로세스가 실행되지 않는 도커 컨테이너를 실행할 수 있습니다.

     

     

    compose 파일로 만들면 다음과 같습니다.

    version: '3'
    services:
      empty_container:
        container_name: testc
        image: ubuntu:latest
        command: tail -f /dev/null

     

    command로 tail -f /dev/null 하고, 다음 명령어를 통해서 컨테이너 내부를 확인하면 됩니다.

    docker exec -it testc bash

     

    단순하게 Docker 컨테이너 내부의 파일을 보고 싶으시다면 docker cp를 쓰는게 편합니다.

    위에 방법은 프로그램까지 실행해보려는 테스트였고, 추후에는 이미지 내부에 테스트하는 코드를 삽입하면 됩니다.

     

    빈 컨테이너만 생성 후에 원하는 폴더를 복사해와서 파일을 보면 됩니다.

    docker create --name testc ubuntu:latest
    docker cp testc:/tmp ./tmp

     

    끝.

    반응형
Designed by Tistory.