使用 Docker 时,我们使用 CentOS6-i386(32位 CentOS6 版本)的镜像

由于工作的需要,突然需要 32 位的 CentOS6 版本,所以做个备忘录。

从Docker Hub拉取镜像

$ docker pull i386/centos:6
    • CentOS の公式ビルドから作られたイメージ

 

    • こちらでサポートされている

 

    GitHub – CentOS/sig-cloud-instance-images: CentOS cloud images

请确认动作

$ docker run -it --rm i386/centos:6 /bin/bash

[root@dcf50c6c410b /]# cat /etc/redhat-release
CentOS release 6.10 (Final)

[root@dcf50c6c410b /]# date
Sun Jun 16 03:31:41 UTC 2019

# DockerコンテナはホストOSのカーネルを使って動作するためマシンネームは x86_64 で表示される
[root@dcf50c6c410b /]# uname -a
Linux dcf50c6c410b 4.9.93-boot2docker #1 SMP Thu Jul 19 18:29:50 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

[root@dcf50c6c410b /]# uname -m
x86_64

# 実際は 32bit
[root@dcf50c6c410b /]# getconf LONG_BIT
32

# インストールされているパッケージは 32bit版だが、リポジトリの向き先が 64bit版になっている
# repo ファイルの $basearch の値が x86_64 になっているため
[root@dcf50c6c410b /]# yum list | grep '^rpm\.'
rpm.i686                                4.8.0-59.el6                @CentOS/6.10
rpm.x86_64                              4.8.0-59.el6                base

# 直接 32bit版のリポジトリを指定すると期待した動作となる
[root@dcf50c6c410b /]# sed -i 's/$basearch/i386/g' /etc/yum.repos.d/CentOS-*.repo
[root@dcf50c6c410b /]# yum clean all
Loaded plugins: fastestmirror, ovl
Cleaning repos: base extras updates
Cleaning up Everything
Cleaning up list of fastest mirrors
[root@dcf50c6c410b /]# yum list | grep '^rpm\.'
rpm.i686                                4.8.0-59.el6                @CentOS/6.10

这个图像的使用方式

好像在这种 Dockerfile 中先创建基础镜像然后使用会更好一些。

FROM i386/centos:6

RUN sed -i 's/$basearch/i386/g' /etc/yum.repos.d/CentOS-*.repo && \
    ln -sf /usr/share/zoneinfo/Japan /etc/localtime

uname -m で動作環境を判定してるスクリプトを動かす場合は修正が必要

请提供以下内容的中文本地化版本,只需要提供一个选项:

1. 参考文献

    • CentOS 5.11 32bitイメージ作った – Qiita

 

    Docker i686 image broken · Issue #94 · CentOS/sig-cloud-instance-images · GitHub
bannerAds