정보공유 같이해요/TECH

[ docker ] 도커 개념 및 실행하는 법 , 명령어 모음 ( docker run 등 )

Rio - Moon 2025. 1. 24. 14:05
728x90
반응형

Docker 개념 및 실행하는법 , 그리고 명령어 완벽정리

함께보면 좋은글


✅  명령어

 

[개발 같이해요] - [ Vim ] vim 명령어 총정리 ( 파일 탐색, 편집, 검색 등 )

 

[ Vim ] vim 명령어 총정리 ( 파일 탐색, 편집, 검색 등 )

이번 포스팅에서는 vim 명령어를 총정리 해보도록 하겠습니다.    # 1. Vim 모드Vim은 3가지 주요 모드로 나뉩니다.명령 모드: 기본 모드, 명령어를 입력할 수 있음.입력 모드: 텍스트를 입력할 수

it-ability.tistory.com

 

[개발 같이해요] - [ Linux ] 리눅스 명령어 모음 총정리 ( 파일 관리, 프로세스, 네트워크 등 )

 

[ Linux ] 리눅스 명령어 모음 총정리 ( 파일 관리, 프로세스, 네트워크 등 )

리눅스(Linux)는 오픈 소스 기반의 운영체제로, 서버부터 데스크톱, 임베디드 시스템까지 널리 사용됩니다. 리눅스의 강력함은 명령어 기반의 작업에서 나옵니다. 이번 포스팅에서는 리눅스를 사

it-ability.tistory.com

 

[개발 같이해요] - [ nodejs ] 노드 명령어 총정리 모음 ( 프로젝트 생성, 패키지 관리, 실행 및 디버깅 등 )

 

[ nodejs ] 노드 명령어 총정리 모음 ( 프로젝트 생성, 패키지 관리, 실행 및 디버깅 등 )

이번 포스팅에서는 Node.js에서 자주 사용하는 명령어 및 CLI(Command Line Interface) 명령어를 정리해 보도록 하겠니다.  다른 게시글 구경하기  ✅  명령어 관련 게시글 [ Vim ] vim 명령어 총정리 ( 파

it-ability.tistory.com

 

 

✅  개발환경 세팅

 

[개발 같이해요/UNITY] - [ 유니티 ] 맥북 M1 유니티 개발환경 세팅

 

[ 유니티 ] 맥북 M1 유니티 개발환경 세팅

이번 프로젝트에 유니티 어플리케이션 이 필요하게 되어 유니티 개발환경 세팅부터 간단한 어플리케이션 만들기를 진행해보도록 하겠습니다. 이번 포스팅에서는 맥북 M1 으로 유니티 개발환경

it-ability.tistory.com

[개발 같이해요/REACT] - [ React ] 리액트 개발환경 구축

 

[ React ] 리액트 개발환경 구축

리액트(React)는 사용자 인터페이스를 구축하기 위한 프론트엔드 구현시 인기 있는 자바스크립트 라이브러리입니다. 이번 포스팅에서는 이러한 리액트 개발환경 구축을 해보고 나아가 실제 프로

it-ability.tistory.com

[개발 같이해요/DB] - [ mongodb ] 몽고db 설치 및 개발환경 세팅

 

[ mongodb ] 몽고db 설치 및 개발환경 세팅

MongoDB는 스키마가 유연하고 성능이 뛰어난 NoSQL 데이터베이스로 많은 개발자들에게 인기를 끌고 있습니다.이번 포스팅 에서는 MongoDB 설치 및 개발환경 세팅에 대해 알아보도록 하겠습니다.  다

it-ability.tistory.com

[개발 같이해요/JAVA - SPRING] - [ SpringBoot ] Visual Studio Code 에서 스프링부트 개발환경 세팅

 

[ SpringBoot ] Visual Studio Code 에서 스프링부트 개발환경 세팅

이번 포스팅에서는 무료 IDE 인 VisualStudioCode ( VSC ) 에서 스프링부트 개발환경을 세팅 해보도록 하겠습니다.VSC 는 무료 개발툴 이기 때문에, 원하는 개발환경을 세팅하기 위해서는 Extension 이라는

it-ability.tistory.com

[개발 같이해요/AI] - [ AI ] Windows에서 딥러닝 개발 환경 구축

 

[ AI ] Windows에서 딥러닝 개발 환경 구축

[ AI 첫걸음 ] Windows 에서 딥러닝 개발 환경 구축 딥 러닝은 복잡한 문제를 해결하기 위해 복잡한 신경망을 구축하는 것과 관련하여 빠르게 성장하는 인공 지능 분야입니다. 딥 러닝 개발 환경을

it-ability.tistory.com

[개발 같이해요] - [ ubuntu ] 우분투 20.04 에서 Nginx 설치 및 세팅

 

[ ubuntu ] 우분투 20.04 에서 Nginx 설치 및 세팅

Ubuntu 20.04에서 Nginx를 설치하고 웹 서버로 설정하는 방법을 알려드리겠습니다. 이 포스팅은 Nginx를 처음 사용하거나 웹 서버 환경을 구성하는 데 익숙하지 않은 사용자도 쉽게 따라할 수 있도록

it-ability.tistory.com

 

 

 

 

 

# 1. Docker 개념 및 실행하는 법

 

Docker란 무엇인가?

 

Docker는 애플리케이션을 컨테이너(Container)라는 표준화된 단위로 패키징, 배포, 실행할 수 있게 해주는 오픈 소스 플랫폼입니다. 컨테이너는 애플리케이션과 필요한 모든 의존성(라이브러리, 환경 설정 등)을 하나의 이미지로 묶어 운영 체제와 독립적으로 실행할 수 있도록 도와줍니다.

 


 

Docker의 주요 구성 요소

 

  1. 이미지 (Image)
    • 컨테이너를 생성하기 위한 템플릿.
    • 애플리케이션 실행에 필요한 환경(코드, 런타임, 라이브러리 등)을 포함.
    • 예: Python 이미지에는 Python 실행 환경이 포함.
  2. 컨테이너 (Container)
    • Docker 이미지를 기반으로 실행되는 독립된 실행 환경.
    • 애플리케이션이 실행되는 "가상화된" 공간.
    • 가볍고 빠르며, 호스트 OS의 커널을 공유.
  3. Docker Engine
    • Docker의 핵심 실행 엔진으로, 컨테이너를 생성하고 관리.
  4. Docker Hub
    • Docker 이미지를 공유할 수 있는 클라우드 기반 저장소.

 

Docker로 실행하면 어떻게 되는가?

 

Docker를 사용해 애플리케이션을 실행하면 다음과 같은 과정을 거칩니다.

  1. 이미지 가져오기 (Pull)
    • Docker Hub나 다른 레지스트리에서 원하는 이미지를 다운로드.
    • 예: docker pull python:3.9
  2. 컨테이너 생성 및 실행
    • 이미지를 기반으로 컨테이너를 생성하고 애플리케이션을 실행.
    • 예: docker run -d -p 5000:5000 my_app
  3. 애플리케이션 실행 환경 제공
    • 독립적이고 일관된 실행 환경이 제공.
    • 호스트 OS와 격리되며, 동일한 이미지를 사용하면 어디서나 동일하게 동작.
  4. 컨테이너 관리
    • 컨테이너의 시작, 정지, 삭제 등을 쉽게 관리 가능.
    • 예: docker start, docker stop, docker rm

 

Docker를 사용할 때의 이점 ( 장점 )

 

  1. 이식성 (Portability)
    • 동일한 컨테이너 이미지를 개발, 테스트, 배포 환경에서 동일하게 실행.
  2. 경량화
    • 기존 가상머신(VM)에 비해 리소스 사용량이 적음.
  3. 빠른 시작 시간
    • 가상머신보다 컨테이너 시작 속도가 매우 빠름.
  4. 일관성 유지
    • "내 로컬에서는 잘 되는데..."라는 문제 해결.
  5. 효율적인 자원 활용
    • 하나의 운영 체제에서 여러 컨테이너를 효율적으로 실행.

예제 : Docker로 간단한 Python 애플리케이션 실행

 

  1. Dockerfile 작성
    FROM python:3.9
    WORKDIR /app
    COPY . /app
    RUN pip install -r requirements.txt
    CMD ["python", "app.py"]


  2. 이미지 생성
    docker build -t my_python_app .


  3. 컨테이너 실행
docker run -d -p 5000:5000 my_python_app

 


Docker로 컨테이너를 실행하는 것은 로컬에서 가상 서버를 만드는 것과 유사한 개념이라고 이해할 수 있습니다.

그럼, 무엇이 다른지 아래 표를 통해 알아보도록 하겠습니다.

 

Docker 컨테이너 vs 가상 서버 ( VM ) 차이점 한눈에 보기

 

특징 Docker 컨테이너 가상 서버(VM)
실행 방식 호스트 OS의 커널을 공유하며, 애플리케이션과 필요한 파일만 실행 호스트 OS 위에 별도의 운영 체제를 실행
속도 매우 빠르게 시작 (초 단위) 부팅 시간이 필요 (분 단위)
리소스 사용량 가볍고 효율적, 오버헤드 적음 무거움, 전체 운영 체제 자원 필요
격리 수준 프로세스 수준의 격리 하드웨어 수준의 격리
이식성 동일한 이미지로 어디서든 실행 가능 OS와 하드웨어 의존성이 존재
크기 일반적으로 수십 MB에서 수백 MB 정도 수 GB 이상

 

Docker 컨테이너 를 '가벼운 가상서버' 라고 생각할 수 있는 이유

 

  1. 독립된 환경 제공
    • Docker 컨테이너는 필요한 애플리케이션, 라이브러리, 설정 등을 포함하므로 로컬 환경과 독립적으로 실행됩니다.
    • 마치 작은 서버처럼 동작하지만, 운영 체제 전체를 실행하지 않기 때문에 가볍습니다.
  2. 격리된 실행
    • 각 컨테이너는 호스트 시스템의 다른 애플리케이션과 격리되어 동작합니다.
    • 컨테이너 간에 영향을 주지 않으므로 여러 개의 컨테이너를 동시에 실행할 수 있습니다.
  3. 가상 네트워크
    • Docker는 각 컨테이너에 가상 네트워크 인터페이스를 제공하여 컨테이너를 서버처럼 네트워크에서 접근할 수 있게 합니다.
    • 예를 들어, docker run -p 8080:80 을 사용하면 로컬에서 컨테이너가 8080 포트로 접속 가능한 서버처럼 동작합니다.
  4. 호스트와의 차이
    • Docker 컨테이너 내부의 파일 시스템, 네트워크 설정, 프로세스는 호스트와 별도로 동작합니다.
    • 하지만 여전히 호스트 OS의 커널을 사용하기 때문에 전통적인 VM보다 가볍습니다.

docker VM 간단비교

 

# 2. Docker 명령어 완벽 정리 및 예시

 

이미지 관련 명령어

 

명령어 설명
docker images 로컬에 저장된 Docker 이미지 목록 보기
docker pull [이미지:태그] Docker Hub에서 이미지 다운로드
docker build -t [이름:태그] . Dockerfile을 기반으로 이미지 빌드
docker rmi [이미지 ID/이름:태그] Docker 이미지 삭제
docker tag [이미지] [새 태그] 이미지에 새 태그 추가

 

더보기
  1. docker images
    • 설명: 로컬에 저장된 Docker 이미지 목록을 보여줍니다.
    • 예시:
      docker images

       

    • 출력 예시:
       
       
     
  2. docker pull [이미지:태그]
      • 설명: Docker Hub에서 이미지를 다운로드합니다.
      • 예시:
        docker pull python:3.9
        • 결과: Python 3.9 이미지가 로컬에 다운로드됩니다.
  3. docker build -t [이름:태그] .
    • 설명: 현재 디렉토리의 Dockerfile을 기반으로 이미지를 생성합니다.
    • 예시:
      docker build -t myapp:1.0 .
       
      • 결과: myapp:1.0이라는 이름으로 이미지가 생성됩니다.
  4. docker rmi [이미지 ID/이름:태그]
    • 설명: 특정 이미지를 삭제합니다.
    • 예시:
       
      docker rmi python:3.9
      • 결과: python:3.9 이미지를 삭제합니다.
  5. docker tag [이미지] [새 태그]
    • 설명: 이미지에 새 태그를 추가합니다.
    • 예시:
      docker tag python:3.9 python:latest
      • 결과: python:3.9 이미지가 python:latest로 태그됩니다.

 

컨테이너 실행 및 관리

 

명령어 설명
docker run [옵션] [이미지:태그] 컨테이너 실행 (이미지 없을 경우 자동으로 Pull)
docker ps 실행 중인 컨테이너 목록 보기
docker ps -a 모든 컨테이너 목록 보기 (정지된 컨테이너 포함)
docker stop [컨테이너 ID/이름] 실행 중인 컨테이너 중지
docker start [컨테이너 ID/이름] 정지된 컨테이너 다시 시작
docker rm [컨테이너 ID/이름] 컨테이너 삭제 (정지 상태에서만 가능)
docker exec -it [컨테이너 ID] [명령어] 실행 중인 컨테이너에서 명령어 실행 (예: bash 접속)
docker logs [컨테이너 ID/이름] 컨테이너 로그 확인
docker restart [컨테이너 ID/이름] 컨테이너 재시작

 

더보기

1. docker run [옵션] [이미지:태그]

  • 설명: Docker 이미지를 기반으로 컨테이너를 생성하고 실행합니다. 이미지를 로컬에서 찾지 못하면 Docker Hub에서 자동으로 다운로드(Pull)합니다.
  • 예시 1: 간단한 Python 컨테이너 실행
    • 예시: 
      docker run -it python:3.9

    • 결과: Python 3.9 컨테이너가 실행되고, 대화형 모드로 진입하여 Python 인터프리터가 실행됩니다.
    • 출력 예시:
       

2. docker ps

  • 설명: 실행 중인 컨테이너 목록을 확인합니다.
  • 예시:
    docker ps
    • 출력 예시:
      CONTAINER ID   IMAGE       COMMAND                  STATUS         PORTS                  NAMES
      123abc456def   nginx       "/docker-entrypoint.…"   Up 2 minutes   0.0.0.0:8080->80/tcp   elegant_kapoor

3. docker ps -a

  • 설명: 모든 컨테이너(정지된 컨테이너 포함) 목록을 확인합니다.
  • 예시:
    docker ps -a
    • 출력 예시:

4. docker stop [컨테이너 ID/이름]

  • 설명: 실행 중인 컨테이너를 중지합니다.
  • 예시:
    docker stop 123abc456def
     
    • 결과: ID가 123abc456def인 컨테이너가 중지됩니다.

5. docker exec -it [컨테이너 ID/이름] [명령어]

  • 설명: 실행 중인 컨테이너 내부에서 명령어를 실행합니다.
  • 예시 1: Bash 쉘 접속
    docker exec -it 123abc456def bash
    • 결과: ID가 123abc456def인 컨테이너 내부에 접속하여 Bash 쉘을 사용할 수 있습니다.
       
  • 예시 2: 단일 명령 실행
    docker exec -it 123abc456def ls /usr/share/nginx/html

    • 결과: Nginx 컨테이너 내부에서 /usr/share/nginx/html 디렉토리의 파일 목록이 출력됩니다.
    • 출력 예시:
       

6. docker logs [컨테이너 ID/이름]

  • 설명: 컨테이너의 로그를 확인합니다.
  • 예시:
    docker logs 123abc456def
    • 결과: 컨테이너에서 발생한 로그가 출력됩니다.

7. docker restart [컨테이너 ID/이름]

  • 설명: 컨테이너를 재시작합니다.
  • 예시:
    docker restart 123abc456def
     
    • 결과: ID가 123abc456def인 컨테이너가 정지 후 재실행됩니다.

 

 

 

 

 

 

네트워크 관련 명령어

 

명령어 설명
docker network ls Docker 네트워크 목록 확인
docker network create [네트워크 이름] 새로운 네트워크 생성
docker network inspect [네트워크 이름] 네트워크 세부정보 확인
docker network connect [네트워크 이름] [컨테이너 ID] 컨테이너를 네트워크에 연결
docker network disconnect [네트워크 이름] [컨테이너 ID] 네트워크에서 컨테이너 연결 해제

 

더보기

1. docker network ls (Docker 네트워크 목록 확인)

  • 설명: Docker 네트워크 목록을 확인합니다.
  • 예시:
    docker network ls
  • 출력 예시:
     

2. docker network create [네트워크 이름] (새로운 네트워크 생성)

  • 설명: 사용자 정의 네트워크를 생성합니다.
  • 예시:
    docker network create my-custom-network
     
  • 출력 예시: 생성된 네트워크의 ID가 출력됩니다.
     
  • 생성된 네트워크 확인
    docker network ls

  • 출력 예시:

 

 


3. docker network inspect [네트워크 이름] (네트워크 세부정보 확인)

  • 설명: 특정 네트워크의 세부 정보를 확인합니다.
  • 예시:
    docker network inspect my-custom-network
     
  • 출력 예시:
     

4. docker network connect [네트워크 이름] [컨테이너 ID] (컨테이너를 네트워크에 연결)

  • 설명: 특정 컨테이너를 네트워크에 연결합니다.
  • 예시: 컨테이너를 실행한 후 네트워크에 연결:
    docker run -d --name my-app nginx 
    docker network connect my-custom-network my-app
     
  • 결과 확인: 네트워크의 세부정보를 확인하면 컨테이너가 연결된 것을 볼 수 있습니다.
    docker network inspect my-custom-network
     
    출력 예시:
     

5. docker network disconnect [네트워크 이름] [컨테이너 ID] (네트워크에서 컨테이너 연결 해제)

  • 설명: 컨테이너를 특정 네트워크에서 분리합니다.
  • 예시:
    docker network disconnect my-custom-network my-app
     
  • 결과 확인: 네트워크의 세부정보에서 컨테이너가 제거된 것을 확인:
    docker network inspect my-custom-network
     
    출력 예시:
     

 

 

 

 

 

볼륨 관리

 

명령어 설명
docker volume ls Docker 볼륨 목록 확인
docker volume create [볼륨 이름] 새로운 볼륨 생성
docker volume inspect [볼륨 이름] 볼륨 세부정보 확인
docker volume rm [볼륨 이름] 볼륨 삭제

 

더보기

 

1. docker volume ls (Docker 볼륨 목록 확인)

  • 설명: Docker에 생성된 모든 볼륨 목록을 확인합니다.
  • 예시:
    docker volume ls
     
  • 출력 예시:
     

 


2. docker volume create [볼륨 이름] (새로운 볼륨 생성)

  • 설명: 새로운 볼륨을 생성합니다.
  • 예시:
    docker volume create my-new-volume
     
  • 출력 예시:

  • 생성된 볼륨 목록 확인
    docker volume ls
  • 출력 예시:

3. docker volume inspect [볼륨 이름] (볼륨 세부정보 확인)

  • 설명: 특정 볼륨의 세부 정보를 확인합니다.
  • 예시:
    docker volume inspect my-new-volume
     
  • 출력 예시:
     

4. docker volume rm [볼륨 이름] (볼륨 삭제)

  • 설명: 특정 볼륨을 삭제합니다.
  • 예시:
    docker volume rm my-new-volume
     
  • 출력 예시:
  • 삭제된 볼륨 확인:
    docker volume ls
  • 출력 예시:
     

 

 

이미지 및 컨테이너 정리

 

명령어 설명
docker system prune 사용하지 않는 모든 리소스 정리 (컨테이너, 이미지, 네트워크 등)
docker image prune 사용하지 않는 이미지 정리
docker container prune 사용하지 않는 컨테이너 정리
docker volume prune 사용하지 않는 볼륨 정리
docker network prune 사용하지 않는 네트워크 정리

 

더보기

1. docker system prune

  • 설명: 사용하지 않는 모든 리소스(중지된 컨테이너, 사용되지 않는 이미지, 네트워크, 볼륨 등)를 정리합니다.
  • 예시:
    docker system prune
     
  • 출력 예시:
     

2. docker image prune

  • 설명: 사용하지 않는 이미지(태그 없는 이미지 등)를 정리합니다.
  • 예시:
    docker image prune
     
  • 출력 예시:
     

3. docker container prune

  • 설명: 사용하지 않는 컨테이너(중지된 컨테이너)를 정리합니다.
  • 예시:
    docker container prune
     
  • 출력 예시:
     

4. docker volume prune

  • 설명: 사용하지 않는 볼륨(컨테이너와 연결되지 않은 볼륨)을 정리합니다.
  • 예시:
    docker volume prune
     
  • 출력 예시:
     

5. docker network prune

  • 설명: 사용하지 않는 네트워크를 정리합니다.
  • 예시:
    docker network prune
     
  • 출력 예시:
     

 

 

 

Docker Compose 명령어

 

명령어 설명
docker-compose up docker-compose.yml 파일 기반으로 컨테이너 실행
docker-compose down 실행 중인 Compose 애플리케이션 중지 및 정리
docker-compose ps Compose로 실행된 컨테이너 목록 확인
docker-compose logs Compose 애플리케이션 로그 보기
docker-compose build Docker Compose 이미지 빌드
docker-compose stop Compose로 실행된 컨테이너 정지

 

 

더보기

1. docker-compose up

  • 설명: docker-compose.yml 파일을 기반으로 컨테이너를 생성하고 실행합니다.
  • 예시: 아래와 같은 docker-compose.yml 파일이 있다고 가정합니다
    docker-compose.yml
  • 실행 명령
    docker-compose up
     
  • 출력 예시:

2. docker-compose down

  • 설명: 실행 중인 Compose 애플리케이션을 중지하고 생성된 리소스(컨테이너, 네트워크 등)를 정리합니다.
  • 예시:
    docker-compose down
     
  • 출력 예시:
     

3. docker-compose ps

  • 설명: Compose로 실행된 컨테이너 목록을 확인합니다.
  • 예시:
    docker-compose ps
     
  • 출력 예시:
     

4. docker-compose logs

  • 설명: Compose 애플리케이션의 로그를 확인합니다.
  • 예시:
    docker-compose logs
     
  • 출력 예시:
  • 특정 서비스의 로그만 확인
    docker-compose logs app

  • 출력 예시:

 


5. docker-compose build

  • 설명: docker-compose.yml 파일에 정의된 서비스의 이미지를 빌드합니다.
  • 예시:
    docker-compose build
     
  • 출력 예시:
     

6. docker-compose stop

  • 설명: Compose로 실행된 컨테이너를 정지합니다. 네트워크와 컨테이너는 삭제되지 않습니다.
  • 예시:
    docker-compose stop
     
  • 출력 예시:
     

 

 

 

 

 

 

 

 

유용한 단축 명령

 

명령어 설명
docker run --rm [이미지:태그] 컨테이너 실행 후 종료 시 자동 삭제
docker run -d [이미지:태그] 백그라운드에서 컨테이너 실행
docker run -p [호스트 포트]:[컨테이너 포트] 컨테이너 포트를 로컬 호스트에 바인딩
docker exec -it [컨테이너 ID/이름] bash 실행 중인 컨테이너의 bash 쉘에 접속
docker cp [파일] [컨테이너 ID]:[경로] 로컬 파일을 컨테이너로 복사

 

더보기

1. docker run --rm [이미지:태그]

  • 설명: 컨테이너를 실행한 후 종료 시 컨테이너를 자동으로 삭제합니다.
  • 예시:
    docker run --rm ubuntu echo "Hello, Docker!"
     
  • 출력 예시:
     
  • 실행 후, 컨테이너가 자동으로 삭제되므로 docker ps -a 에서 확인되지 않습니다.

2. docker run -d [이미지:태그]

  • 설명: 컨테이너를 백그라운드에서 실행합니다.
  • 예시:
    docker run -d nginx
     
  • 출력 예시:
    • 컨테이너의 ID가 출력됩니다.
       
  • 실행 중인 컨테이너 확인:
    docker ps
     
  • 출력 예시:
     
    CONTAINER ID   IMAGE     COMMAND                  STATUS         PORTS      NAMES
    123abc456def   nginx     "/docker-entrypoint.…"   Up 2 seconds   80/tcp     mystifying_turing

3. docker run -p [호스트 포트]:[컨테이너 포트]

  • 설명: 컨테이너의 포트를 로컬 호스트에 바인딩하여 외부에서 접근 가능하게 설정합니다.
  • 예시:
    docker run -d -p 8080:80 nginx
     
  • 출력 예시:
    • 컨테이너의 ID가 출력됩니다.
       
  • 실행 중인 컨테이너 확인:
    docker ps
  • 출력 예시:
    CONTAINER ID   IMAGE     COMMAND                  STATUS         PORTS                  NAMES
    456def789ghi   nginx     "/docker-entrypoint.…"   Up 5 seconds   0.0.0.0:8080->80/tcp   epic_hypatia
  • 브라우저에서 http://localhost:8080 에 접속하면 Nginx 기본 페이지가 표시됩니다.

4. docker exec -it [컨테이너 ID/이름] bash

  • 설명: 실행 중인 컨테이너에 접속하여 bash 쉘을 사용할 수 있습니다.
  • 예시:
    docker exec -it 123abc456def bash
     
  • 출력 예시:
    • 컨테이너 내부로 접속된 상태에서 bash 쉘이 활성화됩니다.
  • 컨테이너 내부 작업 예시:
    ls

  • 출력 예시:
    bin   boot  dev  etc  home  lib  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var




5. docker cp [파일] [컨테이너 ID]:[경로]

  • 설명: 로컬 파일을 컨테이너 내부로 복사합니다.
  • 예시:
    echo "This is a test file" > test.txt 
    docker cp test.txt 123abc456def:/root/test.txt
     
  • 컨테이너 내부에서 파일 확인:



  • 출력 예시:
    test.txt

     
  • 컨테이너 내부에서 파일 내용 확인:

    cat /root/test.txt


  • 출력 예시:

 

# 3. Docker 에 대한 간단한 FAQ

 

1. Docker란 무엇인가요?

Docker는 컨테이너 기술을 사용하여 애플리케이션과 그 의존성을 함께 패키징하고, 어디서나 일관된 환경에서 실행할 수 있도록 도와주는 플랫폼입니다.


2. Docker와 가상 머신(VM)의 차이점은 무엇인가요?

  • Docker는 호스트 OS의 커널을 공유하며, 애플리케이션 실행에 필요한 최소한의 환경만 제공하는 반면,
    VM은 하드웨어 가상화를 통해 완전한 운영 체제를 실행합니다.
  • Docker는 가볍고 빠르며 리소스 효율적입니다.

3. Docker 컨테이너란 무엇인가요?

Docker 컨테이너는 애플리케이션과 그 의존성을 포함하는 가벼운 실행 환경입니다.
컨테이너는 격리된 상태에서 실행되며, 애플리케이션이 어디서나 동일하게 동작할 수 있도록 지원합니다.


4. Docker 이미지는 무엇인가요?

Docker 이미지는 컨테이너를 생성하기 위한 읽기 전용 템플릿입니다.
애플리케이션 실행에 필요한 코드, 라이브러리, 설정 등을 포함하며, 컨테이너는 이 이미지를 기반으로 생성됩니다.


5. Docker를 사용하는 이유는 무엇인가요?

  • 일관된 실행 환경 제공: "내 로컬에서는 되는데…" 문제 해결.
  • 빠른 배포: 애플리케이션과 환경을 함께 패키징하여 어디서나 실행 가능.
  • 효율적인 리소스 활용: VM보다 가볍고 실행 속도가 빠름.
  • 이식성: 클라우드, 로컬, 서버 등 다양한 환경에서 동일하게 동작.

6. Docker를 설치하려면 어떻게 해야 하나요?

Docker 공식 웹사이트(https://www.docker.com/) 에서 운영 체제에 맞는 Docker Desktop 또는 Docker Engine을 다운로드하여 설치하면 됩니다.


7. Docker Hub란 무엇인가요?

Docker Hub는 Docker 이미지를 공유할 수 있는 클라우드 기반 레지스트리입니다.
사용자는 필요한 이미지를 검색하고 다운로드(Pull)하거나, 자신만의 이미지를 업로드(Push)할 수 있습니다.


8. Dockerfile이란 무엇인가요?

Dockerfile은 Docker 이미지를 생성하기 위한 설정 파일입니다.
애플리케이션 환경 설정, 설치할 패키지, 실행 명령어 등을 정의합니다.

FROM python:3.9
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

9. Docker Compose란 무엇인가요?

Docker Compose는 여러 컨테이너를 함께 정의하고 실행할 수 있게 해주는 도구입니다.
docker-compose.yml 파일을 사용하여 컨테이너 간의 네트워크, 볼륨, 설정을 간단히 관리할 수 있습니다.


10. Docker를 배우기 위해 필요한 사전 지식은 무엇인가요?

  • 기본적인 Linux/CLI 명령어 사용법 ( 리눅스 명령어 모음 바로가기 )
  • 네트워킹(포트, IP 등) 개념 이해.
  • 애플리케이션 배포와 서버 관리에 대한 기본적인 이해.
    하지만 간단한 프로젝트는 바로 따라하면서 익힐 수 있습니다.

 

썸네일

 

반응형