当前位置: 首页 > article >正文

Linux运维_Dockerfile_打包Moby-26.1.4编译dockerd环境

Linux运维_Dockerfile_打包Moby-26.1.4编译dockerd环境

Dockerfile 是一个文本文件, 包含了构建 Docker 镜像的所有指令。

Dockerfile 是一个用来构建镜像的文本文件, 文本内容包含了一条条构建镜像所需的指令和说明。

通过定义一系列命令和参数, Dockerfile 指导 Docker 构建一个自定义的镜像。

使用方法

  • 创建项目目录:

打包 docker 镜像项目目录内需要包含 Dockerfile 文件 (确保文件名大小写正确, 并且没有文件扩展名)。

目录结构如下:

 /home
  +- /jack
      +- /package-dock-img-project
          +- Dockerfile

  • 进入项目目录:

进入包含 Dockerfile 文件的项目目录。

  • 执行 docker 命令构建镜像:

在包含 Dockerfile 文件的项目目录中执行以下命令:

docker build -t <your-image-name>:<tag> .

# 命令说明:
# "<your-image-name>" 是你希望给镜像起的名字。
# "<tag>" 是镜像的版本号, 例如 latest。如果你不指定 tag, 默认是 latest。
# "." 表示 Dockerfile 文件的位置, 这里是当前目录。

完整脚本

# compile-env/moby-26.1.4/golang:1.21.12-bookworm (Whole)
# Create by GF 2025-02-18

FROM tonistiigi/xx:1.4.0 AS xx

# 使用官方 golang-1.21.12-bookworm 运行时作为父镜像
FROM golang:1.21.12-bookworm AS base
COPY --from=xx / /

# 设置维护者信息
LABEL maintainer="goufeng928@live.com"

# ###############################################

# Extracting Information from "moby-26.1.4/Dockerfile":
# ...
# FROM --platform=$BUILDPLATFORM tonistiigi/xx:${XX_VERSION} AS xx
# ...
# FROM --platform=$BUILDPLATFORM ${GOLANG_IMAGE} AS base
# ...
# COPY --from=xx / /
# ...
# RUN ... apt-get install --no-install-recommends -y file
# ...
# FROM base AS criu
# ...
# RUN ... apt-get install -y --no-install-recommends criu
# ...
# FROM base AS containerd-build
# ...
# RUN ... xx-apt-get install -y --no-install-recommends gcc libbtrfs-dev libsecret-1-dev pkg-config
# ...
# FROM base AS runc-build
# ...
# RUN ... xx-apt-get install -y --no-install-recommends dpkg-dev gcc libc6-dev libseccomp-dev pkg-config
# ...
# FROM base AS tini-build
# ...
# RUN ... apt-get install -y --no-install-recommends cmake
# ...
# RUN ... xx-apt-get install -y --no-install-recommends gcc libc6-dev pkg-config
# ...
# FROM base AS rootlesskit-build
# ...
# RUN ... xx-apt-get install -y --no-install-recommends gcc libc6-dev pkg-config
# ...
# FROM base AS crun
# ...
# RUN ... apt-get install -y --no-install-recommends autoconf automake build-essential libcap-dev \
#             libprotobuf-c-dev libseccomp-dev libsystemd-dev libtool libudev-dev libyajl-dev python3
# ...
# FROM base AS containerutil-build
# ...
# RUN ... xx-apt-get install -y --no-install-recommends gcc g++ libc6-dev pkg-config
# ...
# FROM base AS dev-systemd-false
# ...
# FROM dev-systemd-false AS dev-systemd-true
# ...
# RUN ... apt-get install -y --no-install-recommends dbus dbus-user-session systemd systemd-sysv
# ...
# FROM dev-systemd-${SYSTEMD} AS dev-base
# ...
# RUN ... apt-get install -y --no-install-recommends apparmor bash-completion bzip2 inetutils-ping \
#             iproute2 iptables jq libcap2-bin libnet1 libnl-3-200 libprotobuf-c1 libyajl2 net-tools \
#             patch pigz sudo systemd-journal-remote thin-provisioning-tools uidmap vim vim-common \
#             xfsprogs xz-utils zip zstd
# ...
# RUN ... apt-get install --no-install-recommends -y gcc pkg-config dpkg-dev libapparmor-dev \
#             libseccomp-dev libsecret-1-dev libsystemd-dev libudev-dev yamllint
# ...
# FROM base AS build
# ...
# RUN ... apt-get install --no-install-recommends -y clang lld llvm
# ...
# RUN ... xx-apt-get install --no-install-recommends -y dpkg-dev gcc libapparmor-dev libc6-dev \
#             libseccomp-dev libsecret-1-dev libsystemd-dev libudev-dev pkg-config
# ...
# [Total: 52 "apt-get install" Packages, 11 "xx-apt-get install" Packages]

RUN sed -i "s#deb.debian.org#mirrors.aliyun.com#g" /etc/apt/sources.list.d/debian.sources

# Debian 及其衍生版本中用于处理 debconf 配置文件的工具是 "apt-utils",
# 未安装 "apt-utils", 可能出现 "debconf: delaying package configuration, since apt-utils is not installed" 这样的错误。

RUN    apt-get update \
    && apt-get install -y --no-install-recommends apt-utils

# ...............................................

RUN    apt-get update \
    && apt-get install -y --no-install-recommends \
	   apparmor autoconf automake bash-completion build-essential bzip2 clang cmake criu dbus \
	   dbus-user-session dpkg-dev file gcc inetutils-ping iproute2 iptables jq libapparmor-dev \
	   libcap-dev libcap2-bin libnet1 libnl-3-200 libprotobuf-c-dev libprotobuf-c1 libseccomp-dev \
	   libsecret-1-dev libsystemd-dev libtool libudev-dev libyajl-dev libyajl2 lld llvm net-tools \
	   patch pigz pkg-config python3 sudo systemd systemd-journal-remote systemd-sysv \
	   thin-provisioning-tools uidmap vim vim-common xfsprogs xz-utils yamllint zip zstd

# ...............................................

RUN    apt-get update \
    && xx-apt-get install -y --no-install-recommends \
       dpkg-dev g++ gcc libapparmor-dev libbtrfs-dev libc6-dev libseccomp-dev libsecret-1-dev \
	   libsystemd-dev libudev-dev pkg-config

RUN sed -i "s#mirrors.aliyun.com#deb.debian.org#g" /etc/apt/sources.list.d/debian.sources

# ###############################################

# Extracting Information from "moby-26.1.4/Dockerfile":
# ...
# FROM base AS tomll
# ...
# RUN ... GOBIN=/build/ GO111MODULE=on go install "github.com/pelletier/go-toml/cmd/tomll@${GOTOML_VERSION}"
# ...
# FROM base AS gowinres
# ...
# RUN ... GOBIN=/build/ GO111MODULE=on go install "github.com/tc-hib/go-winres@${GOWINRES_VERSION}"
# ...
# FROM base AS golangci_lint
# ...
# RUN ... GOBIN=/build/ GO111MODULE=on go install "github.com/golangci/golangci-lint/cmd/golangci-lint@${GOLANGCI_LINT_VERSION}"
# ...
# FROM base AS gotestsum
# ...
# RUN ... GOBIN=/build/ GO111MODULE=on go install "gotest.tools/gotestsum@${GOTESTSUM_VERSION}"
# ...
# FROM base AS shfmt
# ...
# RUN ... GOBIN=/build/ GO111MODULE=on go install "mvdan.cc/sh/v3/cmd/shfmt@${SHFMT_VERSION}"
# ...
# FROM base AS gopls
# ...
# RUN ... GOBIN=/build/ GO111MODULE=on go install "golang.org/x/tools/gopls@latest"
# ...

COPY for-tomll/  /opt/for-tomll
WORKDIR /opt/for-tomll

RUN tar   -zxvf go-toml-1.8.1.tar.gz
RUN mkdir -p    /usr/local/go/src/github.com/pelletier/go-toml/
RUN cp    -r    /opt/for-tomll/go-toml-1.8.1/* /usr/local/go/src/github.com/pelletier/go-toml/

WORKDIR /usr/local/go
RUN GO111MODULE=off go install /usr/local/go/src/github.com/pelletier/go-toml/cmd/tomll

# ...............................................

COPY for-go-winres/  /opt/for-go-winres
WORKDIR /opt/for-go-winres

RUN tar -zxvf winres-0.2.1.tar.gz              && mkdir -p /usr/local/go/src/github.com/tc-hib/winres/
RUN tar -zxvf resize-20180222-archive.tar.gz   && mkdir -p /usr/local/go/src/github.com/nfnt/resize/
RUN tar -zxvf image-0.22.0.tar.gz              && mkdir -p /usr/local/go/src/golang.org/x/image/
RUN tar -zxvf cli-2.27.4.tar.gz                && mkdir -p /usr/local/go/src/github.com/urfave/cli/v2/
RUN tar -zxvf go-md2man-2.0.4.tar.gz           && mkdir -p /usr/local/go/src/github.com/cpuguy83/go-md2man/v2/
RUN tar -zxvf smetrics-20240522-archive.tar.gz && mkdir -p /usr/local/go/src/github.com/xrash/smetrics/
RUN tar -zxvf blackfriday-2.1.0.tar.gz         && mkdir -p /usr/local/go/src/github.com/russross/blackfriday/v2/
RUN tar -zxvf go-winres-0.3.1.tar.gz           && mkdir -p /usr/local/go/src/github.com/tc-hib/go-winres/

RUN cp -r /opt/for-go-winres/winres-0.2.1/*               /usr/local/go/src/github.com/tc-hib/winres/
RUN cp -r /opt/for-go-winres/resize-20180222-archive/*    /usr/local/go/src/github.com/nfnt/resize/
RUN cp -r /opt/for-go-winres/image-0.22.0/*               /usr/local/go/src/golang.org/x/image/
RUN cp -r /opt/for-go-winres/cli-2.27.4/*                 /usr/local/go/src/github.com/urfave/cli/v2/
RUN cp -r /opt/for-go-winres/go-md2man-2.0.4/*            /usr/local/go/src/github.com/cpuguy83/go-md2man/v2/
RUN cp -r /opt/for-go-winres/smetrics-20240522-archive/*  /usr/local/go/src/github.com/xrash/smetrics/
RUN cp -r /opt/for-go-winres/blackfriday-2.1.0/*          /usr/local/go/src/github.com/russross/blackfriday/v2/
RUN cp -r /opt/for-go-winres/go-winres-0.3.1/*            /usr/local/go/src/github.com/tc-hib/go-winres/

WORKDIR /usr/local/go
RUN GO111MODULE=off go install ./src/github.com/tc-hib/go-winres

# ...............................................

COPY for-gotestsum/  /opt/for-gotestsum
WORKDIR /opt/for-gotestsum

RUN tar -zxvf color-1.17.0.tar.gz                  && mkdir -p /usr/local/go/src/github.com/fatih/color/
RUN tar -zxvf fsnotify-1.7.0.tar.gz                && mkdir -p /usr/local/go/src/github.com/fsnotify/fsnotify/
RUN tar -zxvf go-colorable-20230322-archive.tar.gz && mkdir -p /usr/local/go/src/github.com/mattn/go-colorable/
RUN tar -zxvf go-isatty-20231017-archive.tar.gz    && mkdir -p /usr/local/go/src/github.com/mattn/go-isatty/
RUN tar -zxvf gotestdox-20240608-archive.tar.gz    && mkdir -p /usr/local/go/src/github.com/bitfield/gotestdox/
RUN tar -zxvf gotestsum-1.8.2.tar.gz               && mkdir -p /usr/local/go/src/gotest.tools/gotestsum/
RUN tar -zxvf mod-0.22.0.tar.gz                    && mkdir -p /usr/local/go/src/golang.org/x/mod/
RUN tar -zxvf pflag-1.0.5.tar.gz                   && mkdir -p /usr/local/go/src/github.com/dnephin/pflag/
RUN tar -zxvf shlex-20191202-archive.tar.gz        && mkdir -p /usr/local/go/src/github.com/google/shlex/
RUN tar -zxvf sync-0.9.0.tar.gz                    && mkdir -p /usr/local/go/src/golang.org/x/sync/
RUN tar -zxvf sys-0.27.0.tar.gz                    && mkdir -p /usr/local/go/src/golang.org/x/sys/
RUN tar -zxvf term-0.26.0.tar.gz                   && mkdir -p /usr/local/go/src/golang.org/x/term/
RUN tar -zxvf text-0.3.0.tar.gz                    && mkdir -p /usr/local/go/src/golang.org/x/text/
RUN tar -zxvf tools-0.22.1.tar.gz                  && mkdir -p /usr/local/go/src/golang.org/x/tools/

RUN cp -r /opt/for-gotestsum/color-1.17.0/*                  /usr/local/go/src/github.com/fatih/color/
RUN cp -r /opt/for-gotestsum/fsnotify-1.7.0/*                /usr/local/go/src/github.com/fsnotify/fsnotify/
RUN cp -r /opt/for-gotestsum/go-colorable-20230322-archive/* /usr/local/go/src/github.com/mattn/go-colorable/
RUN cp -r /opt/for-gotestsum/go-isatty-20231017-archive/*    /usr/local/go/src/github.com/mattn/go-isatty/
RUN cp -r /opt/for-gotestsum/gotestdox-20240608-archive/*    /usr/local/go/src/github.com/bitfield/gotestdox/
RUN cp -r /opt/for-gotestsum/gotestsum-1.8.2/*               /usr/local/go/src/gotest.tools/gotestsum/
RUN cp -r /opt/for-gotestsum/mod-0.22.0/*                    /usr/local/go/src/golang.org/x/mod/
RUN cp -r /opt/for-gotestsum/pflag-1.0.5/*                   /usr/local/go/src/github.com/dnephin/pflag/
RUN cp -r /opt/for-gotestsum/shlex-20191202-archive/*        /usr/local/go/src/github.com/google/shlex/
RUN cp -r /opt/for-gotestsum/sync-0.9.0/*                    /usr/local/go/src/golang.org/x/sync/
RUN cp -r /opt/for-gotestsum/sys-0.27.0/*                    /usr/local/go/src/golang.org/x/sys/
RUN cp -r /opt/for-gotestsum/term-0.26.0/*                   /usr/local/go/src/golang.org/x/term/
RUN cp -r /opt/for-gotestsum/text-0.3.0/*                    /usr/local/go/src/golang.org/x/text/
RUN cp -r /opt/for-gotestsum/tools-0.22.1/*                  /usr/local/go/src/golang.org/x/tools/

WORKDIR /usr/local/go
RUN GO111MODULE=off go install /usr/local/go/src/gotest.tools/gotestsum

# ...............................................

COPY for-shfmt/  /opt/for-shfmt
WORKDIR /opt/for-shfmt

RUN tar -zxvf diff-20241225-archive.tar.gz && mkdir -p /usr/local/go/src/github.com/pkg/diff/
RUN tar -zxvf editorconfig-0.3.0.tar.gz    && mkdir -p /usr/local/go/src/mvdan.cc/editorconfig/
RUN tar -zxvf sh-3.8.0.tar.gz              && mkdir -p /usr/local/go/src/mvdan.cc/sh/v3/
RUN tar -zxvf renameio-2.0.0.tar.gz        && mkdir -p /usr/local/go/src/github.com/google/renameio/v2/

RUN cp -r /opt/for-shfmt/diff-20241225-archive/* /usr/local/go/src/github.com/pkg/diff/
RUN cp -r /opt/for-shfmt/editorconfig-0.3.0/*    /usr/local/go/src/mvdan.cc/editorconfig/
RUN cp -r /opt/for-shfmt/sh-3.8.0/*              /usr/local/go/src/mvdan.cc/sh/v3/
RUN cp -r /opt/for-shfmt/renameio-2.0.0/*        /usr/local/go/src/github.com/google/renameio/v2/

WORKDIR /usr/local/go
RUN GO111MODULE=off go install /usr/local/go/src/mvdan.cc/sh/v3/cmd/shfmt

# ...............................................

WORKDIR /usr/local/go
RUN GO111MODULE=on GOPROXY=https://goproxy.cn,direct \
        go install "github.com/golangci/golangci-lint/cmd/golangci-lint@v1.55.2"

WORKDIR /usr/local/go
RUN GO111MODULE=on GOPROXY=https://goproxy.cn,direct \
        go install "golang.org/x/tools/gopls@v0.16.1"

# ###############################################

RUN rm -rf /opt/for-tomll
RUN rm -rf /opt/for-go-winres
RUN rm -rf /opt/for-gotestsum
RUN rm -rf /opt/for-shfmt

WORKDIR /go

总结

以上就是关于 Linux运维 Dockerfile 打包 Moby-26.1.4 编译 dockerd 环境 的全部内容。

更多内容可以访问我的代码仓库:

https://gitee.com/goufeng928/public

https://github.com/goufeng928/public


http://www.kler.cn/a/559613.html

相关文章:

  • 蛋白质研究常用数据库系列1
  • Vue2+OpenLayers实现热力图(提供Gitee源码)
  • centOS 7.9 安装JDK MYSQL
  • 蓝桥杯备赛-基础训练(三)哈希表 day16
  • SMT贴片加工关键技术解析
  • ET框架实现匹配功能(服务器端)
  • 第4章 4.1 Entity Framework Core概述
  • 【高可用】keepalived的试用与学习笔记
  • 【科研绘图系列】R语言绘制连线图和散点图(linechart scatter plot)
  • 5. Go 方法(结构体的方法成员)
  • WordPress ltl-freight-quotes-estes-edition sql注入漏洞(CVE-2024-13488)(附脚本)
  • Linux 命令大全完整版(05)
  • LLM2CLIP论文学习笔记:强大的语言模型解锁更丰富的视觉表征
  • 编程小白冲Kaggle每日打卡(11)--kaggle学堂:<Python>使用外部库
  • 已解决丨本地访问远程服务器Jupyter Notebook出现Opening Jupyter Application Refresh:
  • DeepSeek 助力 Vue 开发:打造丝滑的滑块(Slider)
  • 微财基于Flink构造实时变量池
  • HarmonyOS 开发套件 介绍 ——上篇
  • 腿足机器人之十- SLAM地图如何用于运动控制
  • 基于SpringBoot的校园消费点评管理系统