( 참고 : 알면 더 쉬운 도커 쿠버네티스 (곽영호, 황승준) )
2. 실무에 바로 쓰는 도커 (1)
Contents
-
2-1. 도커 도입 시 이점
-
2-2. 도커 적용을 위한 준비
-
2-3. 도커 이미지
2-1. 도커 도입 시 이점
여러 Microservice를 1대의 서버에서 운영할 수 있도록 함!
이를 가능케 해주는 2가지 핵심 커널 기술 :
- 1) Cgroup
- 2) Namespace
(a) Cgroup
- Contorl Group
- 시스탐의 CPU 시간, 시스템 메몰, 네트우커 등의 자원을 제한/격리 가능케함
(b) Namespace
- 시스템 리소스를, 각 프로세스에만 해당되는 자원처럼!
- 다른 프로세스와 격리시키는 가상화 기능
이 두 기술을 통해, VM과 달리 물리적 가상화 사용 필요 X ( + 보다 나은 성능 )
2-2. 도커 적용을 위한 준비
2-3절
- Docker 설치
- Docker Hub에서 Image 가져와서 사용
- Nginx 웹 서버 Docker Image
2-3. 도커 이미지
(구) 배포 과정 ( ex. with Java )
-
개발자 컴퓨터에서 개발 & 소스 commit
-
빌드 & 배포 요청
-
CI/CD 서버가 커밋된 소스 내려받고, 테스트 & 빌드
배포 단위의 파일 뭉치 생성
-
원하는 환경의 서버에 이동 후 실행
Docker Image
위의 “파일 뭉치” = 도커 이미지
- 컨테이너의 기초
- 계층화된 파일 시스템
- 컨테이너의 스냅샷
명령어 요약
[1] docker images
- Docker Image 리스트 나열
[2] docker pull nginx
- Docker Image 다운로드 ( nginx 이미지 )
[3] docker run --name nginx -p 8000:80 -d nginx
- Image를 container화
- ( Image 다운 따로 하지 않아도 OK. 자동으로 다운로드 후 run 해줌 )
- 매개변수 소개
--name
: container의 이름 지정-p
: 도커에서 실행되는 포트 & 현재 호스트의 포트 연결- 내 PC 8000번 포트 & 도커 컨테이너 80번 포트 포트포워딩
-d
: 백그라운드로 실행
[4] docker ps
- ps = process status
- Container 정보 확인
( 위의 과정을 거치고, 주소창에 http://localhost:8000
입력 시, nginx 웹 서버의 웰컴 페이지 나옴 )
이미지 만들기 위해서?
- 이미지 : 변경 불가능한 파일
- 컨테이너의 파일 : 수정 가능
\(\rightarrow\) 컨테이너의 파일을 수정하고 난 뒤, 이미지 생성
우선, nginx의 index.html
페이지 문구를 수정 한다.
그러기 위해, nginx 컨테이너 안에서, 해당 파일의 위치를 찾아야!
우선, nginx 컨테이너 안에 접속해야!
( = 호스트 PC(외부)에서 Docker container(내부)의 쉘을 실행해야 )
[5] docker exec -it nginx /bin/bash
exec
: HOST에서 container 안에 명령을 실행-i
: (interactive) 표준 입력을 활성화-t
: (tty) 리눅스 쉘- 위 명령어 실행으로, docker container 내부 쉘이 실행됨!
[6] find / -name index.html 2>/dev/null
find
: 파일 찾기/
: 루트 디렉토리-name
: 파일 이름-
2>/dev/null
: 에러 출력 시, /dev/null로 보내기! - 위치 찾은 후, exit으로 HOST 컨테이너로 다시 빠져나와!
[7] docker cp nginx:/usr/share/nginx/html/index.html index.html
- container 내의
index.html
을, HOST PC에 복사! index.html
편집 한 뒤 …
[8] docker cp index.html nginx:/usr/share/nginx/html/index.html
- 다시 container로 복사!
[9] docker commit nginx mynginx
- 수정된
index.html
의 이미지 새로 생성
[10] docker images
- 이미지 다시 조회 시, 새로운
mynginx
이미지가 생서오딘 것을 확인 가능
[11] docker stop nginx
& docker rm nginx
-
기존의
nginx
컨테이너 종료 & 삭제( 반드시 종료 시킨 후 삭제해야! )
-
docker ps -a
통해, 정지된 container 확인 가능
[12] docker run --name nginx -p 8000:80 -d mynginx
- 새로 만든
mynginx
이미지를 container로 실행
위와 같이 image로 만들 수도 있고, 또 다른 방법도 가능
\(\rightarrow\) with “도커 파일”
도커 파일
-
명령어 묶음으로 이미지 만들 수 있는 text file
-
example
( 아래의 docker file은 현재 작업 디렉토리에 있어야 )
FROM nfinx COPY index.html /usr/share/nginx/html/
[13] docker build -t mynginx2 .
- Docker File을 사용하여 Image 만들기
[14] docker run --name custom1 -p 8002:80 -d mynginx2
- 마찬가지로 container 실행하기
http://localhost:8002
들어가서 확인
[15] docker rmi 이미지명
- 도커 이미지 삭제