inblog logo
|
Gyeongwon's blog
    doker

    [도커 #4] 도커 명령어

    [도커 #4] 개발자가 꼭 알아야 할 도커 명령어 정리
    도경원's avatar
    도경원
    Jul 29, 2025
    [도커 #4] 도커 명령어
    Contents
    1. 이미지 다운로드2. 이미지 검색3. 이미지 실행하기4. 실행중인 컨테이너 확인하기5. 명령어 넣어서 실행하기6. 데몬+백그라운드로 실행하기7. 컨테이너 종료8. 컨테이너 삭제9. 모든 컨테이너 정지 + 삭제10. 현재 이미지 확인 및 삭제11. 모든 이미지 삭제12 . 포트포워딩13. 실행중인 컨테이너 접속하기14. 이미지 굽기15. 도커 허브 업로드16. 도커 허브 다운로드핵심 개념 정리7. 전체 흐름 사진

    1. 이미지 다운로드

    docker pull tomcat:jre21-temurin-noble
     

    2. 이미지 검색

    docker images
    notion image
     

    3. 이미지 실행하기

    ❗
    docker run → 도커 엔진한테 컨테이너 실행 명령을 내린다.
    -it 터미널 모드를 좀 열어줘!!
    이미지명 → 이걸 프로세스화 시킨다.
    bash (우분투를 실행시킬껀데, 그 우분투안에서 어떤 프로그램을 실행시켜줄까?)
     
    docker run -it tomcat bash
     

    4. 실행중인 컨테이너 확인하기

    docker ps (현재 실행 중인 컨테이너만 보여줌) docker ps -a (종료된(Exited) 컨테이너도 포함됨)
     

    5. 명령어 넣어서 실행하기

    docker run -it tomcat echo hello
    notion image
     

    6. 데몬+백그라운드로 실행하기

    docker run -dit tomcat
    아래는 기본 cmd 이다.
    notion image
     

    7. 컨테이너 종료

    docker stop 컨테이너아이디
     

    8. 컨테이너 삭제

    docker rm 컨테이너아이디
     

    9. 모든 컨테이너 정지 + 삭제

    docker stop $(docker ps -aq) docker rm $(docker ps -aq)

    10. 현재 이미지 확인 및 삭제

    docker images docker rmi [이미지 ID 또는 REPOSITORY:TAG]

    11. 모든 이미지 삭제

    docker rmi $(docker images -q)

    12 . 포트포워딩

    docker run -dit -p 8888:8080 tomcat
    notion image
    포트 포워딩은 “밖에서 온 요청을 안으로 잘 연결해주는 터널”이다. 도커에선 컨테이너 서비스를 외부와 연결해주는 핵심이다.

    포트포워딩은 왜 필요한가 ?

    • 컨테이너는 외부와 단절된 격리 환경이다.
    • “내부 포트”와 “외부 포트”는 다를 수 있다.
      • 컨테이너 내부에서 8080 포트로 서버가 돌아가도
      • 내 컴퓨터에서 8080포트를 이미 다른 앱이 쓰고 있을 수도 있음
      • 이럴 때 외부 포트만 바꿔서 접속 경로를 다르게 설정 가능
      • 예: -p 8888:8080 → 사용자 입장에서는 8888, 내부는 여전히 8080
    • 보안, 접근 제어, 인프라 설계 때문에

    13. 실행중인 컨테이너 접속하기

    docker attach [컨테이너 아이디]
    docker exec -it 컨테이너아이디 bash
    ❗
    attach는 메인 프로세스에 “붙는” 거고, exec는 명령 하나 실행하는 것이다.
    실무에서는 컨테이너 안에 접속하고 싶으면 무조건 exec -it 컨테이너 bash가 맞고, attach는 로그를 직접 보고 싶을 때만 제한적으로 사용해야 한다.

    14. 이미지 굽기

    docker commit [CONTAINERID] [도커허브아이디/생성할이미지명]:[태그] 예시) docker commit b7e6 doythan/mytom:1.0

    15. 도커 허브 업로드

    docker login
    docker push [도커허브아이디/생성할이미지명]:[태그] 예시) docker push doythan/mytom:1.0

    16. 도커 허브 다운로드

    docker pull [도커허브아이디/생성할이미지명]:[태그]
     
    컨테이너는 종료되면 상태를 다 잃음(내가 설치, 세팅 한 것 등등 ) 영구히 보관할라면 볼륨을 공부해야함 이미지를 굽기 위해서는 컨테이너를 죽이면 안된다.
     
    컨테이너를 실행시킬때 데몬이어야지 안빠져나온다. . 데몬 개념 완벽히 잡자 dit, it, bash 붙이면 프로그램이 진행되는 이유 백그라운드, 포그라운드 개념 등등
     
    이미지를 굽기전에는 기본 command를 설정해야함. 그 커맨드가 데몬이면 안죽음. 근데 그게 아니라면 -dit를 붙여야함(옵션에) 그리고 기본 데몬이 아닌 기본 커맨드가 있었어도 마지막 명령어에 -dit 뒤에 새로운 커맨드를 적으면 오버라이딩 됨.
     
    이미지를 쓰고싶으면
    1. 도커허브에서 찾고
    1. 다운받음
    1. 도커 run -it 이미지 명으로 실행하면됨, 뭐 내가 폴더를 만들고 싶으면 bash를 적고, 데몬으로 돌리고 싶으면 dit를 하고 기존 커맨드를 쓰고 싶으면 기존 커맨드가 먼지 찾아보고 이런식으로 진행
     
    docker run -dit -p 8888:8080 tomcat

    핵심 개념 정리

    1. 컨테이너의 휘발성

    • 컨테이너는 기본적으로 일회성이다.
    • apt install, 파일 생성 등 내부에서 작업한 내용은 컨테이너가 종료되면 다 사라진다.
    • → 영구 보관하고 싶다면 "볼륨(Volume)"을 사용해야 한다.

    2. 이미지를 만들기 전엔 컨테이너가 살아 있어야 한다

    • 이미지를 만들기 위해선 컨테이너 안에서 작업을 해야 함
    • 작업 다 하고 docker commit으로 이미지 생성
    • 컨테이너가 죽으면 이미지 굽는 타이밍 놓침

    3. 데몬(Daemon), 포그라운드 vs 백그라운드 개념

    • 데몬: 백그라운드에서 계속 실행되는 프로세스
    • 기본적으로 컨테이너는 포그라운드에서 명령어 1개 실행 → 끝나면 컨테이너도 종료
    • 그래서 bash 같은 대기성 커맨드나, 데몬 프로세스가 필요함
    • 아니면 직접 dit 옵션으로 백그라운드 실행을 강제해야 함

    4. dit, it, bash 의미

    옵션
    설명
    -d
    detached (백그라운드 실행)
    -i
    interactive (표준 입력 연결)
    -t
    tty (가상 터미널 연결)
    bash
    컨테이너 안에서 실행할 기본 명령어 (대기 상태 유지용)
    → -dit bash = 백그라운드로 실행되면서 bash가 계속 살아 있게 됨

    5. 기본 커맨드 오버라이딩

    • 어떤 이미지는 기본 명령어를 갖고 있음 (CMD 또는 ENTRYPOINT)
    • 예: tomcat은 기본적으로 catalina.sh run 실행함
    • 근데 우리가 docker run -dit tomcat bash처럼 명령어를 뒤에 붙이면 기존 CMD를 덮어씀

    6. 도커 이미지 쓰는 일반적인 순서

    1. Docker Hub에서 이미지 검색
    1. docker pull로 다운로드 (또는 run이 알아서 pull함)
    1. 실행:
        • bash 작업하고 싶으면 → docker run -it ubuntu bash
        • 백그라운드로 서비스 돌리고 싶으면 → docker run -dit -p 8888:8080 tomcat

    7. 전체 흐름 사진

    notion image
    Share article
    Contents
    1. 이미지 다운로드2. 이미지 검색3. 이미지 실행하기4. 실행중인 컨테이너 확인하기5. 명령어 넣어서 실행하기6. 데몬+백그라운드로 실행하기7. 컨테이너 종료8. 컨테이너 삭제9. 모든 컨테이너 정지 + 삭제10. 현재 이미지 확인 및 삭제11. 모든 이미지 삭제12 . 포트포워딩13. 실행중인 컨테이너 접속하기14. 이미지 굽기15. 도커 허브 업로드16. 도커 허브 다운로드핵심 개념 정리7. 전체 흐름 사진

    Gyeongwon's blog

    RSS·Powered by Inblog