Docker多阶段构建
发表于|更新于|容器
|浏览量:
构建 Docker 镜像的时候,我们可以在机器上直接构建,也可以使用容器来构建,保证环境的统一性, 通过容器来构建会有一个问题,就是构建使用到的工具并不需要带入到真正的运行环境, 比如说使用 nodejs 的前端项目, 构建的时候需要 nodejs 或者 npm, 但是运行的时候需要的是 nginx. 多阶段构建即为构建完成后直接将代码塞进运行容器, 不会带入构建环境.
编写 Dockerfile
vim Dockerfile
1 | FROM node:14.20.1-buster AS build |
文章作者: 张理坤
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 杂烩饭!
相关推荐
2025-10-29
使用kubeadm部署一套高可用k8s集群1.21 for CentOS
基于 centos 使用 kubeadm 搭建集群, ubuntu部署文档, 有疑问的地方可以看 官方文档 准备机器 我的机器详情如下, 配置至少为 4C4G hostname IP 作用 public 10.0.0.3 ingress 和 apiserver 的负载均衡,nfs 存储 master1 10.0.0.11 k8s master 节点 master2 10.0.0.12 k8s master 节点 master3 10.0.0.13 k8s master 节点 worker1 10.0.0.21 k8s worker 节点 worker2 10.0.0.22 k8s worker 节点 每台机器都做域名解析,或者绑定 hosts(可选但建议) 123456vim /etc/hosts10.0.0.3 public kube-apiserver10.0.0.11 master110.0.0.12 master210.0.0.13 master3 每台机器都关闭防火墙和 SELinux 负载均衡机器必须要关闭,因为 644...

2026-05-29
使用 docker buildx 构建不同平台的镜像
一直使用 oracle 提供的免费 arm 云服务器,自己的 pc 又是 x86 架构,x86 构建出来的镜像不能在 arm 平台使用 使用 buildx 可以生成跨平台镜像,跨平台镜像就是同一个镜像名称,同一个 tag,但是 arm 机器和 amd64 机器拉下来的镜像 hash 是不一样的 创建 docker buildx 构建环境 这里的 driver 有两种,一种是 docker-container,一种是 docker,构建多平台版本只能使用 docker-container, –use 是将切换为默认 1docker buildx create --use --name buildx --node buildx --driver-opt network=host 准备 qemu 模拟器构建不通架构的镜像是通过 qemu 来模拟的,你会发现构建过程中,和 build 机器同架构的会构建很快,不同架构构建很慢。 12345678# 安装全部模拟器docker run --privileged --rm tonistiigi/binfmt --install all...
2026-05-29
Docker容器间优雅的互联
本文主要介绍如何优雅的让 Docker 容器和 Docker 容器之间相互通信,以及 Docker 容器如何和宿主机进行网络通信。 容器间网络通信docker 容器间通信常见的方式是使用 –link 进行连接,但是 Docker 已经弃用这种方式,并且容器数量一旦一多,–link 会显得很乱。官方推荐使用自定义网络来进行互联。 创建自定义网络1docker network create my-network 创建容器使用自定义 network比如一个 nginx 容器需要访问 php 容器 12docker run -p 80:80 --network my-network nginxdocker run --name php --network my-network php 这个时候 nginx 可以直接通过 php 来访问 php 容器,打开/etc/hosts 可以发现是 docker 自动帮你添加了解析 容器访问主机服务可以使用容器的网关 IP 来访问(nat 网络),不过使用 ip 不优雅,旧版本的 Docker 可以使用 host.docker...
2026-05-29
docker官方私有仓库registry部署与使用
一般来说大家用容器镜像都选择 harbor,有个管理界面,还支持权限控制、漏洞扫描等,但是我公司有个客户的环境只允许通过跳板机登录 Linux 机器,没法使用浏览器,另外也只是需要一个简单一点的、好维护的仓库,找了一下,这个比较简单。如果需要更专业的私有镜像仓库,可以选择 harbor(免费)或者 jFrog 家的(收费) 自签名证书123456mkdir -p certsopenssl req \ -newkey rsa:4096 -nodes -sha256 -keyout certs/i.com.key \ -addext "subjectAltName = DNS:hub.i.com" \ -x509 -days 3650 -out certs/i.com.crt docker 信任证书将文件复制到每个 Docker 上 主机。您无需重新启动 Docker。 12mkdir -p /etc/docker/certs.d/hub.i.com/cp i.com.crt /etc/docker/certs.d/hub.i.com/ 如果更换了默认端...

2026-05-29
通过docker容器查看run命令
公司有一台服务器上运行着一个服务,通过 docker start 启动,已经没有文档记录如何搭建的了。现在需要迁移,记录一下获取 docker run 命令的方法 通过模版处理 docker inspect 的数据来获取使用 runlike 来获取模版文件来自https://gist.githubusercontent.com/efrecon/8ce9c75d518b6eb863f667442d7bc679/raw/run.tpl 假设容器名是 mysql, 命令后面可以跟容器名或者容器 id。命令如下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161...
2026-05-29
Docker常用配置
docker 安装官方安装脚本1curl -fsSL get.docker.com | bash 阿里云安装(centos)12345678910111213# step 1: 安装必要的一些系统工具sudo yum install -y yum-utils device-mapper-persistent-data lvm2# Step 2: 添加软件源信息sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# Step 3: 更新并安装Docker-CEsudo yum makecache fastsudo yum -y install docker-ce# Step 4: 开启Docker服务sudo systemctl start docker.service docker-compose 安装1sudo curl -L "https://github.com/docker/compose/releases/dow...
评论
公告
此博客为我记录运维工作总结所用,供网友阅读参考,如有侵权,请通知我,我会核实后进行处理。
欢迎加博主微信,进微信运维技术交流群:
