Docker 베이스 - 천지 Docker 시작

9308 단어 docker

Docker 베이스


1. Docer 기초 개념

  • 경상(Images): 정적 파일 시스템으로 소스 코드, 의존하는 라이브러리, 프로필 등이github에서 다운로드한 코드 패키지와 유사하지만 완전한 시스템으로 직접 실행할 수 있다.docker images를 사용하여 시스템의 미러를 볼 수 있습니다.
  • 컨테이너(Container): 컨테이너는 실행 중인 미러이며 실질적으로 프로세스이며 docker ps를 통해 실행 중인 컨테이너를 볼 수 있습니다.
  • 창고(Repository): 먼저 서버 Docker Registry에 로그인한 다음에 각각의 Registry에 여러 개의 Repository를 포함할 수 있다. 각각의 Repository 아래에 여러 개의 태그가 서로 다른 버전에 해당하고 각 태그는 하나의 이미지 Image
  • 에 대응한다.

    2. Docker 기본 작업


    가장 기본적인 작업은login,pull,push입니다. github와 유사합니다. 먼저 docker를 설치한 후에 Docker 서버에 로그인합니다.
  • docker login [Registry 이름]을 입력하고 사용자 이름과 로그인 비밀번호를 입력하여 로그인합니다.
  • docker pull [거울 이름]: [거울 Tag]:git clone에서 대응하는 거울을 다운로드하는 것과 유사합니다.
  • docker push,github의push와 유사하며,docker images를 이용하여 거울에 대응하는 창고 이름과 대응하는 Tag를 볼 수 있고,docker push [Repository]:[Tag]를 이용하여 원격 창고의 거울을 업데이트할 수 있다.

  • 3. Dockerfile 미러 만들기


    docker commit과 Dockerfile을 통해 이미지를 만들 수 있으며, 공식적으로는 Dockerfile을 사용해서 만드는 과정을 직관적으로 볼 수 있습니다.기본 명령 소개:
  • ARG: 임시 변수를 지정하면 미러가 생성된 후 사라집니다
  • .
  • FROM: 하나의 미러 위에 구축되도록 지정
  • WORKDIR: 작업 디렉토리 지정
  • RUN: 한 번에 하나의 미러 레이어 생성
  • CMD: 시작 후 기본적으로 실행되는 명령 및 매개변수를 설정합니다. 일반적으로 매개변수를 지정하는 데 사용됩니다
  • .
  • ENTRYPOINT: 시작 후 기본적으로 실행되는 명령과 파라미터를 설정하여 보통 인구
  • 로 한다.
  • COPY: 로컬 파일을 docker에 복사하고 원격으로curl 또는 wget
  • 을 사용합니다
  • ADD: 로컬 파일을 docker에 복사하여 자동으로 압축 해제
  • 4、실전 Docker 천지 입문전


    첫 번째 단계: docker 설치는 컴퓨터 버전에 따라 docker 설치 첫 번째 단계: 아리운 용기 렌즈 서비스 개통 손잡이 튜토리얼 보기 두 번째 단계, 매우 상세:https://tianchi.aliyun.com/competition/entrance/231759/tab/1743단계: 로컬 파일 4개, Dockerfile(미러링), hello 준비world.py(실행 코드),result.json (결과를 저장하는 데 공백),run.sh(컨테이너 실행 포털)
    1. Dockerfile: 손잡이 튜토리얼에 따라 설정하면 됩니다.
    FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
    ADD . /
    WORKDIR /
    CMD ["sh", "run.sh"]
    

    2、hello_world.py: 실행 코드
    import json
    import heapq
    
    class TopKHeap(object):
        def __init__(self,k):
            self.data=[]
            self.k=k
    
        def push(self,num):
    
            if len(self.data)<self.k:
                heapq.heappush(self.data,num)
            else:
                top_min=self.data[0]
                if num>top_min:
                    heapq.heapreplace(self.data,num)
                    
        def topk(self):
            return list(reversed([heapq.heappop(self.data) for i in range(self.k)]))
    
    def get_result():
        num_sum = 0
        topKHeap_10 = TopKHeap(10)
        with open("/tcdata/num_list.csv", "rb") as f:
            line = f.readline()
            while line:
                num = int(line)
                num_sum += num
                topKHeap_10.push(num)
                line = f.readline()
        return num_sum, topKHeap_10.topk()
    
    num_sum, top_10_list = get_result()
    data = {
        "Q1":"Hello world",
        "Q2":num_sum,
        "Q3":top_10_list
    }
    
    # data_json = json.dumps(data)
    
    with open("./result.json", "w") as f:
        json.dump(data, f)
    

    3、run.sh
    python hello_world.py
    

    로컬 디버그 프로그램, 절대 경로/tcdata/에num 만들기list.csv 파일, n개의 숫자,python helloworld.py 보기result.json의 출력
    4부: 이미지 업로드 2단계 서비스에 업로드
    $ sudo docker login --username=[   ] registry.cn-shanghai.aliyuncs.com
    

    2. 미러링
    $ sudo docker pull registry.cn-shanghai.aliyuncs.com/[   ]:[     ]
    

    3. Dockerfile을 이용하여 Dockerfile의 디렉터리로 미러 만들기
    $ sudo docker build -t registry.cn-shenzhen.aliyuncs.com/[   ]:[     ] .
    

    4. 미러 서버에 업로드
    $ sudo docker push registry.cn-shenzhen.aliyuncs.com/[   ]:[     ]
    

    좋은 웹페이지 즐겨찾기