3.docker-run 심화
run -tag
docker run reids
- =
docker run redis:latest
- tag를 달지 않으면 자동으로 latest version을 사용
- =
docker run redis:4.0
- 특정 version의 image를 실행하고 싶을 때 tag를 사용
run -stdin (container input 관련)
- docker container는 표준 input을 수신하지 않는다.
- 만약 이름을 입력하면 인사를 출력하는 app을 container로 올린후 실행하면, 입력을 받지 않고 출력이 된다.
- 대화를 할 수 없음
-i
- interactive mode를 사용하면 container도 입력을 받아 대화 가능해짐
-t
orit
(-i + -t)- container terminal을 의미
- prompt를 포함한 interactive mode
- 원래 2번 예시에서 welcome 구문이 안보여야하는데 보인다 이미지가 수정됬나보다
run -port mapping/publishing
-
docker가 설치된 기본 host = Docker Host, Docker Engine
-
USER가 container로 실행중인 app에 어떻게 접근할 수 있는가? -> PORT 이용
-
web browser에서 app에 접근하기 위해서는 어떤 IP를 사용해야 하는가?
- Docker container IP
- internal IP
- Docker Host를 통해서만 엑세스 가능
- 외부 사용자는 엑세스 불가능
- Docker Host IP
- 이를 위해서는 Docker container port와 Docker Host port를 매핑해야함
docker run -p <host port>:<container port> <appname>
- 이를 이용하면 아래와 같이 container instane를 복제하고 Host의 다른 port에 mapping하여 여러 개를 실행할 수 있다.
- host port가 중복되지 않도록 조심해야함
- Docker container IP
run -volume mapping
docker run -v <host directory>:<container directory> <appname>
docker run -v /opt/datadir:/var/lib/mysql mysql
- container를 삭제하게 되면 container 안의 data는 사라짐.
- data 유지방법 : docker host directory를 docker container directory를 mapping해야함
추가 정보
- docker 세부 정보
docker inspect <application/container ID>
- container의 internal IP 찾을 수 있음 : networks-bridge-IPAddress
- docker host IP = 192.168.1.14:
- background에서 실행한 container의 log 관찰
docker logs <application>
docker run ubuntu cat/etc/*release*
cat /ect/*release*
: 추가 명령을 통해 실행중인 ubuntu version 출력
PORT 관련 설명
0.0.0.0:3456->3456/tcp, 0.0.0.0:38080->80/tcp
0.0.0.0:3456->3456/tcp
- host ip 주소: host port-> container port
0.0.0.0:38080->80/tcp
- host ip 주소: host port -> container port