-i : 컨테이너 입력STDIN을 열어놓는 옵션
-t: 가상터미널(tty)을 할당하는 옵션
--name: 컨테이너 이름설정
-d: 컨테이너를 백그라운드에서 실행하는 옵션
--rm: 컨테이너 종료시 컨테이너를 자동으로 삭제하는 옵션
-p: 호스트와 컨테이너 포트를 연결하는 옵션
-v: 호스트와 컨테이너 디렉토리를 연결하는 옵션
attach: 포그라운드로 접속 혹은 실행중인컨테이너로 연결하는 옵션
tty?
tty는 teletypewriter의 약자로, 리눅스에서는 콘솔 또는 터미널을 의미한다.
컨테이너 중지를 하는 명령어
포트 포워딩을 하는 옵션
-p 호스트PC port:컨테이너 port
예를 들어 docker컨테이너에 mysql을 설치했다고 해보자 그렇게되면 언젠가 해당 컨테이너를 종료하게될때 컨테이너내부에 있는 mysql의 스키마나 데이터는 어떻게 될까?
결과적으로 도커는 image기반으로 컨테이너를 만들기때문에 컨테이너를 삭제하거나 종료하면 해당 데이터는 다 사라지게된다 그럼 docker에서는 데이터를 저장할 수 없는 것일까?
이럴때 사용하는것이 -v옵션이다.
-v 옵션은 호스트pc에 있는 어떠한 디렉토리와 docker컨테이너 내부에 있는 어떤 디렉토리를 연결해서 동기화 시켜준다. 즉 mysql컨테이너 내부에 데이터를 저장하는 디렉토리와 호스트pc의 디렉토리를 volume 즉 -v 옵션으로 연결시켜놓으면 mysql컨테이너를 종료하더라도 내 호스트pc에 -v옵션으로 연결시켜놓은 폴더에 데이터가 동기화 돼있기때문에 데이터는 사라지지 않게 된다.
ex)
위의 경우는 컨테이너의 데이터를 저장하는 방법처럼 나오지만 볼륨은 호스트pc에서 연결된 디렉터리의 내용을 수정해도 컨테이너에 동기화가 되기때문에 배포를 하거나 하는 면에서 아주 유용하게 사용할 수 있다.
docker container stats
docker exec 옵션 컨테이너아이디 명령인자
그리고 해당 명령어를 통해서 실행중인 컨테이너 내부에 들어가지않고 호스트 Pc에서 컨테이너로 명령을 날리거나 아니면 실행중인 컨테이너 내부로 들어가서 작업을 하거나할때 사용한다.
docker exec -it 컨테이너 bin/bash or bin/sh(alpine)