首页 > 其他分享 >构建自己的docker镜像

构建自己的docker镜像

时间:2023-10-07 12:00:24浏览次数:51  
标签:rambo PACKAGE GLIBC 构建 && 镜像 docker debian ALPINE

目录

前奏

rambo@debian:~$ cat /etc/issue
Debian GNU/Linux 12 \n \l

基于当前OS创建自己的镜像

rambo@debian:~$ mkdir myimage
rambo@debian:~$ sudo cp -a /usr/lib  /usr/lib32/  /usr/lib64/  /usr/bin/  myimage

rambo@debian:~$ sudo  chroot  myimage  bash
bash-5.2# pwd
/
bash-5.2# ls -al
total 92
drwxr-xr-x  6 1000 1000  4096 Oct  7 02:15 .
drwxr-xr-x  6 1000 1000  4096 Oct  7 02:15 ..
drwxr-xr-x  2    0    0 69632 Oct  7 01:25 bin
drwxr-xr-x 85    0    0  4096 Oct  6 09:08 lib
drwxr-xr-x  2    0    0  4096 Aug  3 10:37 lib32
drwxr-xr-x  2    0    0  4096 Oct  4 00:19 lib64
bash-5.2# exit

# 新建一个包含一些随机字符串的secret.txt文件
rambo@debian:~$ docker images
REPOSITORY                TAG         IMAGE ID      CREATED      SIZE
docker.io/library/nginx   latest      61395b4c586d  2 weeks ago  191 MB
docker.io/library/debian  latest      2657a4a0a6d5  2 weeks ago  121 MB


rambo@debian:~$ echo $(openssl rand -base64 32) > myimage/secret.txt   # 也可以是echo 123 > 1.txt
rambo@debian:~$ sudo tar -C myimage/ -c . -f myimage.tar

# docker import使用需要tar存档文件和映像名称的命令导入文件,而后会看到image的 sha256 哈希摘要
rambo@debian:~$ docker import myimage.tar  myimage:latest
rambo@debian:~$ docker images
REPOSITORY                TAG         IMAGE ID      CREATED        SIZE
localhost/myimage         latest      0b5fc43f8711  3 minutes ago  3.72 GB
注:这里是因为我的Debian环境不是新装的,装了很多其他的


# 用新创建的镜像运行容器
rambo@debian:~$ docker run -itd --rm --entrypoint /bin/bash  myimage:latest

rambo@debian:~$ docker ps -a
CONTAINER ID  IMAGE                      COMMAND    CREATED         STATUS          PORTS   NAMES
0db97c97a7e7  localhost/myimage:latest   bash       13 seconds ago  Up 13 seconds           pensive_yalow

rambo@debian:~$ docker exec -it 0db97 /bin/bash
bash-5.2# ls
bin  dev  etc  lib  lib32  lib64  proc  run  secret.txt  sys
bash-5.2# cat secret.txt 
YA+UeqdKtZv36ZvMnqDsGHC0wxEWD2bUVdnNW4NOCpU=

让Alpine不再是Alpine

参考1参考2

在Alpine里面安装glibc,让Alpine不再是Alpine
对镜像alpine有偏执的,可以通过这种方式来实现glibc的,当然直接使用支持glibc的linux发行版的镜像就没有这篇文章了
rambo@debian:~$ mkdir opop && cd opop/
rambo@debian:~/opop$ vim Dockerfile
FROM  alpine:3.18

ENV LANG=C.UTF-8

# install GNU libc (aka glibc) C.UTF-8 locale and set timezone
RUN ALPINE_GLIBC_BASE_URL="https://github.com/sgerrand/alpine-pkg-glibc/releases/download" && \
    ALPINE_GLIBC_PACKAGE_VERSION="2.29-r0" && \
    ALPINE_GLIBC_BASE_PACKAGE_FILENAME="glibc-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \
    ALPINE_GLIBC_BIN_PACKAGE_FILENAME="glibc-bin-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \
    ALPINE_GLIBC_I18N_PACKAGE_FILENAME="glibc-i18n-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \
    apk add --no-cache --virtual=.build-dependencies wget ca-certificates && \
    wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
    wget \
        "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \
        "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \
        "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" && \
    apk add --no-cache \
        "$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \
        "$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \
        "$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" && \
    \
    rm "/etc/apk/keys/sgerrand.rsa.pub" && \
    /usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 "$LANG" || true && \
    echo "export LANG=$LANG" > /etc/profile.d/locale.sh && \
    \
    apk del glibc-i18n && \
    \
    rm "/root/.wget-hsts" && \
    apk del .build-dependencies && \
    rm \
        "$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \
        "$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \
        "$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" && \
  echo 'http://mirrors.ustc.edu.cn/alpine/v3.18/main' > /etc/apk/repositories \
    && echo 'http://mirrors.ustc.edu.cn/alpine/v3.18/community' >>/etc/apk/repositories \
&& apk update && apk add tzdata \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ 
&& echo "Asia/Shanghai" > /etc/timezone



# 构建alpine-base:3.18镜像
docker build -t alpine-base:3.18 .
docker run --name alpine-base --rm -it alpine-base:3.9 sh

防走丢

QQ群1:905201396
QQ群2:756805267
QQ群3:912567610

标签:rambo,PACKAGE,GLIBC,构建,&&,镜像,docker,debian,ALPINE
From: https://www.cnblogs.com/smlile-you-me/p/17745963.html

相关文章

  • 视频融合平台EasyCVR利用视频监控系统构建智能读表产品应用解决方案
    安防视频监控平台EasyCVR是一个具有强大拓展性、灵活的视频能力和轻便部署的平台。它支持多种主流标准协议,包括国标GB28181、RTSP/Onvif、RTMP等,还可以支持厂家的私有协议和SDK接入,例如海康Ehome、海大宇等设备的SDK。该平台不仅拥有传统安防视频监控的功能,还具备接入AI智能分析的......
  • virt-manager更换磁盘镜像文件安装目录
    先创建好要存储的目录,如mkdir/home/windowsimages,然后以安装windows虚拟机为例,当达到创建虚拟机的第四步,设置磁盘镜像时1、选择Selectorcreatecustomstorage->Manage) 2、创建存储池  点击Finish,就可以看到存储池中多了新建的存储  3、添加卷,设置磁盘映......
  • 14 构建CNN(一)
    importnumpyasnpimporth5pyimportmatplotlib.pyplotasplt%matplotlibinlineplt.rcParams['figure.figsize']=(5.0,4.0)plt.rcParams['image.interpolation']='nearest'plt.rcParams['image.cmap']='gray......
  • 解除Windows11 最新iso镜像新限制(微软账户登录和需要TPM)一法
        Windows11新镜像ISO文件安装时逼着你非得绑定微软账户,想继续像Windows7那样用本地账户登录。现在不管是Windows11的21H2还是22H2,装系统都得硬着头皮登录微软账户,哪怕你断了网也别想装。以下方法可以避免这个限制,同时解决不需要TPM的问题。:使用Rufus制作USB安装盘,Ru......
  • docker 学习
    dockereventstate  docker概述 docker安装 docker命令 docker镜像 容器数据卷 dockerfile docker网络原理 IDEA整合docker dockercompose dockerswarm ......
  • !提高安装速度:如何将pip源更换到国内镜像
    https://zhuanlan.zhihu.com/p/350550546?utm_id=0 一、方案一——随用随改型输入“pipinstallxxx”时插入国内镜像源地址,变为“pipinstall-i地址xxx”并回车。几个常用镜像源:阿里云:http://mirrors.aliyun.com/pypi/simple/清华大学:https://pypi.tuna.tsinghua.edu......
  • WIN11 安装 SQL Server 2019,SQLSERVER2022, MYSQL 8.0 ,Docker,Mongodb失败故障分析
    最近研究数据库性能调优遇到各种数据库各种装不上,不知道熬了多少根软白沙,熬了多少颗张三疯,问了多少AI,查了多少网页,熬了两天,终于搞明白了一件事:那就是WIN11ONARM(因为拿的是MACPROM2做.NET平台开发安装)SQLSERVER2019,SQLSERVER2022,MYSQL8.0,Docker,Mongodb失败故障分析,最终极......
  • docker笔记
    假设容器id为3a9ac4d50f7d开机时启动dockersudosystemctlstartdocker查看docker情况systemctlstatusdocker重启daemonsystemctldaemon-reload容器配置存放路径/var/lib/docker/containers/https://blog.csdn.net/sosous/article/details/122758984dockerstart容......
  • webpack - 构建支持TypeScript的React应用
    1.初始化package.json创建项目文件夹mkdirwebpack-react-tscdwebpack-react-ts初始化项目package.jsonyarninit-y{"name":"webpack-react-ts","version":"1.0.0","main":"index.js","license&......
  • 线程数对samtools对bam文件构建索引速度的影响
     001、(base)[b20223040323@admin1test]$lsERR2985610.sorted.markdup.bam##1线程(base)[b20223040323@admin1test]$timesamtoolsindex-@1ERR2985610.sorted.markdup.bamreal1m3.268suser1m35.792ssys0m5.750s......