본문 바로가기
아카이브

Docker 명령어 정리

by PilYeooong 2020. 8. 31.

 

# 이미지 생성하기

docker build ./

- Dockerfile이 있는 경로에서 실행시 작성 된 Dockerfile을 기준으로 한 이미지를 생성합니다

docker build -t <이미지이름> ./

- 위 명령어와 같은 동작이지만, 이미지에 이름을 부여합니다.

 

 

# Docker 컨테이너 실행하기

Docker run <이미지>

- 지정한 이미지를 실행합니다

Docker run -p <포트1:포트2> <이미지>

- 지정한 이미지를 컨테이너를 통해 실행, 로컬에서도 접속을 위해 포트를 매핑합니다
  로컬에서 접근 할 때 사용할 포트 1, 컨테이너 내에서 사용되는 포트 2

Docker run -rm <이미지>

- 지정한 이미지를 컨테이너를 통해 실행, 컨테이너 종료 시에 컨테이너가 삭제됩니다.

 

 

# 실행중인 컨테이너 및 아이디 값 출력하기

docker ps 


- 현재 실행중인 컨테이너 목록 출력

docker ps -a


- 실행중인 컨테이너 및 실행 했던 컨테이너까지도 출력

 

 

# 컨테이너 삭제하기

docker rm <아이디/이름>

- 특정 컨테이너 삭제하기

docker rm `docker ps -a -q`

- 모든 컨테이너를 한번에 삭제

 

 

# 이미지 삭제하기

docker rmi <이미지id>

- 특정 이미지 삭제하기

docker rmi `docker images -q`

- 모든 이미지 삭제하기

 

# 모든 컨테이너, 이미지, 네트워크 모두 삭제하기

docker system prune

- 모든 컨테이너, 이미지, 네트워크 모두 삭제한다. 하지만 실행중인 컨테이너에는 영향을 미치지 않습니다

 

 

# 실행중인 컨테이너에 명령어를 전달

docker exec <컨테이너id> '명령어'

- 실행중인 컨테이너에 명령어를 전달합니다

docker exec -it <컨테이너id> '명령어'

- 명령어 실행 후에도 명령어 입력을 가능하게 합니다 (-it 옵션)

 

 

# 실행중인 컨테이너의 쉘로 접속하기

docker exec -it <컨테이너id> <sh, zsh, bash ...>

- 실행중인 컨테이너로 지정한 쉘 환경으로 접속합니다

 

 

# Docker run 상태의 컨테이너에 소스코드 변경을 반영하고자 할 때

기본적으로 소스코드 변경 시에는 이미지를 다시 빌드, run 하는 동작이 필요합니다
이러한 작업은 소요되는 시간도 클 뿐더러, 수 많은 이미지를 빌드하게 될 수도 있는데요, 이를 위해 Volume을 사용합니다

docker run -v /usr/src/app/node_modules -v $(pwd):/usr/src/app <이미지>

(명령어에 작성한 경로는 임의로 작성한 것입니다. 작업 환경에 따라 달라질 수 있습니다)

첫번째 -v 옵션은 로컬 호스트 디렉토리에 node_modules는 존재하지 않기 때문에, 컨테이너에 매핑을 하지 않도록 하는 것입니다.

두번째 -v 옵션은 pwd(현재 디렉토리) 경로에 있는 디렉토리 또는 파일을 /usr/src/app (컨테이너 내부의 경로)에서 참조합니다.
콜론(:)이 붙어있음을 유의하세요

이 명령어를 통해 run 중인 컨테이너에 대한 소스 코드 변경시, 이미지의 빌드를 한번 더 해 줄 필요없이 다시 위의 명령어를 통해 변경 사항 반영이 가능합니다

 

 

 

 

Docker를 직접 사용해보며 명령어를 정리중에 있습니다.
지속적으로 업데이트를 하고 있습니다.

'아카이브' 카테고리의 다른 글

200901 / TIL  (0) 2020.09.02
200831 / TIL  (0) 2020.08.31
200824 / TIL  (0) 2020.08.24
200819 / TIL  (0) 2020.08.19
200807 / TIL  (0) 2020.08.07