책 예제에서
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 $[파일 절대 경로] $[컨테이너아이디:파일위치경로] 로 해결하는 것을 확인했다.