LastMod:

👨‍💻 개인 공부 기록용 블로그 입니다.
💡 틀린 내용이나 오타는 댓글, 메일로 제보해주시면 감사하겠습니다!! (__)

도커를 사용하기 위한 간략한 개념 정리

Untitled

  • 각 소프트웨어를 격리된 공간(컨테이너)내에서 실행하도록 도와주는 소프트웨어
  • 가상 머신 (VM; Virtual Machine)과는 달리, OS가 통째로 올라가지 않음
  • 본래 컨테이너는 리눅스 커널의 기능이지만, 도커 라는 컨테이너 런타임은 가상화 기술을 통해 리눅스 커널을 가상화 하고, 그 위에 도커 엔진을 올려 작동함
  • 가상 머신과 비교하여 훨씬 가볍게, 독립된 샌드 박스 환경을 만들어 줄 수 있음
  • 사용도 간편하고, 의존성 문제를 쉽게 해결해줄 수 있기 때문에 많이 쓰임

docker ps, images, pull

  • 앱스토어에서 프로그램을 다운로드 받아 프로세스를 실행 하는 것과 같이,
  • docker hub에서 imagepull 받아 컨테이너를 run 한다.
  • 이미지는 일단 특정 컨테이너에 대한 스냅샷 이라고 생각하자.
  • docker images 를 통해 로컬에 저장된 이미지를 확인할 수 있다.
  • 각종 이미지들이 저장되어 있는 클라우드 저장소를 docker hub 라고 한다. → docker에서 직접 운영한다.
  • docker pull [OPTIONS] NAME[:TAG|@DIGEST] 를 통해 docker hub로 부터 이미지를 가져올 수 있다.

    Untitled

  • docker ps [OPTIONS] 를 통해 현재 컨테이너 목록을 확인할 수 있다.

    Untitled

docker run

  • 도커는 격리된 컨테이너에서 프로세스를 실행한다.
  • 실행되는 컨테이너 프로세스는 호스트와 분리된 자체 파일시스템, 자체 네트워킹 및 자체 격리된 프로세스 트리를 가지고 있다.
  • docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...] 를 통해 정의된 이미지를 컨테이너로 실행시킬 수 있다.
  • 이 명령의 옵션은 기존 이미지의 설정을 덮어씌울 수 있다.
  • 엄청난 양의 옵션이 있으니, 링크에서 확인해보자.

    Docker run reference

  • -d 옵션을 통해 분리된(detached) 컨테이너를 백그라운드에서 돌릴 지 선택할 수 있다
  • —-name 옵션을 통해 컨테이너의 이름을 지정할 수 있다.
  • —restart 옵션을 통해 컨테이너의 재시작 정책을 설정할 수 있다.
  • -p hostPort:containerPort 를 통해 호스트와 컨테이너의 포트를 연결할 수 있다.
  • -v [host-src:]container-dest[:<options>] 를 통해 호스트와 컨테이너의 파일 시스템을 연결할 수 있다.
  • 쉘과 같은 인터렉티브 환경을 위해서는 꼭 -it 옵션을 줘야한다.
    • -i : 연결(attached)되지 않은 상태에서도 STDIN 열어두기
    • -t : 의사tty(pseudo TeleTYpewriter) 할당

docker start, stop, logs

  • docker start [OPTIONS] CONTAINER [CONTAINER...] 를 통해 하나 이상의 종료된 컨테이너를 동작시킬 수 있다.

    Untitled

  • docker stop [OPTIONS] CONTAINER [CONTAINER...] 를 통해 하나 이상의 실행중인 컨테이너를 중지시킬 수 있다.
  • 컨테이너는 내부에 실행중인 프로세스가 없다면 바로 종료된다.
  • docker logs [OPTIONS] CONTAINER 를 통해, 실행중인 컨테이너의 로그를 받아볼 수 있다.

    -f 옵션을 통해 로그를 실시간으로 찍어낼 수 있다.

    -f 옵션을 통해 로그를 실시간으로 찍어낼 수 있다.

docker exec

  • docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

    Untitled

  • 동작중인 컨테이너(=PID 1이 살아있음) 내부에서 명령어를 실행한다.
  • 반드시 실행파일 형태의 명령어가 들어가야 하며, 체인이나 따옴표로 여러 명령을 묶어 넣는 것은 동작하지 않는다.

    “echo a && echo b” 는 동작하지 않지만, sh -c “echo a && echo b” 는 동작한다.

docker rm, rmi

  • docker rm [OPTIONS] CONTAINER [CONTAINER...] 를 통해 하나 이상의 컨테이너를 삭제할 수 있다.

    Untitled

  • docker rmi [OPTIONS] IMAGE [IMAGE...] 를 통해 로컬에 저장된 하나 이상의 이미지를 삭제할 수 있다.

    Untitled

Reference

https://docs.docker.com/engine/reference/commandline/cli

https://opentutorials.org/course/4781

Leave a comment