Docker

docker run 옵션 /alpine?

25G 2023. 8. 7. 13:17

docker run 옵션

-i : 컨테이너 입력STDIN을 열어놓는 옵션
-t: 가상터미널(tty)을 할당하는 옵션
--name: 컨테이너 이름설정
-d: 컨테이너를 백그라운드에서 실행하는 옵션
--rm: 컨테이너 종료시 컨테이너를 자동으로 삭제하는 옵션
-p: 호스트와 컨테이너 포트를 연결하는 옵션
-v: 호스트와 컨테이너 디렉토리를 연결하는 옵션
attach: 포그라운드로 접속 혹은 실행중인컨테이너로 연결하는 옵션

-it옵션의 의미

  • docker 컨테이너에 표준 입력을 오픈해놓고
  • pseudo tty를 만들어서 해당하는 표준입력을 tty에 연결
  • 따라서 키보드 입력을 tty를 통해 컨테이너의 표준입력으로 전달할 수 있도록 하는 것임

tty?
tty는 teletypewriter의 약자로, 리눅스에서는 콘솔 또는 터미널을 의미한다.

실행중인 컨테이너 종료

  • docker stop 컨테이너이름
    stop은 종료를 하는 명령어

컨테이너 중지를 하는 명령어

  • doker pause
    중지상태에서 실행하는 명령어
  • docker unpause

-p옵션

포트 포워딩을 하는 옵션

  • docker를 실행한 pc를 hostPC라고 한다.
  • docker 컨테이너가 실행되면 172.17.0.0/16인 PrivateIP가 할당된다.
    • /16은 16비트까지 iP할당이 된다는 의미로 172.17.0.0~172.17.255.255까지 동일 네트워크상에 IP주소를 가질 수 있음을 의미한다.
  • 호스트 PC IP에 특정 port로 access시 해당 port를 docker컨테이너의 특정 Private IP 의 특정 포트로 변환해줄 수 있음 이를 NAPT기술이라고 합니다.
    이를 지원해 주는 옵션이 -p이다.

-p 호스트PC port:컨테이너 port

-v옵션

예를 들어 docker컨테이너에 mysql을 설치했다고 해보자 그렇게되면 언젠가 해당 컨테이너를 종료하게될때 컨테이너내부에 있는 mysql의 스키마나 데이터는 어떻게 될까?
결과적으로 도커는 image기반으로 컨테이너를 만들기때문에 컨테이너를 삭제하거나 종료하면 해당 데이터는 다 사라지게된다 그럼 docker에서는 데이터를 저장할 수 없는 것일까?
이럴때 사용하는것이 -v옵션이다.
-v 옵션은 호스트pc에 있는 어떠한 디렉토리와 docker컨테이너 내부에 있는 어떤 디렉토리를 연결해서 동기화 시켜준다. 즉 mysql컨테이너 내부에 데이터를 저장하는 디렉토리와 호스트pc의 디렉토리를 volume 즉 -v 옵션으로 연결시켜놓으면 mysql컨테이너를 종료하더라도 내 호스트pc에 -v옵션으로 연결시켜놓은 폴더에 데이터가 동기화 돼있기때문에 데이터는 사라지지 않게 된다.
ex)

  • -v 내호스트pc에연결시킬디렉토리의절대경로:컨테이너내부에연결시킬절대경로

위의 경우는 컨테이너의 데이터를 저장하는 방법처럼 나오지만 볼륨은 호스트pc에서 연결된 디렉터리의 내용을 수정해도 컨테이너에 동기화가 되기때문에 배포를 하거나 하는 면에서 아주 유용하게 사용할 수 있다.

docker가 사용하고 있는 저장매체현황 확인하기

  • 추후 docker 가 사용하는 저장매체 공간이 이슈가 될 수 있으므로 다음명령어로 도커가 사용하고 있는 저장매체현황을 알 수 있다.
  • docker system df

docker 와 alpine

  • docker 이미지는 여러개의 이미지가 계층으로 쌓인 형태로 작성이 됐다.
    • 예를들면 C 라이브러리 이미지를 쌓고 여기에 bash와 같은 쉘프로그램이미지를 쌓고 여기에 응용프로그램 이미지를 쌓는 방식
  • 대부분의 docker 이미지에 가장 기본이 되는 이미지는 ubuntu가 아니라 alpine인 경우가 많다. 왜냐하면 기분 ubuntu이미지는 무겁기때문
    • alpine은
      • muslibc라는 인베디드 리눅스(초경량 시스템을 위한 리눅스 시스템)을 위한 C/POSIX library라는 표준규격에 맞춘 기본함수를 포함한 라이브러리
      • BusyBox는 운영체제 운영에 필요한 가장기본이 되는 유틸리티만 모아놓은 패키지

        실행중인 컨테이너 사용 리소스 확인하기

        docker container stats

실행중인 컨테이너에 명령 실행하기

  • 컨테이너가 실행중일 때에만 다음 명령을 실행할 수 있음

docker exec 옵션 컨테이너아이디 명령인자

그리고 해당 명령어를 통해서 실행중인 컨테이너 내부에 들어가지않고 호스트 Pc에서 컨테이너로 명령을 날리거나 아니면 실행중인 컨테이너 내부로 들어가서 작업을 하거나할때 사용한다.
docker exec -it 컨테이너 bin/bash or bin/sh(alpine)