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
- alpine은
실행중인 컨테이너에 명령 실행하기
- 컨테이너가 실행중일 때에만 다음 명령을 실행할 수 있음
docker exec 옵션 컨테이너아이디 명령인자
그리고 해당 명령어를 통해서 실행중인 컨테이너 내부에 들어가지않고 호스트 Pc에서 컨테이너로 명령을 날리거나 아니면 실행중인 컨테이너 내부로 들어가서 작업을 하거나할때 사용한다.
docker exec -it 컨테이너 bin/bash or bin/sh(alpine)
'Docker' 카테고리의 다른 글
docker와 docker 연결하기\컨테이너끼리 통신하는법 (0) | 2023.08.07 |
---|---|
docker 주요명령어 (0) | 2023.08.07 |
Dockerfile 기본 문법 (0) | 2023.08.07 |
docker 컨테이너와 이미지 조사하는법 (0) | 2023.08.07 |
도커 엔진 기본 개념 (0) | 2023.08.07 |