일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- numpy
- 오블완
- 사회조사분석사2급
- docker
- docker attach
- Pull Request
- 기초확률론
- WSSS
- ssh
- Multi-Resolution Networks for Semantic Segmentation in Whole Slide Images
- docker exec
- 코크리
- HookNet
- 도커
- 프로그래머스
- Decision Boundary
- vscode
- GIT
- AIFFEL
- 티스토리챌린지
- cocre
- logistic regression
- cs231n
- aiffel exploration
- 히비스서커스
- 백신후원
- airflow
- Jupyter notebook
- CellPin
- IVI
- Today
- Total
히비스서커스의 블로그
[Docker] attach와 exec의 차이 및 도커로 주피터노트북을 백그라운드로 실행한 뒤 동일한 컨테이너에 /bin/bash로 진입 본문
[Docker] attach와 exec의 차이 및 도커로 주피터노트북을 백그라운드로 실행한 뒤 동일한 컨테이너에 /bin/bash로 진입
HibisCircus 2021. 8. 10. 00:43
도커로 생성한 컨테이너에 들어가기 위한 방법은 attach와 exec를 활용한 방법이 있다. 이들의 차이가 무엇이고 만약 도커로 주피터노트북을 백그라운드로 실행한 뒤 동일한 컨테이너에 bin/bash로 진입하고 싶다면 어떤 것을 사용해야 하는지 살펴보자.
attach
attach는 실행되고 있는 컨테이너에 접속하는 명령어이다. 사용법은 다음과 같다.
$ sudo docker attach (옵션가능) (컨테이너이름)
attach로 컨테이너를 접속한다면 처음 도커 컨테이너를 run하였을 때의 환경이 포그라운드로 보여지게 된다. 따라서, 만약 도커 컨테이너를 run할 시 /bin/bash로 들어간 것이 아니라면 attach를 활용해서는 들어갈 수 없다.
exec
exec는 실행되고 있는 컨테이너에 새로운 명령을 할 수 있는 명령어이다. 사용법은 다음과 같다.
$ sudo docker exec -it (컨테이너 ID) /bin/bash
exec를 통해 실행시킨 명령어는 컨테이너의 기본프로세스 (이미 실행되고 있던 프로세스)가 실행되는 동안에만 실행되며 컨테이너를 다시 시작해도 다시 시작되지 않는다. (일시적으로 영향을 준다.) 따라서, 도커 컨테이너를 run할 시 /bin/bash의 명령어로 하지 않더라도 /bin/bash에 접속이 가능하다.
아래의 내용을 보기 전 도커로 주피터 노트북을 실행하는 방법이 궁금하다면 아래의 글을 참조하면 좋다.
2021.07.09 - [Programming/Docker] - [Docker] 서버의 docker에서 jupyter notebook생성하여 local에서 접속하기
포그라운드와 백그라운드
간단하게 포그라운드는 명령을 실행하고 결과까지 기다리는 방법으로 보통 로그들을 다 확인 가능하다고 보면 된다. 백그라운드는 명령을 실행시키고 결과가 나오기 전 다른 명령어를 내릴 수 있는 방법으로 로그들을 확인하기 어렵다고 보면 된다.
도커로 주피터노트북을 백그라운드로 실행한 뒤 동일한 컨테이너에 /bin/bash로 진입
위의 정리해서 보면 도커로 주피터 노트북을 백그라운드로 실행한 뒤 동일한 컨테이너에 /bin/bash로 진입하려면 exec명령어를 활용해야 한다. 두 명령어를 실행시키면 어떤 결과가 나오는지 살펴보자.
attach 명령어
attach 명령어로 컨테이너에 진입할 시 도커로 주피터노트북을 백그라운드로 실행한 것이 포그라운드로 로그가 나오게 된다. 이럴 경우 터미널을 닫을 경우 주피터노트북 실행을 닫히게 되어 다시 도커로 주피터 노트북을 켜주어야 한다. (일반적으로 도커로 주피터을 실행할 시 포그라운드가 아닌 백그라운드로 시켜주는 이유도 이런 번거로움을 면하기 위해서이다.) 따라서, 백그라운드로 실행시킨 의미가 없어진다. 만약 도커의 로그가 보고 싶었던 것이라면 차라리 도커의 로그를 확인하는 명령어 logs를 활용하는 것이 현명하다.
logs 명령어
$ sudo docker logs (컨테이너 이름)
exec 명령어
exec 명령어로 컨테이너에 접속할 시 (단, 명령어를 /bin/bash로 하였을 경우) 성공적으로 /bin/bash에 접속할 수 있다. 가끔씩 도커 가상환경의 버전에 맞는 환경세팅을 추가적으로 해주어야 하는 경우 주피터노트북에서 하는데에는 한계가 있으므로 이와 같이 /bin/bash로 접속하는 것이 효율적이다.
▼ 도커 각티슈 케이스 보러가기 ▼
https://incatos.shop/surl/P/11
▼ 도커 각티슈 케이스 리뷰 ▼
https://biology-statistics-programming.tistory.com/233
-히비스서커스-