이 글은 도커 핵심 기술의 컨테이너 운영, Dockerfile에 대한 자세한 설명 등에 관한 질문을 가져왔습니다. 여러분에게 도움이 되기를 바랍니다.
참조 기사 설치: Ubuntu에 Docker 엔진 설치 | Docker Documentation
실행
-P 포트 매핑
-V 디스크
docker 시작
docker stop
docker ps
docker 검사
docker cp file1
Dockerfile은 일반적으로 기본 이미지 정보, 유지 관리 정보, 이미지 작업 지침 및 컨테이너 시작 작업 지침
일반 명령 FROM
예:
FROM ubuntu
형식:
MAINTAINER ;
예
MAINTAINER 리본
RUN ["/etc/execfile", "arg1", "arg2"]
RUN apt-get update && apt-get install 이 두 명령은 항상 &&로 연결됩니다. 그렇지 않으면 apt-get 업데이트 빌드 계층이 캐시됩니다. 새 패키지 설치에 실패하게 됩니다
CMD [" param1" , "Param2"] (Entrypoint 설정, Entrypoint를 직접 호출하여 매개변수 추가)
CMD 명령 Param1 Param2 (셸 내부 명령 실행)ENTRTPOINT: 실행 가능하도록 컨테이너를 구성합니다
. 형식: ENTRYPOINT ["executable", "param1", "param2"](실행 파일, 우선순위)ENTRYPOINT /httpserver
CMD [ - c]
형식:
LABEL
예: using using using using use using ’ ’ s out through out using off ‐ ‐ ‐‐ ‐‐ 및 to VOLUME gt;]
USER: 컨테이너를 실행할 때 사용자 이름이나 UID를 지정하면 후속 RUN에서도 지정된 사용자가 사용됩니다.
형식:USER user
USER user:groupUSER www
ARG : 전달할 항목을 지정하는 데 사용됩니다.형식:
ARG예:
ARG build_user=ribbonLinux NameSpace_Frank_Abagnale의 블로그 - CSDN 블로그 이 기사에 대한 자세한 소개는 다음을 참조하세요.
lsns -t
ls -la /proc/ nsenter -t Cgroups를 제어하여 CPU 리소스 제어 Cgroup 시뮬레이션 메모리 리소스 제한을 초과하면 OOM이 종료됩니다 참고: 자체 생성된 cgroup 폴더를 삭제하려면 cgroup-tools 를 사용해야 합니다. 7. Union FS
4. 효과를 더 잘 이해하기 위해 Union FS를 시뮬레이션합니다. 다음 명령을 실행합니다.
오버레이 스토리지 드라이버 파일 마운팅을 사용하면 효과를 볼 수 있습니다. 실험이 완료된 후 환경을 복원하려면 병합된 디렉터리를 먼저 마운트 해제한 다음 4개의 디렉터리를 삭제해야 합니다. 다른 디렉터리를 먼저 삭제하면 rm: '병합된/'을 제거할 수 없습니다: 장치 또는 리소스 사용 중이 나타날 수 있습니다. 병합된 디렉터리가 삭제되지 않게 됩니다. Docker 네트워크 docker run 실행할 네트워크 모드 선택 1) 호스트 모드: --net=host를 사용하여 지정 . 호스트와 net 세트를 공유합니다 docker 네트워크 논리 다이어그램 브리지 및 NAT 4) 컨테이너 모드: --net=container:NAME_or_ID를 사용하여 지정합니다. 다른 컨테이너의 네트워크 구성을 사용하세요 네트워크 모드 다이어그램은 대략 아래와 같습니다 nginx docker 에서 eth0 네트워크 장치를 생성합니다. eth0 IP 게이트웨이 구성 추천 학습: "docker 비디오 튜토리얼"6. Linux Cgroups
에 대한 자세한 설명: cgroups - 간략한 책을 참조할 수 있습니다. 이 기사에 대해 알아보겠습니다
top을 실행하면 busyloop가 두 개의 CPU 리소스를 차지하는 것을 확인할 수 있습니다. cgroup 프로세스 구성 그룹에 프로세스를 추가합니다.
CPU 할당량 설정
CPU 리소스 사용량이 200%부터인 것을 확인할 수 있습니다. 1%로 감소합니다
시뮬레이션을 통해 Cgroup이 리소스를 제어하는 효과에 더 익숙해지려면 먼저 cpudemo 폴더를 생성하세요
메모리 실행 프로그램을 소비하는 경우 watch를 사용하여 메모리 사용량을 쿼리합니다
프로세스 구성이 cgroups 구성 그룹에 들어갑니다. 최대 메모리 크기를 설정합니다.
프로그램이 OOM에 의해 종료될 때까지 기다립니다. dmesg는 다음과 같이 할 수 있습니다. 킬 정보를 보세요
/sys/fs/cgroup/memory 디렉터리에 memorydemo 폴더를 생성합니다
Docker에서 사용하는 기술은 다음과 같습니다. 모두 Linux 기술에서 파생되었으며 혁신적이지 않으며 Docker의 혁신은 파일 시스템입니다.
1. 개념:
도커 이미지 디자인에는 레이어 개념이 도입되었습니다. 즉, 사용자가 이미지를 생성하는 모든 단계에서 추가 레이어인 레이어가 생성됩니다. . 애플리케이션 A와 애플리케이션 B가 있는 컨테이너가 동일한 우분투 운영 체제 계층과 Golang 환경 계층(읽기 전용 계층)을 공동으로 참조하고 각각 자체 애플리케이션 계층을 가지며 쓰기 가능하도록 rootfs(디렉토리)를 측정합니다. 층. 컨테이너를 시작할 때 해당 레이어를 컨테이너의 루트 파일 시스템으로 UnionFS를 통해 디렉터리에 마운트합니다.
3. 컨테이너 스토리지 드라이버
현재 버전의 Docker는 overlayFS 스토리지 드라이버를 사용하므로 overlay를 사용하여 정지합니다. 실험을 수행하기 위해 overlayfs는 하위 디렉터리, 상위 디렉터리 및 작업 디렉터리의 세 가지 디렉터리를 통해 구현됩니다. 이 과정에서 콘텐츠는 사용자에게 표시되지 않습니다. 마지막으로 조인트 마운팅이 완료된 후 사용자에게 표시되는 통합 보기를 병합된 디렉터리라고 합니다. mkdir upper lower merged work
echo "lower" > lower/in_lower.txt
echo "from lower" > lower/in_both.txt
echo "from upper" > upper/in_both.txt
echo "upper" > upper/in_upper.txt
path=$(pwd)
mount -t overlay overlay -o lowerdir=${path}/lower,upperdir=${path}/upper,workdir=${path}/work ${path}/merged
2) 없음 모드: --net=none을 사용하여 지정합니다. 네트워크 구성은 직접 구성해야 합니다
3) 브리지 모드: --net=bridge를 사용하여 기본 설정을 지정합니다.
3. Docker 작동을 시뮬레이션하여 네트워크 브리지를 시작합니다
Create --net =none nginx
네트워크 네임스페이스 생성
네트워크 네임스페이스 링크 생성
현재 생성된 브리지 장치를 확인하세요
veth 쌍 만들기
A 네트워크 구성 수행
B 네트워크 구성
nginx가
에 액세스할 수 있음 Windows도 액세스할 수 있도록 nat 구성
사용 후 삭제 지정 nat 규칙
위 내용은 Docker 핵심 기술의 가장 체계적인 숙달(요약 공유)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!