이미 실행 중인 Docker 컨테이너에 연결하는 방법: 쉽게 따라하는 가이드

GoGoComputer·2024년 9월 27일

docker kubernetes study

목록 보기
6/7

이미 실행 중인 Docker 컨테이너에 연결하는 방법에 대해 쉽게 자세히 알려드리겠습니다.


Docker 컨테이너 실행 모드 이해하기

Docker에서 컨테이너를 실행할 때 두 가지 모드가 있습니다:

  1. Attached 모드 (기본 모드)

    • 설명: -d 옵션 없이 컨테이너를 실행하면 이 모드로 실행됩니다.
    • 특징:
      • 터미널이 컨테이너의 표준 입력과 출력에 직접 연결됩니다.
      • 컨테이너에서 발생하는 로그나 출력이 바로 현재 터미널에 표시됩니다.
      • 컨테이너를 실행한 터미널은 해당 컨테이너에 '붙어' 있게 됩니다.
    • 예시:
      docker run ubuntu
  2. Detached 모드

    • 설명: -d 옵션을 사용하여 컨테이너를 백그라운드에서 실행하는 모드입니다.
    • 특징:
      • 컨테이너가 백그라운드에서 실행되므로 터미널은 즉시 제어를 반환받습니다.
      • 컨테이너의 로그나 출력은 자동으로 표시되지 않습니다.
    • 예시:
      docker run -d ubuntu

Detached 모드로 실행된 컨테이너에 연결하기

Detached 모드로 실행된 컨테이너는 백그라운드에서 동작하므로, 직접적인 입력이나 출력을 확인할 수 없습니다. 하지만 이미 실행 중인 컨테이너에 접속하여 내부에서 작업을 하고 싶을 때가 있습니다. 이때 컨테이너를 중지하거나 다시 시작하지 않고도 연결할 수 있는 방법이 있습니다.

docker attach 명령어 사용하기

  • 기본 형식:
    docker attach [컨테이너 ID 또는 이름]
  • 설명:
    • docker attach는 실행 중인 컨테이너의 표준 입력, 출력, 오류 스트림에 연결합니다.
    • 컨테이너의 메인 프로세스에 직접 연결되므로 해당 프로세스의 출력이나 로그를 실시간으로 볼 수 있습니다.
  • 사용 방법:
    1. 실행 중인 컨테이너 확인하기
      docker ps
      • 이 명령어를 통해 현재 실행 중인 모든 컨테이너의 목록을 확인할 수 있습니다.
      • 컨테이너의 CONTAINER IDNAMES를 확인하여 연결하고자 하는 컨테이너를 식별합니다.
    2. 컨테이너에 연결하기
      docker attach [컨테이너 ID 또는 이름]
      • 예를 들어, 컨테이너 이름이 my_container인 경우:
        docker attach my_container

예시로 알아보기

  1. 컨테이너 실행

    docker run -d ubuntu tail -f /dev/null
    • 여기서 tail -f /dev/null은 컨테이너가 종료되지 않고 계속 실행되도록 하기 위한 명령어입니다.
    • -d 옵션으로 Detached 모드로 실행됩니다.
  2. 실행 중인 컨테이너 확인

    docker ps
    • 출력 예시:
      CONTAINER ID   IMAGE     COMMAND               CREATED         STATUS         PORTS     NAMES
      abc123def456   ubuntu    "tail -f /dev/null"   5 seconds ago   Up 5 seconds             my_container
  3. 컨테이너에 연결

    docker attach abc123def456

    또는

    docker attach my_container
    • 이제 컨테이너의 터미널에 접속하여 작업을 수행할 수 있습니다.

주의 사항

  • 프로세스 종료 주의: docker attach로 연결된 상태에서 Ctrl + C를 누르면 컨테이너의 메인 프로세스가 종료될 수 있습니다.
    • 해결 방법: 연결을 종료하고 싶을 때는 Ctrl + P 그리고 Ctrl + Q를 순서대로 눌러 안전하게 분리(detach)합니다.
  • 단일 프로세스 연결: docker attach는 컨테이너의 메인 프로세스에만 연결됩니다. 여러 프로세스가 실행 중이어도 메인 프로세스의 입출력만 볼 수 있습니다.
  • 대안 명령어: 컨테이너 내부에서 새로운 쉘을 실행하고 싶다면 docker exec 명령어를 사용하는 것이 더 좋습니다.
    • 예시:
      docker exec -it [컨테이너 ID 또는 이름] /bin/bash
      • -i: 상호작용 모드로 실행
      • -t: TTY를 할당하여 터미널처럼 사용 가능

추가 정보: docker exec vs docker attach

  • docker exec
    • 컨테이너에서 새로운 프로세스를 시작합니다.
    • 여러 개의 쉘 세션을 동시에 실행할 수 있습니다.
    • 컨테이너의 메인 프로세스와는 별도로 동작합니다.
  • docker attach
    • 컨테이너의 메인 프로세스에 연결합니다.
    • 새로운 프로세스를 시작하지 않습니다.
    • 동시에 하나의 세션만 연결할 수 있습니다.

정리

  • 기본적으로 Docker 컨테이너는 -d 옵션 없이 실행하면 Attached 모드로 실행됩니다.
  • Detached 모드로 실행된 컨테이너에 연결하려면 docker attach [컨테이너 ID 또는 이름] 명령어를 사용합니다.
  • 연결을 안전하게 종료하려면 Ctrl + P 그리고 Ctrl + Q를 사용합니다.
  • 컨테이너 내부에서 별도의 작업을 하고 싶다면 docker exec 명령어를 사용하는 것이 더 유용합니다.

이렇게 하면 이미 실행 중인 Docker 컨테이너에 연결하여 필요한 작업을 수행할 수 있습니다. Docker를 효과적으로 사용하기 위해서는 이러한 명령어들의 차이점을 이해하고 적절하게 활용하는 것이 중요합니다.

profile
IT를 좋아합니다.

0개의 댓글