为什么docker上自己创建的mysql镜像特别大
巴扎黑
巴扎黑 2017-04-24 09:10:48
0
5
1379

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

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

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

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

巴扎黑
巴扎黑

모든 응답(5)
洪涛

이미지를 만드는 과정에서 몇 가지 사항에 주의해야 합니다.
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 기반 이미지 분석

左手右手慢动作

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

迷茫

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

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

刘奇

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

阿神

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿