책 예제에서
docker container run diamol/ch02-hello-diamol
실행 시 최초에는 애플리케이션을 컨테이너에서 실행하기 위한 패키징된 파일(=이미지)가 없기에 pull을 해 이미지를 받아온다. 그 후 컨테이너를 생성하고 이미지(=만든 앱과 실행을 위한 여러 lib,리소스)를 실행한다.
컨테이너 내에 동작하는 프로세스가 없다면(오류가 발생해 종료되거나 정상 종료등) 컨테이너는 자동 종료된다고 한다.
docker container run --interactive --tty diamol/base
* --interactive: 컨테이너에서 입력 받을 수 있게 한다.
* --tty: 터미널 세션에서 컨테이너를 조작
docker container ls
=> 실행 중인 컨테이너 정보를 조회한다.
docker container top $[containerId]
=> 해당 컨테이너의 모든 프로세스에 대한 정보를 조회한다.
docker container logs $[containerId]
=> 해당 컨테이너의 표준 출력으로부터 로그를 조회한다.
docker container inspect $[containerId]
=> 해당 컨테이너의 상세 정보를 조회한다.
docker container run --detach --publish 8088:80 diamol/ch02-hello-diamol-web
*--detach: 컨테이너를 백그라운드 모드로 실행하며 containerId를 출력한다
컨테이너를 빠져 나와도 종료되지 않는다
*--publish: 컨테이너 포트를 호스트 컴퓨터에 공개한다.
=> 호스트의 8088 포트로 들어온 트래픽을 해당 컨테이너의 80번 포트로 전달한다.
도커를 설치하면 호스트 컴퓨터 네트워크 계층에 도커가 끼어들게 된다. in,out 트래픽을 모두 도커가 가로채서 필요한 것을 컨테이너에 전달한다.
=> 위의 웹 사이트 호스팅 예제로 실행한 이미지의 index.html 파일을 수정하는 것이었다.
나는 실행 중인 컨테이너 shell로 접속하여 vi로 index.html을 수정하였다.
제공하는 답안을 살펴보니 docker container cp
를 통해 호스트 컴퓨터의 파일을 컨테이너의 파일을 덮어쓰기하는 것이 의도로 보였다.
따라서 docker container cp $[파일 절대 경로] $[컨테이너아이디:파일위치경로]
로 해결하는 것을 확인했다.