도커 교과서(1,2)

네코·2023년 1월 18일
0

도커교과서

목록 보기
1/1

1장. 도커의 활용 사례들

  • 클라우드 환경으로의 이주
  • 레거시 앱 개선
    모놀리식 앱을 도커를 통해 컴포넌트를 분할해 나갈 수 있다.
  • 클라우드 네이티브한 앱 개발에 적절
  • 기술혁신->서버리스 등
  • 데브옵스 도입 용이

2장. 기본 사용방법

책 예제에서
docker container run diamol/ch02-hello-diamol

실행 시 최초에는 애플리케이션을 컨테이너에서 실행하기 위한 패키징된 파일(=이미지)가 없기에 pull을 해 이미지를 받아온다. 그 후 컨테이너를 생성하고 이미지(=만든 앱과 실행을 위한 여러 lib,리소스)를 실행한다.

컨테이너 내에 동작하는 프로세스가 없다면(오류가 발생해 종료되거나 정상 종료등) 컨테이너는 자동 종료된다고 한다.

  • 각 컨테이너는 도커가 만들어낸 가상 리소스 (호스트명, ip주소, 파일시스템)을 독자적으로 갖는다.
  • 컨테이너 내부는 외부 환경을 알 수 없다.
  • 호스트 컴퓨터의 cpu,메모리,운영체제를 공유한다.
    =>격리/밀집을 동시에 만족
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 트래픽을 모두 도커가 가로채서 필요한 것을 컨테이너에 전달한다.

도커가 컨테이너를 실행하는 원리

  • 도커 엔진
    • 도커의 관리 기능을 맡는다.
    • 로컬 이미지 캐시를 관리한다.
    • 호스트 운영체제와 함께 가상네트워크, 컨테이너 등의 도커 리소스 생성을 관리한다.
    • 항시 동작하는 백그라운드 프로세스다.
  • 도커 api
    • 도커 엔진은 도커 api를 통해서만 제어 가능하다.
    • 표준 rest api이다
  • 도커 명령행 인터페이스
    • docker 명령 사용 시 실제 도커 api를 호출하는 cli

연습문제

=> 위의 웹 사이트 호스팅 예제로 실행한 이미지의 index.html 파일을 수정하는 것이었다.
나는 실행 중인 컨테이너 shell로 접속하여 vi로 index.html을 수정하였다.
제공하는 답안을 살펴보니 docker container cp를 통해 호스트 컴퓨터의 파일을 컨테이너의 파일을 덮어쓰기하는 것이 의도로 보였다.
따라서 docker container cp $[파일 절대 경로] $[컨테이너아이디:파일위치경로] 로 해결하는 것을 확인했다.

0개의 댓글