code

Docker 용 기본 이미지를 어떻게 만들 수 있습니까?

codestyles 2020. 9. 10. 07:52
반응형

Docker 용 기본 이미지를 어떻게 만들 수 있습니까?


Docker 문서 에 따르면 자체 이미지를 빌드하려면 항상 FROM지침을 사용하여 기본 이미지를 지정해야합니다 .

당연히 Docker index 에서 선택할 수있는 이미지가 많이 있지만 직접 만들고 싶다면 어떻게해야합니까? 가능합니까?

base올바르게 이해하면 이미지 가 Ubuntu에서 빌드되고 Debian 이미지로 실험하고 싶습니다. 또한 Docker가 어떻게 작동하는지 정말로 이해하고 싶고 base이미지는 여전히 저에게 블랙 박스입니다.


편집 : 기본 이미지 생성에 대한 공식 문서


기본 이미지가 생성되고 거기에서 이동하는 방법을 볼 수 있습니다.

https://github.com/dotcloud/docker/tree/master/contrib에서 찾을 수 있습니다 . mkimage-busybox.sh, mkimage-unittest.sh, mkimage-debian.sh가 있습니다.


Solomon Hykes 인용 :

"docker import"를 사용하여 모든 tarball에서 새 컨테이너를 쉽게 만들 수 있습니다. 예를 들면 :

debootstrap raring ./rootfs
tar -C ./rootfs -c . | docker import - flimm/mybase

(fatherlinux에 대한 크레딧) http://developerblog.redhat.com/2014/05/15/practical-introduction-to-docker-containers/ 에서 정보를 얻으십시오.

  1. 파일 시스템에 대한 tar 파일을 만듭니다.

    tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar /
    
  2. 로컬에 설치되지 않은 경우 다른 고정 표시기 시스템에 tar 파일을 전송하고 import그것을

    cat centos6-base.tar | docker import - centos6-base
    
  3. 이제 실행하여 확인할 수 있습니다.

    docker run -i -t centos6-base cat /etc/redhat-release
    

dotcloud스크립트 는 처음 두 단계를 결합하여 처음에는 혼란스럽고 복잡해 보입니다.

도커 공식 가이드 라인을 사용하여 debootstrap깨끗한 파일 시스템을 만들려고합니다.

1 단계를 수행하는 방법을 스스로 판단 할 수 있습니다.


처음부터 자신의 이미지 빌드를 시작하려면 이미지를 사용할 수 있습니다 scratch.

스크래치 "이미지"를 사용하면 Dockerfile의 다음 명령이 이미지의 첫 번째 파일 시스템 계층이되기를 원하는 빌드 프로세스에 신호를 보냅니다.

FROM scratch
ADD hello /
CMD ["/hello"]

http://docs.docker.com/engine/articles/baseimages/#creating-a-simple-base-image-using-scratch


자신 만의 기본 이미지를 만들고 싶다면 먼저 공식 이미지 , 특히 stackbrew해당 저장소 내부를 살펴 보겠습니다 .

그렇지 않으면 docker repo 자체 에 최소 OS 이미지에 대한 훌륭한 참조가 있습니다.

예를 들어 여기 에 최소한의 아치 이미지를 만들기 위한 스크립트 가 있으며 여기 에 더 있습니다 .

참고 URL : https://stackoverflow.com/questions/18274088/how-can-i-make-my-own-base-image-for-docker

반응형