장: 부두 일꾼 안내

Docker란?


Docker는 개발자가 여러 작업 구역에서 응용 프로그램을 용기화, 구축, 테스트, 배치와 발표하고 생산이 완료된 응용 프로그램을 납품할 수 있는 플랫폼이다.Docker는 응용 프로그램을 용기라는 추상적인 이름으로 포장하여 개발 프로세스를 빠르고 간단하게 합니다.

왜 Docker야?


하나 이상의 가상화/물리적 시스템에서 어플리케이션/소프트웨어를 실행, 확장, 배포 또는 테스트해야 하는 경우 Docker가 솔루션입니다.
Docker의 경량급과 이식성은 이를 관리자 가상 기기의 경제적이고 효율적인 대체품으로 만든다.

간단한 CLI 명령으로 컨테이너 이미지를 쉽게 구성, 제거, 배포 및 관리할 수 있습니다.또한 이 용기들은 로컬 시스템, 가상 기기, 클라우드 공급자, 심지어 혼합 작업 구역에서 실행할 수 있도록 고도의 이식성을 가지고 있으며, 설정 라이브러리와 모든 다른 설정 파일을 걱정할 필요가 없다.

Docker 스키마



Docker는 클라이언트-서버 체계 구조를 실현했다.그러면 클라이언트-서버 아키텍처는 무엇입니까?인터넷 쇼핑을 예로 들다.당신(고객)은 앱스토어에서 제품을 주문하고 서비스 제공자(서버)에서 주문을 하여 필요한 조치를 취하여 당신의 주소로 보냅니다.이와 유사하게 클라이언트-서버 체계 구조는 이러한 체계 구조이다. 클라이언트 요청 서비스(이 예는 Docker CLI를 통해), 서비스 공급자(이 예는 Docker daemon)가 이 요청을 처리하고 필요한 결과를 제공한다.
위의 그림을 참고하십시오. 사용자가 설치된 이미지에서 용기를 만들고 싶어서 docker run 명령을 입력하면, docker daemon은 요청을 하고 설정된 가상화 용기와 메타데이터를 제공합니다.

Docker 데몬이란?


Daemon은 백그라운드에서 일관되게 실행되는 프로그램으로 특정한 요청이나 작업에 응답하며 사용자의 직접적인 제어를 받지 않기 때문에 프로그램의 성격을 변경할 수 없습니다.보통 수호 프로그램 파일/프로세스 이름의 접미사는 'd' 입니다. 예를 들어 -sshd, mysqld,dockerd 등입니다.

Docker 데몬은 API를 통해 Docker 클라이언트를 수신하고 이미지, 컨테이너, 볼륨, 네트워크 등 Docker 객체를 관리할 것을 요청합니다.

Docker 클라이언트


Docker 클라이언트는 Docker와 상호작용하는 주요한 방식이다.터미널을 통해 Docker 명령을 실행하면 클라이언트는 명령을 관리하는 Docker 데몬에 요청을 보냅니다.

Docker 이미지


Docker Image는 이미지 Docker 파일의 명령으로 생성된 읽기 전용 계층으로 구성됩니다.각 층마다 dockerfile의 명령을 표시합니다.개발자가 미리 구축한 이미지는 용기등록센터에서 얻을 수 있으며 이 등록센터는 이미지를 저장하고 다운로드하는 곳이다.DockerHub은 바로 이러한 인기 있는 공공 등록 센터입니다.자신의 이미지를 저장하기 위한 개인 등록 센터도 드물다.
# to install an image in your system
docker pull <image-name:version>
# example docker pull ubuntu:20.04

# to see if the image is installed
docker image ls
# or
docker images

# to remove an image 
docker image rm <image-name or image-id>
# if you get an error message similar to daemon: conflict: unable to delete, then you must delete the container first
read more about containers below 

# to check layers of an image
docker image inspect <image-name or image-id>

Dockerfile


맞춤형 docker 이미지를 구축하려면 확장자 .dockerfile 를 사용하여 docker 파일을 만듭니다.Dockerfile에 정의된 명령어에 새 이미지 레이어가 쌓여 있지만 각 명령어가 레이어를 작성하는 것은 아닙니다.
다음은 dockerfile의 예이다
# this is a comment
FROM ubuntu:18.04
LABEL org.opencontainers.image.authors="[email protected]"
COPY . /app
RUN make /app
RUN rm -r $HOME/.cache
CMD python /app/app.py

dockignore씨


이전에 GitHub을 사용한 적이 있다면 이미 사용하고 있을 수 있습니다.gitignore에서 제외할 파일입니다.env 변수, 디렉터리 의존, 임시 파일 등. Docker와 유사하게, 구축과 무관한 파일을 제외하는 파일이 있습니다.
docker Client CLI의 요청이 docker daemon에 도착하기 전에 .dockignore 파일을 통해 Daemon으로 전달되기 전에 제외해야 하는 위아래 문장이 있는지 확인하여 대형이나 민감한 정보가 Daemon에 도착하는 것을 방지합니다.

부두 컨테이너


컨테이너는 하나의 호스트에서 실행되는 독립된 프로세스입니다.컨테이너는 응용 프로그램이 시스템에서 실행하는 데 필요한 패키지와 의존 항목으로 구성되어 있습니다.컨테이너를 작성, 시작, 중지, 삭제, 이동 및 수정할 수 있습니다. 이 작업은 얇은 쓰기 가능 레이어에서 수행됩니다. 이 레이어를 컨테이너 레이어라고 하며 변경되지 않는 읽기 전용 이미지 레이어 위에 구축됩니다.따라서 용기가 이미지를 실행하는 실례입니다.모든 용기는 자신의 이진 파일, 의존항, 용기층을 가지고 있기 때문에 모든 용기는 하나의 독립된 프로세스이기 때문에 그것들은 신속하고 경량급이며 더욱 효율적으로 사용할 수 있다.
다음은 이미지 레이어 구조의 예입니다 -

또한 사용자가 같은 이미지의 두 개 이상의 버전을 다운로드하면 docker는 이전 버전의 새 층만 구축하고 모든 상호 층은 다시 설치되지 않습니다.
# to build a container from installed image
docker run <image-name:version>

# to get list of all running containers metadata
docker ps 

# to get list of all containers metadata
docker ps -a

# to stop a container
docker stop <container-name or container-id>

# to restart a container
docker start <container-name or container-id>

# to remove a container 
docker container rm <container-name or container-id>

# to rename a container
docker stop <container-name or container-id>
docker run --name <your desired container-name> <image-name>

# to navigate inside a container's terminal
docker exec -it <container id or container name> /bin/bash
컨테이너는 모든 운영체제에 환경을 설정하는 데 도움이 되며, 설정과 의존성을 걱정하지 않고, 응용 프로그램 구축에 전념할 수 있다.
무슨 문제라도 있습니까?
용기는 오래가지 않는다.컨테이너를 삭제하거나 다시 시작할 때 모든 데이터를 잃어버리고 이미지 정의에서 다시 시작합니다.따라서 컨테이너를 삭제/재부팅하면 컨테이너 레이어의 데이터가 손실되고 새 상태에서 시작됩니다.현재, 만약 우리가 그것을 다시 설치하거나 다시 시작하려고 시도한다면, 용기층은 처음부터 만들어진 것이고, 우리가 이전 용기층에서 한 동작의 기록이 없습니다.우리는 어떻게 이 문제를 해결합니까?

영구 데이터


지속화 데이터베이스는 상술한 충돌의 해결 방안이다.그 생각은 dockers 가상 파일 시스템이 아닌 호스트 파일 시스템에 데이터를 저장하는 것이다.
기본적으로 세 가지 방법으로 데이터를 저장할 수 있다-
  • 볼륨
  • 바인딩 설치
  • tmpfs 설치(Linux)

  • 그러나 Docker는 볼륨을 영구화 데이터베이스의 주요 선택으로 사용하는 것을 권장한다. 왜냐하면 다른 볼륨에 비해 상당한 장점을 가지기 때문이다. 용기와 시스템 간의 쉽고 안전한 이전과 백업, linux와 윈도우즈에서 작업하는 유연성, 사용자는 Docker Client CLI를 사용하여 볼륨과 쉽게 통신할 수 있기 때문이다.
    # to create a volume 
    docker volume <volume-name>
    
    # to list all volumes
    docker volume ls
    
    # to delete a volume
    docker volume rm <volume-name> 
    


    다음은요?


    기계에 4-5개가 넘는 용기가 있는데, 규모를 확대하고, 네트워크를 설정하고, 테스트, 배치, 관리하기를 원합니다.일부 조직은 심지어 수천 개의 용기를 관리해야 한다.용기의 규모가 커지면서 그것들을 관리하는 것은 갈수록 어려워진다.그래서 우리는 용기를 관리하는 도구가 필요하다.
    이것이 바로 용기 편성의 작용이다.용기 배열 배치, 축소, 제거, 용기 운행 상황 검사, 부하 균형 유량 검사, 모든 용기 관리가장 널리 사용되는 컨테이너 배열 도구는 Kubernetes입니다.
    이제 너는 다음에 무엇을 탐색해야 할지 알게 되었다!.dockignore**저에게 연락 주세요 -
    ,
    GitHub
    **

    좋은 웹페이지 즐겨찾기