본문 바로가기

[Docker]

[Docker] 잊을것 같으니 메모하자 - 도커 명령어 옵션

반응형

1. stdin

도커 컨테이너는 기본적으로 standard input을 입력받을 수가 없다. 

값을 받아서 쓰고 싶으면 호스트와 도커 컨테이너를 연결해줘야한다. 그러기 위해서 사용되는게 아래 두가지 옵션이다

  1.  -i  : interactive mode, 입력을 받을 수 있게한다
  2.  -t  : Pseudo Terminal, 컨테이너 터미널과 호스트를 연결해준다
docker run -it [Image]

2. Port

docker run을 하게 되면 사설 IP주소 주로  172.17.0.2  를 할당받게 된다. 그 결과 컨테이너 외부에서 내부로의 접근이 불가능해진다.

이러한 문제를 해결하기 위해 포트포워딩 기법을 사용한다.

 

docker run -p 1234:5000 [Image]

 

호스트의 1234 포트를 컨테이너 내부의 5000번으로 매핑해준다. 같은 이미지로 새로 컨테이너를 계속 띄워도 새로운 인스턴스로 취급을 하기 때문에 컨테이너간 포트는 중복이여도 상관없다. 단 그 컨테이너를 실행하는 호스트의 포트는 중복이여서는 안된다. 

3. Volume

각각의 도커 컨테이너들은 독립된 파일 시스템을 가지게 된다. 물론 그 컨테이너드를 지우게 되면 해당 컨테이너가 가지던 모든 데이터 역시 삭제가 된다.

그러면 어떻게 유지하는가...그걸 극복해주는게 볼륨이라는 기술이다

 

docker run -v /opt/datadir:/var/lib/mysql mysql

 

예제에서는 Mysql를 예로 들었는데, Mysql이미지는  /var/lib/mysql 이라는 디렉토리에 모든 정보를 저장한다. 

위 명령어를 토대로  -v  옵션을 통해서 호스트의  /opt/datadir 의 디렉토리를 컨테이너의  /var/lib/mysql  를 매핑시켜준다.

 

그러나 이제  -v  옵션보다는  --mount  옵션을 많이 사용한다. 

docker run \
--mount type=bind, source=/data/mysql,target=/var/lib/mysql mysql

bind 종류를 기준으로 두 옵션의 차이는 전자는 우리가 마운트하려는 경로가 없음에도 run 명령어 실행시 해당 디렉토리를 생성해주는 반면 후자는 디렉토리가 없다고 오류를 뱉어준다.


References

728x90

'[Docker]' 카테고리의 다른 글

[Docker] CMD vs ENTRYPOINT  (2) 2022.09.12
[Docker] ADD vs COPY  (0) 2022.09.11
[Docker] 도커 이미지  (2) 2022.09.11
[Docker] 잊을것 같으니 메모하자 - 도커 명령어  (0) 2022.09.09