run567Go
.★v. ✶•´ ☆´, •´¨★
run567Go
전체 방문자
오늘
어제
  • 분류 전체보기 (13)
    • JavaScript (0)
      • Nest.js (0)
    • docker (2)
    • GCP (1)
    • ubuntu (0)
      • 설치와 초기설정 (0)
    • django (0)
    • HTML (0)
    • 개인프로젝트 (0)

블로그 메뉴

  • 홈

공지사항

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
run567Go

.★v. ✶•´ ☆´, •´¨★

Docker 터미널 관련 명령어 /  오류
docker

Docker 터미널 관련 명령어 / 오류

2023. 2. 25. 10:31

Docker 터미널 관련 명령어 정리

[ docker ]

  • docker build . : 도커를 빌드
  • docker run <이미지아이디> : 도커 실행
  • docker stop <컨테이너아이디> : 실행되고 있는 컨테이너를 멈춤
  • docker ps : 실행중인 컨테이너 상태 확인
  • docker ps -a : 꺼져있는 전체 컨테이너 상태 확인
  • docker images : 생성된 image들의 목록
  • docker exec -it <컨테이너아이디> sh: 화면이 bash 쉘로 바뀌게 됨, -it 은 수정할 수 있게 해달라는 뜻
    ( 쉽게 얘기하면 도커에서 돌아가고 있는 가상 컴퓨터의 터미널로 들어온 것)
    명령어 입력 후 /#로 바뀌면 도커 컴퓨터 안에 들어왔다는 뜻
  • exit : 가상컴퓨터 쉘 종료

[ docker-compose ] 

  • docker-compose build : docker image 생성
  • docker-compose up :  container를 실행
    /  해당 터미널내에서만 서버가 열리게 되는 Foreground Process
  • docker-compose up -d : container를 실행
    / 화면 뒤에서 서버가 실행되는 Background Process, 서버가 올라가는 로그가 눈에 보이지 않음
  • docker-compose logs -f : 로그 보기 , f는 계속 보겠다는 뜻

 

yaml 파일 개발 환경별로 바꾸고 Docker-compose 빌드 하는 법 예시

도커빌드

$ docker-compose -f docker-compose.prod.yaml build

도커 시작

$ docker-compose -f docker-compose.prod.yaml up -d

도커 정지 

$  docker-compose -f docker-compose.prod.yaml stop

로그보기

$  docker-compose -f docker-compose.prod.yaml logs -f

* docker-compose -f docker-compose.yaml 을 줄인 것이 docker-compose 명령어

 

 

삭제관련명령어

  • docker rm <이미지ID>: 컨테이너 삭제
    종료된 컨테이너는 가지고 있을 필요가 없기 때문에 삭제 명령을 통해 지워줄 수 있습니다. 
    컨테이너는 종료, 삭제되었지만 이미지까지 삭제된 것은 아닙니다.
    만들어진 이미지로 언제든 컨테이너를 생성할 수 있습니다.
  • docker ps -a -q:  컨테이너 아이디만보여줌
  • docker rm `docker ps -a -q` : 컨테이너전체 삭제
  • docker images -a -q : 이미지 아이디만 나오게 하는명령어 
  • docker rmi `docker images -a -q` : 이미지 전체삭제 명령어
    도커 전체이미지를 보여주고 삭제해야하므로 벡틱을 넣어 먼저 뒤의 내용이 실행될 수 있게 한다.
  • docker system prune -a :사용하지 않는 Docker 오브젝트 전부 삭제 ( 켜진 Docker 제외하고 삭제)

*docker는 삭제한 파일들을 docker 별도의 공간에 보내기 때문에 완전 삭제하기 위해서는 아래의 작업들이 필요하다.

docker container prune : 중지된 모든 컨테이너 삭제
docker image prune : 사용하지 않는 이미지 삭제(dangling images)
docker volume prune : 컨테이너와 연결되지 않은 모든 볼륨 삭제
docker network prune : 컨테이너와 연결되지 않은 모든 네트워크 삭제
docker system prune -a : 위에 명령어를 통합해서 한번에 실행. 사용하지 않는 모든 오브젝트를 삭제

 

 

도커 빌드/업 중 자주 생기는 오류

 

[ 도커 이미지 삭제 오류 ]

> Error response from daemon: conflict: unable to delete cb4186e00429 (must be forced) - image is referenced in multiple repositories.. 가 뜨면 강제 삭제한다.

  • docker rmi -f <삭제할이미지이름>

 

[ 포트관련 ]

 

> Ports are not available :listen tcp 0.0.0.0:3306: bind: address already in use

이미 로컬 mysql로 포트번호3306을 사용중이어서 발생하는 에러이므로 로컬 mysql을 중단

  • sudo systemctl stop mysql

 

> address already in use..

포트가 이미 할당되어 있어서 발생한 에러로, 해당 포트를 사용 중인지 확인 -> 포트 죽이기

$ sudo lsof -i :포트번호
COMMAND PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   989     root    9u  IPv4  21377      0t0  TCP *:2224 (LISTEN)
nginx   990 www-data    9u  IPv4  21377      0t0  TCP *:2224 (LISTEN)
nginx   991 www-data    9u  IPv4  21377      0t0  TCP *:2224 (LISTEN)

할당되어 있는 포트를 죽인 후 다시 docker 컨테이너를 재시작하면 문제 해결

$ sudo kill -9 989
$ sudo kill -9 990
$ sudo kill -9 991

 

 

    'docker' 카테고리의 다른 글
    • Docker / Docker-compose
    run567Go
    run567Go
    👾🖥⌨️👾

    티스토리툴바