基于Docker-mysql的官方镜像 制作对应的arm架构的镜像

背景说明

当前根据MySQL的官方官方镜像(x86)想要制作一个arm架构的对应版本的机器

version:mysql:5.7.37

把官方的镜像的history捞出来打印了一遍看到最初的 dockerfile

ADD file:702017714ad3e1567b4f60b688750f8b631d91088e4dcf41351c4bb07749c579 in /
 CMD ["bash"]
RUN groupadd -r mysql && useradd -r -g mysql mysql
RUN apt-get update && apt-get install -y --no-install-recommends gnupg dirmngr && rm -rf /var/lib/apt/lists/*
 ENV GOSU_VERSION=1.14
RUN set -eux;  savedAptMark="$(apt-mark showmanual)";  apt-get update;  apt-get install -y --no-install-recommends ca-certificates wget;  rm -rf /var/lib/apt/lists/*;  dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')";  wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch";  wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc";  export GNUPGHOME="$(mktemp -d)";  gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4;  gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu;  gpgconf --kill all;  rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc;  apt-mark auto '.*' > /dev/null;  [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null;  apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false;  chmod +x /usr/local/bin/gosu;  gosu --version;  gosu nobody true
RUN mkdir /docker-entrypoint-initdb.d
RUN set -eux;  apt-get update;  apt-get install -y --no-install-recommends   openssl   perl   xz-utils   zstd  ;  rm -rf /var/lib/apt/lists/*
RUN set -eux;  key='859BE8D7C586F538430B19C2467B942D3A79BD29';  export GNUPGHOME="$(mktemp -d)";  gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key";  mkdir -p /etc/apt/keyrings;  gpg --batch --export "$key" > /etc/apt/keyrings/mysql.gpg;  gpgconf --kill all;  rm -rf "$GNUPGHOME"
 ENV MYSQL_MAJOR=5.7
 ENV MYSQL_VERSION=5.7.37-1debian10
RUN echo 'deb [ signed-by=/etc/apt/keyrings/mysql.gpg ] http://repo.mysql.com/apt/debian/ buster mysql-5.7' > /etc/apt/sources.list.d/mysql.list
RUN {   echo mysql-community-server mysql-community-server/data-dir select '';   echo mysql-community-server mysql-community-server/root-pass password '';   echo mysql-community-server mysql-community-server/re-root-pass password '';   echo mysql-community-server mysql-community-server/remove-test-db select false;  } | debconf-set-selections  && apt-get update  && apt-get install -y   mysql-server="${MYSQL_VERSION}"  && find /etc/mysql/ -name '*.cnf' -print0   | xargs -0 grep -lZE '^(bind-address|log)'   | xargs -rt -0 sed -Ei 's/^(bind-address|log)/#&/'  && echo '[mysqld]\nskip-host-cache\nskip-name-resolve' > /etc/mysql/conf.d/docker.cnf  && rm -rf /var/lib/apt/lists/*  && rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql /var/run/mysqld  && chown -R mysql:mysql /var/lib/mysql /var/run/mysqld  && chmod 1777 /var/run/mysqld /var/lib/mysql
 VOLUME [/var/lib/mysql]
COPY file:e9a583a365264f0f565259ffd0f19e5199ef4351d098f75af32f633c0d6cbe73 in /usr/local/bin/
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat
 ENTRYPOINT ["docker-entrypoint.sh"]
 EXPOSE 3306 33060
 CMD ["mysqld"]

问题来了,依据此dockerfile文件 是否可以在arm架构的机器上依照此文件构建arm的镜像文件?

文中的file:702017714ad3e1567b4f60b688750f8b631d91088e4dcf41351c4bb07749c579file:e9a583a365264f0f565259ffd0f19e5199ef4351d098f75af32f633c0d6cbe73指的是什么文件?

阅读 3.2k
1 个回答
✓ 已被采纳

可以尝试着改一下,当然arm和x86的镜像制作需要的一些介质还是有区别的

建议使用新一代的docker 构建工具 buildx 来实现

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题