히비스서커스의 블로그

[Docker] attach와 exec의 차이 및 도커로 주피터노트북을 백그라운드로 실행한 뒤 동일한 컨테이너에 /bin/bash로 진입 본문

Programming/Docker

[Docker] attach와 exec의 차이 및 도커로 주피터노트북을 백그라운드로 실행한 뒤 동일한 컨테이너에 /bin/bash로 진입

HibisCircus 2021. 8. 10. 00:43
728x90

출처 : (https://blog.samstdio.com/jupyter-notebook-on-docker/)

 

도커로 생성한 컨테이너에 들어가기 위한 방법은 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에서 접속하기

 

[Docker] 서버의 docker에서 jupyter notebook생성하여 local에서 접속하기

서버안에서 conda env를 통해서 작업을 하더라도 여러가지 환경설정이 꼬이기 쉽상이다. 이를 해결하기 위해서는 docker를 활용하는 것이 os부터 여러 환경설정들을 컨테이너에 각각 설정해줄 수 있

biology-statistics-programming.tistory.com

 

포그라운드와 백그라운드

간단하게 포그라운드는 명령을 실행하고 결과까지 기다리는 방법으로 보통 로그들을 다 확인 가능하다고 보면 된다. 백그라운드는 명령을 실행시키고 결과가 나오기 전 다른 명령어를 내릴 수 있는 방법으로 로그들을 확인하기 어렵다고 보면 된다.

 

도커로 주피터노트북을 백그라운드로 실행한 뒤 동일한 컨테이너에 /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

 

도커 컨테이너 각티슈 휴지 케이스 티슈커버 사각 아크릴 각티슈 커버 - 푸르가즘

교환 및 반품 주소  -   교환 및 반품이 가능한 경우  - 계약내용에 관한 서면을 받은 날부터 7일. 단, 그 서면을 받은 때보다 재화등의 공급이 늦게 이루어진 경우에는 재화등을 공급받거나

incatos.shop

 

 

▼ 도커 각티슈 케이스 리뷰 

https://biology-statistics-programming.tistory.com/233

 

[리뷰] 도커 각티슈 케이스 (feat.인카토스)

안녕하세요. 히비스서커스입니다. 도커는 보통 개발한 프로그램이나 코드를 배포하거나 공유할 때 동일한 환경을 제공하기 위해 주로 개발자들을 비롯한 프로그래밍 관련 일을 하시는 분들이

biology-statistics-programming.tistory.com

 

 

-히비스서커스- 

728x90