Docker
리눅스의 네임스페이스와 컨트롤 그룹인 cgroup와 같은 리눅스의 커널 기능을 이용해서 리눅스 환경에서 가상화를 제공해주는 것이 도커
이미지 - 필요한 프로그램과 라이브러리, 소스를 설치한 뒤 만든 하나의 파일
컨테이너 - 이미지를 격리하여 독립된 공간에서 실행한 가상 환경 / 컨테이너는 가상머신을 사용해 각 마이크로 서비스를 격리하는 기술
리눅스 네임 스페이스: 각 프로세스가 파일 시스템 마운트, 네트워크, 유저, 호스트 네임 등에 대해 시스템에 독립 뷰를 제공 → 각각의 이름 공간에서 서로 다른 공간으로 프로세스가 침투되지 못하게 함
리눅스 컨트롤 그룹: 프로세스 별로 소비할 수 있는 리소스(cpu, memory, i/o, 네트워크 대역대, device 노드 등) 양을 제한 → 마치 프로세스가 독립된 공간을 사용하는 것처럼 만듬
docker 명령어 실습
docker search tomcat(검색할 이미지 이름)
docker run -d -p 80:80 —name start docker/getting-started
-d옵션은 백그라운드에서 실행하는 옵션이 -p 80:80 은 80번 포트 서비스를 80으로 나오게 해줌 뒤에 name 설정을 안해주면 자동으로 아무거나 설정됨
docker pull 이미지이름 → 도커 이미지만 가져오는 명령어
docker images → 어떤 이미지를 다운받았는지 확인할 수 있음.
docker create -p 80:80 —name nx nginx
docker ps -a →모든 도커 내용들을 다 볼 수 있음
docker start container_id(도커는 기본적으로 start할때 백그라운드로 실행)
docker stop container_id -> 컨테이너 정지
docker rm container_id -> 컨테이너 삭제
docker inspect image_name → 이미지
docker exec -it container_name /bin/bash → 실행한 컨테이너 내부 쉘 실행
docker logs container_name → 컨테이너 로그 확인
docker cp <from container>:<path> <to container>:<path> → 호스트 및 컨테이너 간 파일 복사
docker run -d -p 80:80 —rm —name nx nginx → —rm옵션으로 임시로 컨테이너 생성 가능 (내리면 바로 삭제됨)
docker stop ``docker ps -a -q → 실행중인 도커를 다 종료시킬 수 있음(q옵션은 컨테이너의 아이디만 나오도록 하는 옵션)
도커 레지스트리
도커 이미지 보관소를 도커 레지스트리라고 부른다. 대표적인 도커 퍼블릭 레지스트리로 도커허브가 있다.
**이미지는 정적인 상태로 이미지를 실행하려면 컨테이너로 바꿔서 실행해야한다.
도커 라이프 사이클
run이라는 명령어는 이미지를 container로 create하고 메모리 올려서 start까지 해주는 작업임(사실상 레지스트리에서 이미지를 pull까지 다해줌 이미가 없을 경우)
똑같은 이미지에 대해 run이라는 명령어를 여러번 쓸경우 불필요하게 컨테이너가 여러개 생성되므로 되도록 create,start과정으로 하는게 좋음
start된 컨테이너를 중지하는 방법은 stop명령어
컨테이너 삭제는 RM명령어
이미지 삭제는 RMI명령어
레이어의 개념
이미지는 여러개의 레이어로 이루어짐 → 이미지마다 레이어가 중복되는 부분은 그 전의 설치된 이미지의 레이어가 있기 때문에 중복된 부분을 제외한 레이어를 다운받음
ex) 이미지 a(layer1,layer2,layer3) 가 있고 b(layer1,layer2,layer3,layer4)라는 이미지를 다운 받을 때 layer4만 추가로 다운받아오면 된다
/var/lib/docker에는 image라는 디렉토리와 overlay2라는 디렉토리가 있는데 실제 이미지에 대한 데이터는 overlay2에 저장되어 있고 image 안에는 imagedb와 layerdb가 있는데 imagedb는 layerdb에 대한 데이터를 저장하고 있고 layerdb는 overlay2에 대한 데이터를 저장하고 있다.
'Cloud > Docker' 카테고리의 다른 글
docker-machine with AWS EC2 driver (0) | 2022.11.01 |
---|