본문 바로가기
IT/도커

3. 도커 실행 관련(태그, 포트, 볼륨 매핑 등)

by 노오-력 2023. 1. 19.

docker run 은 컨테이너를 실행하는 명령어 이다.

$ docker run redis

docker run redis 명령어로 redis 서비스를 실행하는 컨테이너를 실행한다.

버전을 확인해 보면 현재 가장 최신 버전(7.0버전) 이미지를 가져와 실행하게 된다.

 

 

그럼 다른 버전의 redis를 실행하고 싶으면 어떻게 해야할까?

 

1. 태그(Tag)

$ docker run redis:5.0

이미지 뒤에 :(콜론)을 입력하고 버전을 쓰면 된다.

이것을 태그(Tag)라고 한다. 

 

docker는 아무런 태그를 입력하지 않으면

자동으로 기본 태그를 latest로 간주한다.

 

 

 

 

 

2. 표준입력

$ docker run -it [이미지]

-i 옵션을 사용해서 호스트의 표준 입력값과 docker 컨테이너를 맵핑해서

입력값을 받게 할 수 있다.

-t 옵션은 가상 터미널을 의미한다.

 

i옵션과t옵션을 결합함으로

대화형 모드를 실행할 뿐 아니라 터미널 연결도 할 수 있다.

 

 

 

 

 

3. 포트 매핑과 포트 퍼블리싱

모든 docker 컨테이너는 기본으로 IP를 할당받는다.

xxx/webapp 이미지로 실행한 컨테이너는 172.17.0.2 이다

하지만 이것은 내부IP라서 docker 호스트를 통해서만 액세스를 할 수 있다.

그래서 docker 호스트 IP인 192.168.1.5 를 사용해야한다.

하지만 이 기능이 작동하려면

docker 컨테이너 포트와 docker 호스트 포트를 매핑해야한다.

호스트 포트80과 컨테이너 포트 5000을 -p 옵션을 사용해 아래와 같이 매핑해야한다.

$ docker run -p 80:5000 xxx/webapp
$ docker run -p 3306:3306 mysql

매핑을 하면 사용자가 http://192.168.1.5:80 url을 입력해 애플리케이션에 접근할 수 있다.

그리고 docker 호스트 포트80의 모든 트래픽은

docker 컨테이너 포트5000으로 라우트된다.

 

 

 

4. 볼륨 매핑

docker 컨테이너에서 데이터가 어떻게 유지되는지 알아보자

예를들어 MySQL 컨테이너를 실행했다고 해보자.

DB와 테이블이 생성되면 컨테이너 안에 있는

/var/lib/mysql로 파일이 저장된다.

컨테이너는 자체적으로 파일 시스템을 갖고 있고

파일 변경은 오직 해당 컨테이너 안에서만 진행된다.

 

만약 MySQL 컨테이너를 삭제하면 어떻게 될까?

제거하는 즉시 그 안에 있는 모든 데이터가 날아간다.

즉, DB가 다 날라간다는거다.

 

데이터를 유지하기위해서는

컨테이너 외부에 있는 호스트 디렉터리를

컨테이너 내부 디렉터리에 매핑해야한다.

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

-v 옵션 뒤에 호스트 디렉터리 : 컨테이너 내 디렉터리 를 입력하면 된다.

이렇게 하면 컨테이너가 실행될때

외부 디렉터리가 컨테이너 내의 디렉터리로 마운트 된다.

 

이렇게 하면 컨테이너를 삭제해도

외부 디렉터리인 /opt/datadir 디렉터리는 계속 유지된다.

 

 

 

5. 특정 컨테이너의 추가적인 세부정보 조회

$ docker inspect [container_id or name]

상태, 마운트, 네트워크 등 컨테이너의 모든 세부정보를 JSON 형식으로 볼 수 있다.

 

 

 

6. 백그라운드에서 실행한 컨테이너 로그 확인

$ docker logs [container_id or name]

-d 옵션을 사용해 백그라운드로 실행한 컨테이너의 로그를 볼 수 있다.

 

 

 

'IT > 도커' 카테고리의 다른 글

5. 도커 환경변수  (0) 2023.01.22
4. 도커 이미지 생성, 푸쉬  (0) 2023.01.21
2. 도커에서 ubuntu 이미지 실행(sleep, exec)  (0) 2023.01.19
1. 기본적인 docker 명령어  (0) 2023.01.19
우분투에 도커 설치  (0) 2023.01.18