# 이미지 생성하기
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 |