-
실행 중인 컨테이너에 명령어 전달 - exec 명령어백엔드 관련 강의 공부/도커와 CI환경 2023. 12. 29. 20:21
이전에는 실행을 할 때 명령어를 입력했지만 이미 실행중인 컨테이너에 명령어를 전달하는 명령어도 많이 쓰인다.
docker exec <컨테이너 아이디>
컨테이너를 하나 실행하고 ps를 이용해서 컨테이너 아이디를 알아온 다음에 docker exec <컨테이너 아이디> 명령어를 입력하면 된다.
docker run alpine ls와 출력이 같지만 docker exec는 실행중인 컨테이너에 명령어를 전달하는 것이기 때문에 많이 사용되는 명령어이다.
-it 옵션
-it 명령어를 사용하기 위해 redis 이미지로 컨테이너를 만들었다.
redis에 접속하는 명령어는 redis-cli인데, 컨테이너 외부의 클라이언트에서 접근하는 것이기 때문에 에러가 난다.
따라서 docker exec -it <컨테이너 이름> redis-cli를 입력해야한다.
여기서 -it interactive의 -i와 terminal의 t를 합성한 것으로 명령어를 실행한 후에도 계속해서 명령어를 실행할 수 있도록 해준다. -it가 없다면 redis-cli를 켜기만 하고 바로 밖으로 나가게 되었을 것이다.
실행중인 컨테이너에서 터미널을 계속 이어가기 - sh 명령어
명령어를 하나 입력할 때마다 계속해서 docker exec it <컨테이너 아이디> 명령어 형식으로 입력해줬어야 했는데 이러한 문제점을 해결하기 위해서 컨테이너 안에 쉘이나 터미널 환경에 접속할 수 있는 명령어가 있다.
docker exec -it <컨테이너 아이디> sh
위의 형식으로 명령어 자리에 sh를 넣는 것이다. sh 이외에도 bash, zsh, powershell 등이 있는데, 이미지에 따라서 지원하는 것이 있고 안되는 것이 있다. 가장 보편적인 것은 sh이므로 sh가 가장 많이 사용된다.
컨테이너의 쉘에 접근해서 명령어들을 입력해 본 것이다.
ls 명령어를 입력한 이후에도 touch new-file로 new-file이라는 파일도 새로 만들 수 있었고, export hello=hi 명령어로 환경변수도 지정할 수 있었다.
쉘을 나갈 때에는 ctrl + C가 아니라 ctrl + D를 누르면 쉘에서 나가게 된다.
'백엔드 관련 강의 공부 > 도커와 CI환경' 카테고리의 다른 글
간단한 Node.js 앱을 이용한 도커 활용 (0) 2023.12.30 Dockerfile과 도커 이미지 만들기 (0) 2023.12.29 도커 컨테이너의 생명주기 (0) 2023.12.29 컨테이너 나열 - ps 명령어 (0) 2023.12.29 이미지로 컨테이너 만들기 (0) 2023.12.29