목차
1. Docker
1. 소개
2. Docker의 장점
3. Docker와 가상 머신의 비교
2. Docker 설치
3 . 컨테이너 작업
시작: cDocker 실행:
컨테이너 중지
컨테이너 프로세스 보기
컨테이너 세부정보 보기
파일 복사 컨테이너에
docker가 컨테이너를 종료하고 컨테이너를 닫지 않고 다음을 수행합니다. 도커 종료 컨테이너를 닫지만 종료
Docker 미러 웨어하우스
Docker 허브: https://허브 .docker.com개인 미러 웨어하우스 만들기: docker run -d -p 5000:5000 Registry
MAINTAINER: 유지 관리 정보
실행: 이미지 빌드 시 실행할 명령
예:
ENTRYPOINT 명령 param1 param2(셸 내부 명령) 예:
예:         LABEL multi.label1="value1" multi.label2="value2" other="value3"
USER uid USER uid:gid USER user:gid
5. Linux NameSpace
NamesSpace에 대한 자세한 설명:
NameSpace의 일반적인 작업
6. Linux Cgroups
에 대한 자세한 설명: cgroups - 간략한 책을 참조할 수 있습니다. 이 기사에 대해 알아보겠습니다
시뮬레이션을 통해 Cgroup이 리소스를 제어하는 ​​효과에 더 익숙해지려면 먼저 cpudemo 폴더를 생성하세요
/sys/fs/cgroup/memory 디렉터리에 memorydemo 폴더를 생성합니다
Docker에서 사용하는 기술은 다음과 같습니다. 모두 Linux 기술에서 파생되었으며 혁신적이지 않으며 Docker의 혁신은 파일 시스템입니다.
1. 개념:
3. Docker 작동을 시뮬레이션하여 네트워크 브리지를 시작합니다
Create --net =none nginx
네트워크 네임스페이스 생성
네트워크 네임스페이스 링크 생성
현재 생성된 브리지 장치를 확인하세요
veth 쌍 만들기
A 네트워크 구성 수행
B 네트워크 구성
nginx가
에 액세스할 수 있음 Windows도 액세스할 수 있도록 nat 구성
사용 후 삭제 지정 nat 규칙
운영 및 유지보수 Docker Docker 핵심 기술의 가장 체계적인 숙달(요약 공유)

Docker 핵심 기술의 가장 체계적인 숙달(요약 공유)

Feb 04, 2022 am 07:00 AM
docker

이 글은 도커 핵심 기술의 컨테이너 운영, Dockerfile에 대한 자세한 설명 등에 관한 질문을 가져왔습니다. 여러분에게 도움이 되기를 바랍니다.

Docker 핵심 기술의 가장 체계적인 숙달(요약 공유)

1. Docker

1. 소개

  • Linux 커널의 Cgroup, Namespace, Union FS 등의 기술을 기반으로 운영 체제 수준에서 프로세스를 캡슐화하고 격리하는 기술입니다. 격리된 프로세스는 호스트와 독립적이므로 컨테이너라고 합니다
  • 초기 구현은 LXC를 기반으로 했으며 0.7부터 LXC가 제거되고 1.11부터 자체 개발한 Libcontainer가 사용되었습니다. runC와 Containerd를 사용하도록 진화
  • Docker 컨테이너를 기반으로 파일 시스템, 네트워크 상호 연결, 프로세스 격리 등 추가 캡슐화가 수행되어 컨테이너 생성 및 유지 관리가 크게 단순화되어 Docker 기술이 더 가볍고 가상 머신 기술보다 빠릅니다

2. Docker의 장점

  • 시스템 리소스의 더 효율적인 사용
  • 더 빠른 시작 시간
  • 일관된 실행 환경
  • 지속적인 제공 및 배포
  • 더 쉬운 마이그레이션
  • 더 쉬운 유지 관리 및 확장

3. Docker와 가상 머신의 비교

2. Docker 설치

참조 기사 설치: Ubuntu에 Docker 엔진 설치 | Docker Documentation

3 . 컨테이너 작업

  • 시작: cDocker 실행:

  • -IT 상호 작용

실행

-P 포트 매핑

-V 디스크

docker 시작

  • 컨테이너 중지

docker stop

  • 컨테이너 프로세스 보기

docker ps

  • 컨테이너 세부정보 보기

docker 검사

  • 파일 복사 컨테이너에

docker cp file1 :/file_to_path

  • docker가 컨테이너를 종료하고 컨테이너를 닫지 않고 다음을 수행합니다. 도커 종료 컨테이너를 닫지만 종료

모든 docker 이미지 쿼리

  • docker Images

  • Docker 미러 웨어하우스

  • Docker 허브: https://허브 .docker.com개인 미러 웨어하우스 만들기: docker run -d -p 5000:5000 Registry

  • 4. Dockerfile 세부 설명

Dockerfile은 일반적으로 기본 이미지 정보, 유지 관리 정보, 이미지 작업 지침 및 컨테이너 시작 작업 지침

일반 명령
  • FROM: 기본 이미지를 지정하고 첫 번째 명령이어야 합니다.

형식:

           FROM ;image>

          FROM < ;이미지>:<태그>

         FROM @

예:

         FROM ubuntu

MAINTAINER: 유지 관리 정보

형식:

                                             MAINTAINER ;

MAINTAINER 리본

실행: 이미지 빌드 시 실행할 명령

형식:

셸 실행: RUN

exec 실행: RUN ["executable", "param1", "param2"]

예:

RUN apk 업데이트

RUN ["/etc/execfile", "arg1", "arg2"]

RUN apt-get update && apt-get install 이 두 명령은 항상 &&로 연결됩니다. 그렇지 않으면 apt-get 업데이트 빌드 계층이 캐시됩니다. 새 패키지 설치에 실패하게 됩니다

ADD: 컨테이너에 로컬 파일을 추가하면 tar 및 기타 유형이 자동으로 압축 해제되며 wget

형식과 유사하게 네트워크 리소스에 액세스할 수 있습니다.

ADD ... Dockerfile의 다중 단계(다단계 구성) -SparkDev -Blog Garden

복사 & LT & GT; & GT: 컨테이너를 빌드한 후 호출됩니다. 즉, 컨테이너가 시작될 때만 호출됩니다. 형식:

CMD ["executable", "param1", "param2"] (실행 가능한 실행 파일, 우선 순위)

CMD [" param1" , "Param2"] (Entrypoint 설정, Entrypoint를 직접 호출하여 매개변수 추가)

CMD 명령 Param1 Param2 (셸 내부 명령 실행)

예:

CMD ["EthTool", "-Help"]

CMD Echoooo "1111"

ENTRTPOINT: 실행 가능하도록 컨테이너를 구성합니다

.

형식:

ENTRYPOINT ["executable", "param1", "param2"](실행 파일, 우선순위)

ENTRYPOINT 명령 param1 param2(셸 내부 명령) 예:

ENTRYPOINT /httpserver

                      CMD [ - c]

LABAL: 이미지에 소스 데이터를 추가하는 데 사용됩니다

형식:

         LABEL = = ...

예:         LABEL multi.label1="value1" multi.label2="value2" other="value3"

ENV: 환경 변수 설정


형식:

      ENV ;value>

예:

    ENV MY_SERVICE_PORT=80 UDP_PORT=90

EXPOSE: 외부 상호 작용을 위한 포트 지정

형식:

    EXPOSE < 포트> [<포트>...]

예:

                                        using using       using using           use using ’ ’ s out through out using off ‐ ‐ ‐‐ ‐‐ 및 ​ to VOLUME gt;]

예:

볼륨 [" /data ", "/usr1/jenkins"]

USER: 컨테이너를 실행할 때 사용자 이름이나 UID를 지정하면 후속 RUN에서도 지정된 사용자가 사용됩니다.

형식:

USER user

USER user:group

USER uid USER uid:gid USER user:gid

USER uid:group

예:

USER www

ARG : 전달할 항목을 지정하는 데 사용됩니다.

형식:

ARG [=]

예:

ARG build_user=ribbon

5. Linux NameSpace

  • NamesSpace에 대한 자세한 설명:

Linux NameSpace_Frank_Abagnale의 블로그 - CSDN 블로그 이 기사에 대한 자세한 소개는 다음을 참조하세요.

  • NameSpace의 일반적인 작업

  • 현재 시스템의 네임스페이스 보기:

lsns -t

  • 프로세스의 네임스페이스 보기:

ls -la /proc/

  • 네임스페이스의 실행 명령 보기

nsenter -t -n

6. Linux Cgroups

  • 에 대한 자세한 설명: cgroups - 간략한 책을 참조할 수 있습니다. 이 기사에 대해 알아보겠습니다

Cgroups를 제어하여 CPU 리소스 제어

  • 시뮬레이션을 통해 Cgroup이 리소스를 제어하는 ​​효과에 더 익숙해지려면 먼저 cpudemo 폴더를 생성하세요

top을 실행하면 busyloop가 두 개의 CPU 리소스를 차지하는 것을 확인할 수 있습니다.

cgroup 프로세스 구성 그룹에 프로세스를 추가합니다.

CPU 할당량 설정

CPU 리소스 사용량이 200%부터인 것을 확인할 수 있습니다. 1%로 감소합니다

Cgroup 시뮬레이션 메모리 리소스 제한을 초과하면 OOM이 종료됩니다

  • /sys/fs/cgroup/memory 디렉터리에 memorydemo 폴더를 생성합니다

메모리 실행 프로그램을 소비하는 경우 watch를 사용하여 메모리 사용량을 쿼리합니다

프로세스 구성이 cgroups 구성 그룹에 들어갑니다.

최대 메모리 크기를 설정합니다.

프로그램이 OOM에 의해 종료될 때까지 기다립니다. dmesg는 다음과 같이 할 수 있습니다. 킬 정보를 보세요

참고: 자체 생성된 cgroup 폴더를 삭제하려면 cgroup-tools

를 사용해야 합니다. 7. Union FS

Docker에서 사용하는 기술은 다음과 같습니다. 모두 Linux 기술에서 파생되었으며 혁신적이지 않으며 Docker의 혁신은 파일 시스템입니다.

1. 개념:

  • 동일한 가상 파일 시스템 아래에 서로 다른 디렉터리를 마운트하는 파일 시스템
  • 각 구성원 디렉터리에 대해 읽기 전용, 읽기 쓰기 및 불가능 권한 설정 지원
  • 파일 시스템 계층화, 읽기 전용 권한 디렉터리는 다음과 같습니다. 여기서 수정은 점진적이며 읽기 전용 부분에는 영향을 미치지 않습니다. 일반적으로 Union FS의 목적은 여러 디스크를 동일한 디렉터리에 마운트하는 것입니다. 다른 하나는 읽기 전용 부분과 디렉터리를 통합하는 것입니다.
  • 2. Union FS
도커 이미지 디자인에는 레이어 개념이 도입되었습니다. 즉, 사용자가 이미지를 생성하는 모든 단계에서 추가 레이어인 레이어가 생성됩니다. . 애플리케이션 A와 애플리케이션 B가 있는 컨테이너가 동일한 우분투 운영 체제 계층과 Golang 환경 계층(읽기 전용 계층)을 공동으로 참조하고 각각 자체 애플리케이션 계층을 가지며 쓰기 가능하도록 rootfs(디렉토리)를 측정합니다. 층. 컨테이너를 시작할 때 해당 레이어를 컨테이너의 루트 파일 시스템으로 UnionFS를 통해 디렉터리에 마운트합니다.

3. 컨테이너 스토리지 드라이버

4. 효과를 더 잘 이해하기 위해 Union FS를 시뮬레이션합니다.


현재 버전의 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
로그인 후 복사

오버레이 스토리지 드라이버 파일 마운팅을 사용하면 효과를 볼 수 있습니다. 실험이 완료된 후 환경을 복원하려면 병합된 디렉터리를 먼저 마운트 해제한 다음 4개의 디렉터리를 삭제해야 합니다. 다른 디렉터리를 먼저 삭제하면 rm: '병합된/'을 제거할 수 없습니다: 장치 또는 리소스 사용 중이 나타날 수 있습니다. 병합된 디렉터리가 삭제되지 않게 됩니다. Docker 네트워크

docker의 내장 네트워크 모드 쿼리

docker run 실행할 네트워크 모드 선택

1) 호스트 모드: --net=host를 사용하여 지정 . 호스트와 net 세트를 공유합니다

2) 없음 모드: --net=none을 사용하여 지정합니다. 네트워크 구성은 직접 구성해야 합니다

3) 브리지 모드: --net=bridge를 사용하여 기본 설정을 지정합니다.

docker 네트워크 논리 다이어그램 브리지 및 NAT

4) 컨테이너 모드: --net=container:NAME_or_ID를 사용하여 지정합니다. 다른 컨테이너의 네트워크 구성을 사용하세요

네트워크 모드 다이어그램은 대략 아래와 같습니다

3. Docker 작동을 시뮬레이션하여 네트워크 브리지를 시작합니다

  • Create --net =none nginx

  • 네트워크 네임스페이스 생성

  • 네트워크 네임스페이스 링크 생성

  • 현재 생성된 브리지 장치를 확인하세요

  • veth 쌍 만들기

  • A 네트워크 구성 수행

  • B 네트워크 구성

nginx docker

에서 eth0 네트워크 장치를 생성합니다. eth0 IP 게이트웨이 구성

  • nginx가

  • 에 액세스할 수 있음 Windows도 액세스할 수 있도록 nat 구성

  • 사용 후 삭제 지정 nat 규칙

추천 학습: "docker 비디오 튜토리얼"

위 내용은 Docker 핵심 기술의 가장 체계적인 숙달(요약 공유)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Docker가 컨테이너를 빠져 나가는 방법 Docker가 컨테이너를 빠져 나가는 방법 Apr 15, 2025 pm 12:15 PM

도커 컨테이너를 종료하는 4 가지 명령 사용 Docker Kill & lt; Container_name & gt; 호스트 터미널의 명령 (힘 출구)

Docker의 파일을 외부로 복사하는 방법 Docker의 파일을 외부로 복사하는 방법 Apr 15, 2025 pm 12:12 PM

Docker의 외부 호스트에 파일을 복사하는 방법 : Docker CP 명령 사용 : Docker CP 실행 [옵션] & lt; 컨테이너 경로 & gt; & lt; 호스트 경로 & gt;. 데이터 볼륨 사용 : 호스트에서 디렉토리를 만들고 -V 매개 변수를 사용하여 양방향 파일 동기화를 달성하기 위해 컨테이너를 만들 때 컨테이너에 디렉토리를 장착하십시오.

Docker가 컨테이너를 시작하는 방법 Docker가 컨테이너를 시작하는 방법 Apr 15, 2025 pm 12:27 PM

Docker Container Startup 단계 : 컨테이너 이미지를 당기기 : "Docker Pull [Mirror Name]"을 실행하십시오. 컨테이너 생성 : "docker"[옵션] [미러 이름] [명령 및 매개 변수]를 사용하십시오. 컨테이너를 시작하십시오 : "Docker start [컨테이너 이름 또는 ID]"를 실행하십시오. 컨테이너 상태 확인 : 컨테이너가 "Docker PS"로 실행 중인지 확인하십시오.

Docker를 다시 시작하는 방법 Docker를 다시 시작하는 방법 Apr 15, 2025 pm 12:06 PM

Docker 컨테이너를 다시 시작하는 방법 : 컨테이너 ID (Docker PS)를 가져옵니다. 컨테이너 중지 (Docker Stop & lt; container_id & gt;); 컨테이너를 시작하십시오 (Docker start & lt; container_id & gt;); 재시작이 성공했는지 확인하십시오 (Docker PS). 기타 방법 : Docker Compose (Docker-Compose Restart) 또는 Docker API (Docker 문서 참조).

Docker 컨테이너의 이름을 확인하는 방법 Docker 컨테이너의 이름을 확인하는 방법 Apr 15, 2025 pm 12:21 PM

단계를 따르면 Docker 컨테이너 이름을 쿼리 할 수 ​​있습니다. 모든 컨테이너 (Docker PS)를 나열하십시오. 컨테이너 목록을 필터링합니다 (GREP 명령 사용). 컨테이너 이름 ( "이름"열에 위치)을 가져옵니다.

Docker의 MySQL을 시작하는 방법 Docker의 MySQL을 시작하는 방법 Apr 15, 2025 pm 12:09 PM

Docker에서 MySQL을 시작하는 프로세스는 다음 단계로 구성됩니다. MySQL 이미지를 가져와 컨테이너를 작성하고 시작하고 루트 사용자 암호를 설정하고 포트 확인 연결을 매핑하고 데이터베이스를 작성하고 사용자는 데이터베이스에 모든 권한을 부여합니다.

Docker의 이미지를 업데이트하는 방법 Docker의 이미지를 업데이트하는 방법 Apr 15, 2025 pm 12:03 PM

Docker 이미지를 업데이트하는 단계는 다음과 같습니다. 최신 이미지 태그 가져 오기 새 이미지 특정 태그의 이전 이미지 삭제 (선택 사항) 컨테이너를 다시 시작하십시오 (필요한 경우)

Docker 용 컨테이너를 만드는 방법 Docker 용 컨테이너를 만드는 방법 Apr 15, 2025 pm 12:18 PM

Docker에서 컨테이너 만들기 : 1. 이미지를 당기기 : Docker Pull [Mirror Name] 2. 컨테이너 만들기 : Docker Run [옵션] [미러 이름] [명령] 3. 컨테이너 시작 : Docker Start [컨테이너 이름]

See all articles