全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
楼主: 摸鱼小熊猫
打印 上一主题 下一主题

[Windows VPS] 为国产龙芯mips架构Linux制作docker精简镜像

[复制链接]
11#
 楼主| 发表于 2018-4-27 10:40:59 | 只看该作者
ggeeii 发表于 2018-4-27 10:24
到现在何止烧了几十亿?

国产芯片烧钱多,据我所知系统这块还真没烧多少钱

君不见,红旗Linux都破产了,也没见zf出来托底
12#
发表于 2018-4-27 10:42:55 | 只看该作者
支持大佬  mark一个
13#
发表于 2018-4-27 10:43:11 | 只看该作者
zzr 发表于 2018-4-27 10:25
给你几百亿都不行,改个linux做个桌面几十万就够了。问题是生态,你给腾讯多少钱愿意给你开发维护?给阿 ...

我只是敲醒楼主

几十个亿真做的话,给各种人等的提成之类的怕就用了七八个亿

做过政府招投标的都懂
14#
发表于 2018-4-27 11:29:57 来自手机 | 只看该作者
只能精神支持一下大佬了
15#
 楼主| 发表于 2018-4-27 11:32:56 | 只看该作者
找到解决方案了

目标国产系统核心包如下:
acl attr audit basesystem bash coreutils cpio cronie dhclient e2fsprogs filesystem glibc initscripts iproute iptables iptables-ipv6 iputils kbd ncurses openssh-server passwd policycoreutils procps rootfiles rpm rsyslog selinux-policy-targeted setup shadow-utils sudo usbtray util-linux-ng vim-minimal yum

经过精简的核心包如下:
basesystem bash coreutils filesystem iputils passwd  procps rootfiles rpm shadow-utils vim-minimal yum

执行脚本:
bash <script_name> -g null -p basesystem bash coreutils filesystem iputils passwd  procps rootfiles rpm shadow-utils vim-minimal yum

制作镜像的脚本如下:


  1. #!/usr/bin/env bash

  2. set -e

  3. usage() {
  4.     cat <<EOOPTS
  5. $(basename $0) [OPTIONS] <name>
  6. OPTIONS:
  7.   -p "<packages>"  The list of packages to install in the container.
  8.                    The default is blank.
  9.   -g "<groups>"    The groups of packages to install in the container.
  10.                    The default is "Core".
  11.   -y <yumconf>     The path to the yum config to install packages from. The
  12.                    default is /etc/yum.conf for Centos/RHEL and /etc/dnf/dnf.conf for Fedora
  13. EOOPTS
  14.     exit 1
  15. }

  16. # option defaults
  17. yum_config=/etc/yum.conf
  18. if [ -f /etc/dnf/dnf.conf ] && command -v dnf &> /dev/null; then
  19.         yum_config=/etc/dnf/dnf.conf
  20.         alias yum=dnf
  21. fi
  22. install_groups="Core"
  23. while getopts ":y:p:g:h" opt; do
  24.     case $opt in
  25.         y)
  26.             yum_config=$OPTARG
  27.             ;;
  28.         h)
  29.             usage
  30.             ;;
  31.         p)
  32.             install_packages="$OPTARG"
  33.             ;;
  34.         g)
  35.             install_groups="$OPTARG"
  36.             ;;
  37.         \?)
  38.             echo "Invalid option: -$OPTARG"
  39.             usage
  40.             ;;
  41.     esac
  42. done
  43. shift $((OPTIND - 1))
  44. name=$1

  45. if [[ -z $name ]]; then
  46.     usage
  47. fi

  48. target=$(mktemp -d --tmpdir $(basename $0).XXXXXX)

  49. set -x

  50. mkdir -m 755 "$target"/dev
  51. mknod -m 600 "$target"/dev/console c 5 1
  52. mknod -m 600 "$target"/dev/initctl p
  53. mknod -m 666 "$target"/dev/full c 1 7
  54. mknod -m 666 "$target"/dev/null c 1 3
  55. mknod -m 666 "$target"/dev/ptmx c 5 2
  56. mknod -m 666 "$target"/dev/random c 1 8
  57. mknod -m 666 "$target"/dev/tty c 5 0
  58. mknod -m 666 "$target"/dev/tty0 c 4 0
  59. mknod -m 666 "$target"/dev/urandom c 1 9
  60. mknod -m 666 "$target"/dev/zero c 1 5

  61. # amazon linux yum will fail without vars set
  62. if [ -d /etc/yum/vars ]; then
  63.         mkdir -p -m 755 "$target"/etc/yum
  64.         cp -a /etc/yum/vars "$target"/etc/yum/
  65. fi

  66. if [[ -n "$install_groups" ]];
  67. then
  68.     yum -c "$yum_config" --installroot="$target" --releasever=/ --setopt=tsflags=nodocs \
  69.         --setopt=group_package_types=mandatory -y groupinstall "$install_groups"
  70. fi

  71. if [[ -n "$install_packages" ]];
  72. then
  73.     yum -c "$yum_config" --installroot="$target" --releasever=/ --setopt=tsflags=nodocs \
  74.         --setopt=group_package_types=mandatory -y install "$install_packages"
  75. fi

  76. yum -c "$yum_config" --installroot="$target" -y clean all

  77. cat > "$target"/etc/sysconfig/network <<EOF
  78. NETWORKING=yes
  79. HOSTNAME=localhost.localdomain
  80. EOF

  81. # effectively: febootstrap-minimize --keep-zoneinfo --keep-rpmdb --keep-services "$target".
  82. #  locales
  83. rm -rf "$target"/usr/{{lib,share}/locale,{lib,lib64}/gconv,bin/localedef,sbin/build-locale-archive}
  84. #  docs and man pages
  85. rm -rf "$target"/usr/share/{man,doc,info,gnome/help}
  86. #  cracklib
  87. rm -rf "$target"/usr/share/cracklib
  88. #  i18n
  89. rm -rf "$target"/usr/share/i18n
  90. #  yum cache
  91. rm -rf "$target"/var/cache/yum
  92. mkdir -p --mode=0755 "$target"/var/cache/yum
  93. #  sln
  94. rm -rf "$target"/sbin/sln
  95. #  ldconfig
  96. rm -rf "$target"/etc/ld.so.cache "$target"/var/cache/ldconfig
  97. mkdir -p --mode=0755 "$target"/var/cache/ldconfig

  98. version=
  99. for file in "$target"/etc/{redhat,system}-release
  100. do
  101.     if [ -r "$file" ]; then
  102.         version="$(sed 's/^[^0-9\]*\([0-9.]\+\).*$/\1/' "$file")"
  103.         break
  104.     fi
  105. done

  106. if [ -z "$version" ]; then
  107.     echo >&2 "warning: cannot autodetect OS version, using '$name' as tag"
  108.     version=$name
  109. fi

  110. tar --numeric-owner -c -C "$target" . | docker import - $name:$version

  111. docker run -i -t --rm $name:$version /bin/bash -c 'echo success'

  112. rm -rf "$target"
复制代码

点评

厉害了大佬,战略性mark  发表于 2018-4-27 13:43
16#
发表于 2018-4-27 11:48:36 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
17#
发表于 2018-4-27 12:06:34 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
18#
发表于 2018-4-27 12:07:26 来自手机 | 只看该作者
战略性马克!!!支持国产
19#
发表于 2018-4-27 12:22:27 | 只看该作者
那么,哪里能买到便宜的龙芯笔记本呢?
20#
发表于 2018-4-27 12:33:47 | 只看该作者
我没记错的话,

docker 只支持 x64 架构,

点评

那是因为你可能只接触过x86架构的机器,实际docker支持好多架构,比如powerPC 比如MIPS  发表于 2018-4-27 13:18
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-19 10:25 , Processed in 0.061350 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表