실행 중인 컨테이너에 명령어를 전달할 때는 exec
이라는 명령어를 이용할 수 있다.
docker exec -it [컨테이너 ID] [명령어]
ex) docker exec -it alpine ls
🖐️ 하지만 위의 방법은 명령어를 하나 입력할 때마다 매번 입력해줘야 한다.
이런 문제점을 해결하기 위해 컨테이너 안에 쉘이나 터미널 환경으로 접속할 수 있는 방법이 있다.
→ 마지막 명령어를 [sh/bash/zsh/powershell]로 해주면 된다.
→ 보편적으로 sh를 사용할 수 있다.
docker exec -it [컨테이너 ID] sh
첫번째 터미널을 실행한 후, alpine 이미지를 이용해서 컨테이너를 실행한다.
docker run alpine ping localhost
두번째 터미널에서 exec을 입력하고, 마지막 명령어 위치에 sh를 입력한 후 컨테이너 안에 터미널 환경을 구축한다.
docker exec -it [컨테이너 ID] sh
터미널에서 원래 할 수 있는 여러가지 작동들을 할 수 있다.
ex)
-ls : 컨테이너 디렉토리에 있는 내용(디렉토리, 파일) 확인
-touch new file : 파일 생성
...
❗exec 대신 run을 하는 것도 가능하다❗
docker run -it [이미지 이름] [명령어]
출처
인프런 [따라하며 배우는 도커와 CI환경]