docker & Kubernetes 요약

6338 단어
Docker가 컨테이너를 만들면 기본 미러의 컨테이너 레이어 위에 쓰기 가능한 얇은 새 컨테이너 레이어가 추가됩니다.다음에 용기에 대한 모든 변화, 예를 들어 새로운 파일을 쓰거나 기존의 파일을 수정하거나 삭제하는 것은 이 용기층에만 작용할 것이다.따라서 완전한 루트fs를 복사하지 않기 때문에 Docker는 용기가 차지하는 공간을 줄이고 용기를 시작하는 데 걸리는 시간을 줄였다.Kubernetes(일반적으로'k8s'라고 쓰임)는 구글이 최초로 디자인 개발한 마지막으로Cloud Native Computing Foundation에 기여한 소스 용기 집단 관리 프로젝트입니다.그것의 설계 목표는 호스트 집단 간에 자동화 배치, 확대 가능, 응용 용기 운영 가능한 플랫폼을 제공하는 것이다.Kubernetes는 일반적으로 docker 용기 도구와 결합하여 작업하고, docker 용기를 실행하는 여러 호스트 그룹을 통합합니다.docker 원칙 1, 컨테이너에 데이터를 저장하지 않기 (Don't ship your application in two pieces) 3, 너무 큰 미러가 생기지 않기 (Don't create large images) 4, 단층 미러를 사용하지 않기 (Don't use a single layer image) 5,실행 중인 컨테이너에서 미러링(Don't create images from running containers) 6, "latest"태그만 사용하지 마십시오(Don't use only the "latest"tag) 7, 컨테이너 내에서 하나 이상의 프로세스를 실행하지 마십시오(Don't run more than one process in a single container) 8, 컨테이너에 credentials를 저장하지 마십시오.대신 외부에서 환경 변수로 전달(Don't store credentials in the image. Use environment variables) 9, 루트 사용자 런너 프로세스(Don't run processes as a root user) 10을 사용하지 말고 IP 주소에 의존하지 말고 외부에서 순환 변수로 전달(Don't rely on IP addresses)
대칭복사 파일 구조 설명
root@kub-node-1:/home/ubuntu/kub/image# docker save -o pause.tar kubernetes/pause:latest
root@kub-node-1:/home/ubuntu/kub/image# ls
pause.tar

압축을 풀다.tar 파일
root@kub-node-1:/home/ubuntu/kub/image# tar -xf pause.tar
root@kub-node-1:/home/ubuntu/kub/image/pause# ls -l
total 280
drwxr-xr-x 2 root root 4096 Jan 23 09:02 afa9f35badc97e21193ee701222d9edfc5b0f0e5c518d357eb8b016d8287cda7
drwxr-xr-x 2 root root 4096 Jul 19 2014 e0b1695ad29a961b7e28713942942786692107d7f9087d72ccf9bbc0a3ab133e
drwxr-xr-x 2 root root 4096 Jan 23 09:20 e3caa892ed5297d0c98916b251c5be1d26c3a50b581fe145e3a6516c00531464
-rw-r--r-- 1 root root 1691 Jul 19 2014 f9d5de0795395db6c50cb1ac82ebed1bd8eb3eefcebb1aa724e01239594e937b.json
-rw-r--r-- 1 root root 366 Jan 1 1970 manifest.json
-rw------- 1 root root 258560 Jan 23 09:02 pause.tar
-rw-r--r-- 1 root root 99 Jan 1 1970 repositories

그 중의 Repositories 파일의 내용은 거울 이름, 버전, 최상위 레이어의 이름입니다.
root@kub-node-1:/home/ubuntu/kub/image# cat repositories
{"kubernetes/pause":{"latest":"afa9f35badc97e21193ee701222d9edfc5b0f0e5c518d357eb8b016d8287cda7"}}

manifest.json 파일은 거울의 메타데이터를 유지합니다. 진정한 메타데이터 json 파일의 이름과 각 층의 이름, tag 등을 포함합니다.
root@kub-node-1:/home/ubuntu/kub/image# cat manifest.json
[{"Config":"f9d5de0795395db6c50cb1ac82ebed1bd8eb3eefcebb1aa724e01239594e937b.json","RepoTags":["kubernetes/pause:latest"],"Layers":["e0b1695ad29a961b7e28713942942786692107d7f9087d72ccf9bbc0a3ab133e/layer.tar","e3caa892ed5297d0c98916b251c5be1d26c3a50b581fe145e3a6516c00531464/layer.tar","afa9f35badc97e21193ee701222d9edfc5b0f0e5c518d357eb8b016d8287cda7/layer.tar"]}]

f9d5de0795395db6c50cb1ac82ebed1bd8eb3eefcebb1aa724e01239594e937b.json 파일은 진정으로 거울의 모든 메타데이터를 포함합니다.
나머지 3개의 폴더는 이 거울의 3개의layers와 일일이 대응한다.
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:e16a89738269fec22db26ec6362823a9ec42d0163685d88ba03c4fb5d5e723f6",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef"
]
}
docker 거울은 주로 tar 패키지와 메타데이터 json 파일 docker 거울의 포장 과정이고 사실은 각 층에 대응하는 파일을 포장하는 과정이다. 마지막으로 단일한 tar 파일 docker 거울의 사용 과정을 구성하는데 사실은 층층이 tar 파일을 파일 시스템에 연결하는 과정이다.
CMD: 컨테이너가 생성된 후 실행되는 명령은 RUN과 달리 컨테이너를 구성할 때 실행되는 명령입니다.

좋은 웹페이지 즐겨찾기