[Docker] exec, attach, run 비교

Kim Hyen Su·2024년 6월 27일
0

🐋Docker

목록 보기
6/7
post-thumbnail

Docker


개요

배포 전 Docker 기초들을 복습하며 궁금한 내용들에 대해서 구글링 및 참고하여 해당 포스팅을 작성했습니다.

결국 배포를 위해서는 해당 서비스가 실행될 실행 환경을 구축한 뒤 어디서든 사용이 가능하도록 설정해줘야 합니다. 이를 위해서는 Docker 컨테이너를 실행해줘야 하는데 이 때 사용하는 명령어는 다음과 같습니다.

  • run
  • exec
  • attach

이러한 명령어들 사이에 어떤 차이점이 있는지에 대해 궁금했습니다.

exec

컨테이너가 실행되고 있을 때 사용할 수 있으며, 만약 docker ps를 입력 시 실행중인 컨테이너가 없을 경우 사용이 불가합니다.

컨테이너 상태를 디버깅하기 위한 용도로 주로 사용됩니다. 컨테이너 외부에서 접근해 코드를 작동시키지만, 컨테이너 내부에서 커맨드를 실행하는 것과 동일한 형태로 결과를 출력합니다.

attach

컨테이너 내부에 다시 접근하게 해주는 명령어입니다. Apache 또는 MySQL과 같은 프로그램을 작동 중인 컨테이너에 attach로 접근하게 될 경우 간혹 컨테이너가 비정상적으로 종료되는 경우가 있기 때문에 주의해야합니다.

exec와 달리 attach는 처음 컨테이너 run할 때, /bin/bash를 지정해주지 않을 경우, bash shell로 접근이 불가합니다.

$ docker attach <컨테이너명 | 컨테이너 ID>

run

컨테이너를 시작시키고 명령어가 끝나면 빠져나갑니다. run은 이미지로부터 새로운 컨테이너를 생성할 수 있습니다.

profile
백엔드 서버 엔지니어

0개의 댓글

관련 채용 정보