다른 이름으로 이미지를 구동

이진욱·2025년 1월 10일
0

Docker 공부

목록 보기
9/22

attach

docker run -d --name "지정한이름" 이미지이름


-d 가 아닌 -dit를 구동을 해도 똑같이 뜸을 확인

활성화된 컨테이너에 접속한다

docker attach 컨테이너ID

exec

-d : background 실행. 없을 시 foreground 실행이 된다. 다만 서버는 background 실행이 권장된다.

httpd를 foreground로 실행하였다

attach로 컨테이너 접속이 되지 않음을 확인

foreground이므로 cmd 창을 하나 더 열어서 httpd 컨테이너에 접속한다

docker exec -it <container_name_or_id> bash

httpd 서버가 잘 작동된 것을 확인

!) -dit 가 아닌 -d로 자동 설치할 시 daemon이 바로 죽어버린다.
왜냐하면 설치한 ubuntu OS는 아무것도 없으며 while이 돌고 있지 않기 떄문에 run을 해도 바로 die가 되기 때문이다. (기존 httpd는 내부 apache가 while로 돌고 있기 떄문에 run을 하면 while이 돌아서 자동 설치가 되었음)

i : 상호작용 (글자를 적을 수 있음)
t: 터미널로작성

docker exec 컨테이너ID -bash 와의 차이

1. docker attach

  • 역할: 실행 중인 컨테이너의 표준 입력(stdin), 표준 출력(stdout), 표준 오류(stderr)에 연결합니다.

  • 주요 특징:

    • 컨테이너의 기존 프로세스에 직접 연결합니다.

    • 컨테이너가 시작되면서 실행 중인 기본 프로세스(예: CMD 또는 ENTRYPOINT에 정의된 프로세스)에 연결됩니다.

    • 연결 후, 컨테이너에서 발생하는 로그를 실시간으로 볼 수 있고, 사용자 입력을 제공할 수 있습니다.

    • 연결이 끊어지면 컨테이너도 종료될 수 있으므로 주의가 필요합니다. (특히 Ctrl+C를 눌렀을 경우)

2. docker exec -it컨테이너ID bash

  • 역할: 실행 중인 컨테이너 내에서 새로운 프로세스를 실행합니다.

  • 주요 특징:

    • 컨테이너 내부에서 새로운 쉘 세션(bash나 sh)을 시작합니다.
      기존 프로세스와는 독립적으로 동작하며, 원래 실행 중이던 프로세스에 영향을 주지 않습니다.
      주로 컨테이너 내부를 디버깅하거나 추가적인 명령을 실행하기 위해 사용합니다.
      -it 옵션은 인터랙티브 세션을 위한 것으로, TTY를 활성화하고 사용자 입력을 받을 수 있게 합니다.
  • 사용 예:

docker exec -it <container_name_or_id> bash

컨테이너 내부에서 bash 쉘을 실행합니다. 만약 bash가 없다면 sh를 사용할 수 있습니다.

profile
열심히 하는 신입 개발자

0개의 댓글