>  Q&A  >  본문

为什么docker上自己创建的mysql镜像特别大

新手刚入门,自己学着创建系统镜像和各种应用的镜像

我先自己制作了一个centos67的镜像,然后基于centos67装了vim,再docker commit 保存为centos67vim
然后再基于centos67vim上 编译安装了mysql5.6再commit保存为 mysql56,可是发现容量就达1.591GB了

我再docker pull mysql 发现为什么官方提供的只有360.3

多谢各位大大帮忙解答!!

巴扎黑巴扎黑2756일 전1372

모든 응답(5)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-04-24 09:12:48

    이미지를 만드는 과정에서 몇 가지 사항에 주의해야 합니다.
    1. 파일 시스템은 UnionFs이며 Dockerfile의 각 RUN은 레이어를 생성합니다. 따라서 각 RUN 후에 생성된 데이터를 정리해야 합니다. 생성된 결과(3G 크기)는 각 레이어 크기의 선형 중첩이기 때문입니다.
    2. 공식 이미지가 일반적으로 너무 작은 이유는 무엇인가요? mysql:5.6을 참조로 사용하여 분석해 보겠습니다.

    RUN apt-get update && apt-get install -y perl --no-install-recommends && rm -rf /var/lib/apt/lists/*
    빌드 업데이트 후 삭제 apt의 캐시된 패키지 파일. 일반적으로 이 폴더는 상황에 따라 약 100M 정도를 차지하게 됩니다.

    RUN { ...&& apt-get update && apt-get install -y
    mysql-server="${MYSQL_VERSION}" && rm -rf /var/lib/apt/lists/* && rm
    -rf /var/lib/mysql && mkdir -p /var/lib/mysql db 설치 후 평소와 같이 캐시된 패키지 파일을 삭제합니다. /var/lib/mysql을 삭제하면 샘플 데이터베이스가 지워질 수 있습니다.

    hub.docker.com에서 가장 일반적으로 사용되는 vim 패키지를 살펴보겠습니다. haron/vim 이미지는 300M이고 스크래치를 기본 이미지로 사용하는 것으로 나타났습니다.

    hub.docker.com에서 대략적으로 검색한 결과 centos 기반의 mysql 이미지를 찾을 수 없었습니다. 개인적으로는 캐시된 패키지가 삭제되지 않아 문제가 발생한 것으로 추정합니다.

    @ShawnTaoo 형제가 언급한 기본 이미지 크기 문제에 대해서는 저도 조사를 했습니다: centos:latest 190+MB, debian:jessie: 130+MB, ubuntu:latest 180+MB


    참고:

    1. mysql 미러 분석

    2. haron/vim 분석

    3. Centos 기본 이미지 분석

    4. Ubuntu 기반 이미지 분석

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-24 09:12:48

    당연하게도 램프를 설치했는데 하나의 설치 패키지만 3G만 늘렸는데 알고 보니 mysql 하나가 1G만 늘었습니다

    회신하다
    0
  • 迷茫

    迷茫2017-04-24 09:12:48

    아직 시작하지 않았습니다
    플레이하기 전에 입문 튜토리얼을 완료하는 것이 좋습니다

    임시 파일을 삭제하지 않고 커밋

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-24 09:12:48

    mysql 공식 이미지의 dockerfile을 확인하실 수 있습니다. 기본 이미지는 달라야 합니다. 일반적으로 많은 공식 기본 이미지는 매우 작습니다. 예를 들어 scratch 그런데 우분투 같은 걸 사용하면 180M 정도 됩니다. (정정해준 @
    imdjh에게 감사드립니다) Centos에는 신경을 안 썼네요.

    회신하다
    0
  • 阿神

    阿神2017-04-24 09:12:48

    Dockerfile을 공개로 설정하면 모든 사람이 살펴보는 데 도움을 줄 수 있습니다. 가장 큰 문제는 Dockerfile 작성입니다

    회신하다
    0
  • 취소회신하다