DevOps

[Docker] 자주 사용하는 "docker exec, attach, logs" 명령어 정리

IT오이시이 2024. 1. 27. 01:35
728x90

 

 

[Docker] 자주 사용하는 "docker exec와 attach 그리고 logs" 명령어 정리

컨테이너에서 작동을 확인하고 실행하는 명령으로 "attach", "exec", "logs"와 같은 명령을 이용합니다. 주로 콘솔 터미널을 연결하여 입출력으로 상호작용하는 예시를 살펴 봅니다.

 

  1. docker attach
  2. docker logs
  3. docker exec

 

명령어설명사용 예시
docker attach실행 중인 컨테이너에 연결하여 해당 터미널에 명령을 전송합니다.docker attach [컨테이너 ID 또는 이름]
docker exec실행 중인 컨테이너에서 새로운 프로세스를 실행합니다.docker exec [옵션] [컨테이너 ID] [명령어]
docker logs컨테이너의 로그를 확인합니다.docker logs [컨테이너 ID 또는 이름]

 



1. docker attach 명령어의 사용법:

docker attach [OPTIONS] CONTAINER

 

docker attach 명령어는 실행 중인 Docker 컨테이너에 연결하고 해당 컨테이너의 표준 입력(stdin), 출력(stdout), 에러(stderr) 스트림과 상호작용할 수 있도록 하는 명령어입니다.

 

 

  • OPTIONS: 추가적인 옵션으로 터미널 설정을 할 수 있습니다.
  • CONTAINER: 연결하고자 하는 컨테이너의 이름이나 ID를 지정합니다.

 

 

 

docker attach 사용 예시

-  "my_container"라는 이름의 컨테이너에 연결

docker attach my_container

 

(1) 컨테이너의 터미널에 연결:

#(1) 터미널 연결:
# - 컨테이너에 터미널을 연결하고 해당 터미널과 상호작용

docker attach my_container

 

(2) 인터랙티브 모드로 쉘 실행

#(2) 인터랙티브 모드로 쉘 실행
#  - 인터랙티브 모드로 쉘을 실행하면 Ctrl+C로 컨테이너를 중지

docker attach -it my_container

#* -i는 표준 입력(stdin)을 유지하고 -t는 터미널을 할당합니다.

 


2. docker container logs

 

docker container logs 사용법 :

# 컨테이너의 로그를 확인

docker container logs my_container


# 여러 컨테이너의 로그를 확인

docker container logs container1 container2

 

 

docker container logs 사용 예시 :

* container 내부 로그를 확인하는 경우에 대한 예시는 다음과 같이 사용 가능합니다.

# 컨테이너의 표준 출력 및 표준 에러 출력에 대한 로그를 확인할 수 있습니다.

docker container logs [OPTIONS] CONTAINER

# tail-f 와 같이 내용을 확인
docker container logs -f my_container


# 로그 파일의 끝에서부터 지정된 개수의 라인을 출력
docker container logs --tail 50 my_container


# --since와 --until: 특정 시간 이후 또는 이전의 로그를 출력
docker container logs --since "2022-01-01T00:00:00" my_container


# --timestamps: 로그에 타임스탬프를 포함하여 출력
docker container logs --timestamps my_container

 


docker attach 주의해야 할 제한사항

 

1) 단일 사용자 모드: 

예를 들어, docker attach로 컨테이너에 연결하면 해당 터미널이 컨트롤을 가져가게 되어 다른 터미널에서 컨트롤을 할 수 없습니다. 이러한 이유로 주로 단일 사용자 환경에서 터미널을 사용하는 경우에 유용합니다.

 

2) 백그라운드 모드에서 실행 중인 컨테이너:

docker attach는 주로 대화형 터미널 환경에서 사용되므로, 컨테이너가 백그라운드 모드로 실행 중일 때는 적합하지 않을 수 있습니다. 
이 경우에는 docker exec 명령어를 사용하여 컨테이너에 명령을 실행하는 것이 더 적합합니다.

 

3) Ctrl+C로 컨테이너 중지:

(유의) docker attach로 연결된 터미널에서 Ctrl+C를 사용하여 프로세스를 종료하면 해당 해당 컨테이너도 중지됩니다. 

docker exec 명령어는  컨테이너 내의 프로세스에만 영향을 미칩니다.

 

4) 프로세스 분리 불가:

docker attach는 기본적으로 컨테이너 내에서 실행 중인 주 프로세스에 연결합니다. 따라서 다른 프로세스에 연결하려면 추가적인 설정이 필요합니다. 

이러한 경우도 docker exec를 사용하는 것이 더 유연하다는 것을 의미합니다.

 


3. docker exec 를 활용하는 경우 예시

 

docker exec 명령은 컨테이너 내부의 프로세스와 환경에 대한 명령을 실행할 수 있습니다.

 

1) 컨테이너에서 특정 명령어를 실행

 - 컨테이너 내부 셀의 명령을 실행 합니다.

docker exec my_container ls /app

 

2) 인터랙티브 모드로 쉘 실행:

- 특정 컨테이너에 인터랙티브 쉘로 연결하여 작업합니다.

docker exec -it my_container bash

 

3) 환경 변수 설정:

 - 실행 중인 컨테이너의 환경 변수를 설정하고 명령어를 실행합니다.

docker exec -e MY_VARIABLE=value my_container echo $MY_VARIABLE

 

4) 백그라운드에서 실행:

- 백그라운드에서 실행 중인 컨테이너에서 명령어를 실행합니다.

docker exec -d my_container my_background_process

 

 

 


기타  자주 사용하는  Docker 명령들

- 출처 : docker 명령어들 : https://couplewith.tistory.com/search/docker]

 

도커(Docker)는 컨테이너 기반의 오픈소스 가상화 플랫폼 입니다.
도커 명령어를 사용하여 이미지를 관리하고 컨테이너를 생성, 실행, 중지, 삭제할 수 있습니다. 아래는 도커 명령어중에 자주 사용하는 명령어들입니다.

 

ㅁ 5가지 유용한 Docker  명령어 정리 : https://couplewith.tistory.com/554

 

 


#docker-images  #docker-ps  #docker-pull  #dockr-build  #docker-run  #docker-stop  #docker-attach  #docker-volume

728x90
반응형