Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
docker attach
docker attach CONTAINER
option
--no-stdin : 표준 입력은 컨테이너에 연결하지 않습니다. 컨테이너 표준 출력 및 오류 스트림만 연결
Local 표준 입력, 출력 및 오류 스트림을 실행 중인 컨테이너에 연결.
ubnutu 이미지인 mzc-ct01에 접속해보자.
attach로 컨테이너 진입한 상태에서는, 빠져 나오기 위해서는 ctrl+pq 키 조합을 사용.
exit 명령어로 입력할 경우 컨테이너 자체가 종료됨.
종료가 되어버리는 것에서 유추 할 수 있듯이, 실행 중인 컨테이너에 직접 들어가 명령어를 실행 (내부 접근)한다는 것이 된다. -> 여기서 exit은 container가 자신을 종료하라는 의미가 되어 종료횐다.
docker run 명령어의 -it
docker run 명령어의 `-it` 옵션은 -i 와 -t 두 가지 옵션을 결합한 것이다.
1. `-i` 옵션은 "interactive"를 의미합니다. 이는 컨테이너와 상호 작용할 수 있는 인터랙티브 모드를 활성화합니다. 이 모드에서는 컨테이너의 표준 입력(stdin)이 열려 있으며 사용자가 명령어를 입력하고 컨테이너의 상태를 확인할 수 있습니다.
2. `-t` 옵션은 "pseudo-TTY"를 의미합니다. 이는 가상의 TTY(TeleTYpewriter)를 컨테이너에 연결합니다. TTY는 사용자와 컴퓨터 사이의 텍스트 기반 상호 작용을 가능하게 하는 기능으로, 터미널과 유사한 환경을 제공합니다.
따라서 `-it` 옵션은 "인터랙티브 모드로 실행되며 가상의 TTY를 사용하여 컨테이너에 연결한다"는 것을 의미합니다. 이 옵션을 사용하면 컨테이너에 들어가서 직접 명령어를 실행하고 상호 작용할 수 있습니다.
docker run -it --name contianer_name image_name
와 같은 명령어는 실행과 함께 컨테이너의 인터랙티브 모드로 실행되며 가상의 TTY를 사용하여 컨테이너에 연결된다.
이때의 접속하는 프로세스는 container이기 때문에 exit으로 나가면 컨테이너가 종료된다.
docker exec
docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
실행중인 컨테이너에 command를 이용하여 새로운 프로세스를 생성 후 접속한다.
실행 중인 컨테이너에 명령어를 전달(외부 -> 내부)
/bin/bash는 리눅스 시스템에서 사용되는 Bourne Again Shell (bash)의 경로다. 이것은 셸(Shell)을 실행하는 명령어로, 일반적으로 사용자와 상호작용할 때 터미널 환경을 제공한다.
Docker run에서 -it을 주지 않더라도, exec는 새로운 프로세스를 -it으로 생성해 접속하면 input 값을 tty로 전달할 수 있다.
이는 새로운 프로세스를 생성해서 들어가기 때문에 exit으로 종료해서 컨테이너가 종료되지 않고, 생성한 프로세스가 종료된다.
'개발 > Docker' 카테고리의 다른 글
Docker Hub에 Docker Image 업로드하기 (0) | 2024.02.28 |
---|---|
Ubuntu Docker DNS 컨테이너 올리기 (forwaders 사용) (3) | 2024.02.28 |
[Virtual Box] Ubuntu에 Jenkins container 올리고 접속하기 (0) | 2024.02.28 |
[Github Actions] 여러 Docker image 빌드하고 ECR로 업로드 하기 (0) | 2023.08.18 |
Docker에서 Selenium (4.10 & 4.11) 실행시키기 (0) | 2023.08.15 |