run -tag

  1. docker run reids
    • = docker run redis:latest
    • tag를 달지 않으면 자동으로 latest version을 사용
  2. docker run redis:4.0
    • 특정 version의 image를 실행하고 싶을 때 tag를 사용

run -stdin (container input 관련)

  1. docker container는 표준 input을 수신하지 않는다.
    • 만약 이름을 입력하면 인사를 출력하는 app을 container로 올린후 실행하면, 입력을 받지 않고 출력이 된다.
    • 대화를 할 수 없음
  2. -i
    • interactive mode를 사용하면 container도 입력을 받아 대화 가능해짐
  3. -t or it(-i + -t)
    • container terminal을 의미
    • prompt를 포함한 interactive mode
    • 원래 2번 예시에서 welcome 구문이 안보여야하는데 보인다 이미지가 수정됬나보다

run -port mapping/publishing

  1. docker가 설치된 기본 host = Docker Host, Docker Engine

  2. USER가 container로 실행중인 app에 어떻게 접근할 수 있는가? -> PORT 이용

  3. web browser에서 app에 접근하기 위해서는 어떤 IP를 사용해야 하는가?

    1. Docker container IP
      • internal IP
      • Docker Host를 통해서만 엑세스 가능
      • 외부 사용자는 엑세스 불가능
    2. Docker Host IP
      • 이를 위해서는 Docker container port와 Docker Host port를 매핑해야함
      • docker run -p <host port>:<container port> <appname>
      • 이를 이용하면 아래와 같이 container instane를 복제하고 Host의 다른 port에 mapping하여 여러 개를 실행할 수 있다.
      • host port가 중복되지 않도록 조심해야함

run -volume mapping

  1. 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해야함

추가 정보

  1. docker 세부 정보
    • docker inspect <application/container ID>
    • container의 internal IP 찾을 수 있음 : networks-bridge-IPAddress
    • docker host IP = 192.168.1.14:
  2. background에서 실행한 container의 log 관찰
    • docker logs <application>
  3. 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
    1. 0.0.0.0:3456->3456/tcp
    • host ip 주소: host port-> container port
  1. 0.0.0.0:38080->80/tcp
    • host ip 주소: host port -> container port