Build-Docker-Image-from-Zero: 从零构建Docker镜像
Build-Docker-Image-from-Zero
荣涛 2022-03-11
文档修改日志
日期 | 修改内容 | 修改人 | 备注 |
---|---|---|---|
2022-03-11 | 创建 | 荣涛 |
引言
本文档主要讲构建基础Docker(Podman)镜像。
从零构建docker镜像示例
参考连接为: Creating container base image of CentOS 和 GitHub: Creating minimal CentOS docker image from scratch。
- 首先为docker创建rootfs
export centos_root="`pwd`/centos_image/rootfs"
mkdir $centos_root
rpm --root $centos_root --initdb
sudo dnf reinstall --downloadonly --downloaddir . centos-stream-release
sudo dnf reinstall --downloadonly --downloaddir . centos-stream-repos
sudo dnf reinstall --downloadonly --downloaddir . centos-gpg-keys
rpm --root $centos_root -ivh centos-*.rpm
rpm --root $centos_root --import $centos_root/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
sudo dnf -y --installroot=$centos_root --setopt=tsflags='nodocs' --setopt=override_install_langs=en_US.utf8 install dnf
#sed -i "/distroverpkg=centos-release/a override_install_langs=en_US.utf8\ntsflags=nodocs" $centos_root/etc/yum.conf
sudo cp /etc/resolv.conf $centos_root/etc
sudo chroot $centos_root /bin/bash <<EOF
dnf install -y procps-ng iputils
dnf clean all
EOF
sudo rm -f $centos_root/etc/resolv.conf
- 创建docker镜像
这步的前提是已经安装了docker,安装方法:
sudo dnf install -y docker
sudo systemctl start docker
然后生成docker镜像文件:
# 生成Docker镜像并导入
sudo tar -C $centos_root -c . | docker import - deleteme
# 查看镜像
docker images
# 运行镜像
docker run --rm deleteme cat /etc/redhat-release
镜像制作成功。
使用buildah构建
参考 Getting started with Buildah。
使用Dockerfile从基础镜像构建
首先,buildah可以从Dockerfile构建,如下Dockerfile:
FROM fedora:28
LABEL maintainer Chris Collins <collins.christopher@gmail.com>RUN dnf install -y tar gzip gcc make \&& dnf clean allADD http://ftpmirror.gnu.org/hello/hello-2.10.tar.gz /tmp/hello-2.10.tar.gzRUN tar xvzf /tmp/hello-2.10.tar.gz -C /optWORKDIR /opt/hello-2.10RUN ./configure
RUN make
RUN make install
RUN hello -v
ENTRYPOINT "/usr/local/bin/hello"
然后,构建即可:
sudo buildah bud -t hello .
# 查看
sudo buildah images
# 推送
sudo buildah push hello:latest docker-daemon:hello:latest
从scratch
构建
参考链接
- 红帽:How to build tiny container images
- GitHub: Creating minimal CentOS docker image from scratch
- 构建基础镜像
- Creating container base image of CentOS
- Getting started with Buildah
Build-Docker-Image-from-Zero: 从零构建Docker镜像相关推荐
- 在linux上运行python脚本(安装pytorch踩坑记录,pyinstaller使用方式,构建docker镜像)
背景 脚本需要导入pytorch等库才能运行. 脚本在windows上运行成功,尝试放到linux上运行. linux服务器内存较小. 方法一:在linux上安装依赖 把脚本放到linux上,直接安装 ...
- Docker源码分析(十一):镜像存储
http://www.infoq.com/cn/articles/docker-source-code-analysis-part11 1.前言 Docker Hub汇总众多Docker用户的镜像,极 ...
- Docker 入门到实战教程(一)介绍Docker
一. Docker简介 1.1 什么是虚拟化? 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现 ...
- SpringBoot 项目构建 Docker 镜像调优实践
点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:超级小豆丁 http://www.mydlq.club/article/16/ PS ...
- docker ss-pannel_如何构建Docker镜像
构建Docker 镜像有如下两种方法: (一)使用docker commit命令. (二)使用docker build命令和 Dockerfile 文件. 在这里并不推荐使用docker commit ...
- 在内网中使用maven_maven构建docker镜像三部曲之三:推送到远程仓库(内网和阿里云)-Go语言中文社区...
在上一章<maven构建docker镜像三部曲之二:编码和构建镜像>的实战中,我们将spring boot的web工程构建成docker镜像并在本地启动容器成功,今天我们把docker-m ...
- 通过Dockerfile构建Docker镜像
Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建. Dockerfile支持Shell类的行尾添 ...
- 【Spring boot 实战】使用Maven插件构建Docker镜像
本文主要介绍如何使用Maven插件将SpringBoot应用打包为Docker镜像,并上传到私有镜像仓库Docker Registry的过程. 使用Maven构建本地Docker镜像 我们以项目spr ...
- 打包应用和构建Docker镜像(docker在windows上)
在构建Docker时编译应用 一般有两种方法在构建镜像时进行打包应用.第一种方法就是使用基本的镜像,该镜像包括应用平台和构建工具,因此在Dockerfile中,复制源代码到镜像中并在构建镜像时编译ap ...
最新文章
- [原创 URL重写步骤
- 牛客题霸 转圈打印矩阵 C++题解/答案
- wsl2无法使用systemctl_Win 10 更新,Linux 内核的 WSL 2 开始上线
- Eclipse安装Rust插件 (Ubuntu)
- SAP License:ERP具有的九种优势
- 1.Echarts的坑:切换tab时,echart显示默认的100px
- system32文件夹里的文件详解
- (转)GB2312简体中文编码表
- 最新最全的免费股票数据接口--沪深A股指数实时交易数据API接口(七)
- win10 如何设置绿色保护色?
- 谷歌地图高精度模型提取1
- 桥接模式与Nat模式的区别
- Unity mesh换装
- Spring Security 小记 - @Secured(), @PreAuthorize() 及 @RolesAllowed()
- 分分钟搞定python破解无线wifi
- [iOS] MUI-WebView模式集成到iOS应用
- 图形学实验三 图形几何变换
- 操作系统之进程管理习题
- acwing1017-怪盗基德的滑翔翼
- CAS单点登录四-单点登出
热门文章
- SpringMVC框架----ModelAttribute注解
- 必知必会SQL(贰) --索引(聚集[簇]索引和非聚[簇]集索引) vs 全文本索引
- linux下 gdb+coredump 调试偶发crash的程序
- [leetcode]242. Valid Anagram判断两个字符串是不是包含相同字符的重排列
- Oracle SQL Tips
- Iphone客户端程序员半年工作总结
- Python打印到文件
- 高度固定 宽度裁剪_高领落肩连衣裙的制版裁剪教程才智服装
- python的进程和线程定位_Python | 进程 线程的理解拾遗
- 8g ubuntu 树莓派4b_树莓派4B如何安装ubuntu20.04