본문 바로가기
도커&쿠버네티스

[도커/쿠버네티스] 2.1~2.2장 도커엔진 - 이미지와 컨테이너

by bzerome240 2021. 12. 28.

 

도커엔진의 기본단위

: 이미지, 컨테이너

 

 

2.1.1 이미지

: 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용프로그램을 실행 하는데 필요한 모든 것을 포함하는 패키지

- 이름 구성: 저장소이름/이미지이름:태그 ex) zerome/ubuntu:14.04

 

 

2.1.2 컨테이너

: 도커 이미지를 독립된 공간에서 실행할 수 있게 해주는 기술

 

도커이미지와 컨테이너는 1:N 관계

 

2.2.1 실습) 컨테이너 생성

docker container run <image> <command>

-i -t : 컨테이너 내부로 진입하도록 attach 가능한 상태로 설정

-d : detach로 컨테이너를 백그라운드에서 실행하도록 설정

-p : 포트 포워딩 

 

ex) 우분투 컨테이너 생성

docker run -i -t ubuntu:14.04

ex) webserver라는 이름의 컨테이너로 nginx 이미지 띄우기

- 서버 호스트의 80번 포트로 들어오는 요청은 모두 컨테이너의 80번 포트로 포워딩 된다.

docker container run -name webserver -d -p 80:80 nginx

 

도커 엔진에 존재하는 이미지 목록 확인

docker images

 

 

2.2.2 실습) 컨테이너 목록 확인

 

모든 컨테이너 목록 확인

docker ps -a

-a : 모든 컨테이너

 

 

실행중인 컨테이너 목록 확인

docker ps

 

컨테이너 연결

docker container attach <container-name>

 

 

2.2.3 실습) 컨테이너 삭제

컨테이너 종료

docker stop <container-name>

컨테이너 시작

docker start <container-name>

컨테이너 삭제

docker container rm <container-name>

-f : 강제 종료 및 삭제

 

 

2.2.4 실습) 컨테이너 외부 노출

 

 

2.2.5 컨테이너 애플리케이션 구축

- 한 컨테이너에 프로세스 하나만 실행하는것이 좋다

ex) 데이터베이스와 웹서버를 하나의 컨테이너에 설치할 수 있지만 , 데이터베이스와 웹서버는 각각의 컨테이너로 분리하는것을 권장한다

실습) 워드프레스 기반 블로그 서비스

 

 

2.2.6 도커 볼륨

- 도커 컨테이너: 쓰기 가능

- 도커 이미지: 읽기 가능

- 이미지에 mysql 실행 시 필요한 애플리케이션 파일이 있고, 컨테이너 계층에는 워드 프로세스에서 쓴 로그인 정보나 게시글 등 데이터가 저장됨 -> 단점: mysql 컨테이너를 삭제하면 컨테이너 계층에 있던 데이터베이스 정보도 삭제됨 -> 이를 방지하기 위한 방법: 볼륨!

 

 

2.2.7.1 도커 네트워크 구조

- 대표적인 네트워크 드라이버: 브리지, 호스트, 논, 컨테이너

- 서드파티 플러그인 솔루션: weave, flannel, openvswitch

 

브리지 네트워크: 컨테이너를 생성할 때 자동으로 연결되는 docker0 브리지를 활용하도록 설정

브리지 네트워크와 --net-alias

 

호스트 네트워크: 별도로 생성할 필요없이 기존의ㅏhost라는 이름의 네티워크를 사용

 

논 네트워크: 아무런 네트워크를 사용하지 않는 것

 

컨테이너 네트워크

 

MacVLAN 네트워크

 

2.2.8 컨테이너 로깅

 

2.2.8.1 json-file 로그 사용하기

2.2.8.2 syslog 로그

2.2.8.3 fluentd 로깅

2.2.8.4 아마존 클라우드워치 로그

 

2.2.9 컨테이너 자원 할당 제한

2.2.9.1 컨테이너 메모리 제한

2.2.9.2 컨테이너 CPU 제한

2.2.9.3 Block I/O 제한

2.2.9.4 스토리지 드라이버와 컨테이너 저장 공간 제한

 

 

728x90
반응형

댓글