通过 Alpine 创建一个Nginx 容器镜像
·
alpine 容器镜像是基于Alpine Linux制作的轻量级容器镜像,具有体积小、安全性高、启动客等特点。
为什么我们不直接使用官方的 nginx 容器镜像呢?
因为我们可以通过这个过程中定制模块、精简功能、可以锁定版本不至于说升级以后很多功能就变了。也可以避免“黑盒”依赖。安全性也更高。
那么我们下面就开始做自己的 nginx 容器镜像吧,当然首先,我们要安装好 docker、docker-compose 和 拉取 alpine:latest 镜像。
那么我们下面就创建一个 docker-compose.yml 文件,这样我们可以方便的对启动的容器实例进行j启动和管理。
version: '3.8'
services:
smsp-web:
image: alpine:latest
container_name: my-nginx
# Alpine 默认没有长期运行的前台进程,所以加一个简单的命令让它保持运行
command: tail -f /dev/null
restart: always
就简单的启动起来保持运行就好。
容器运行起来后,我们要先把我们的 nginx 的源码包复制到容器里面。
docker cp /home/nginx-1.26.1.tar.gz my-nginx:/home
# 这是要将宿主机的 /home 目录下面的 nginx-1.26.1.tar.gz 文件复制到 my-nginx 这个容器实例的 /home 目录下面
我们下面就进入容器内部去部署一个 nginx 服务。
docker exec -it my-nginx /bin/sh
这样,我们就进入到容器内部了。
进入容器以后,我们一般要先升级、安装一下编译 nginx 需要用到的有些依赖。
# 升级
apk update
# 安装依赖
apk add --no-cache build-base pcre pcre-dev zlib zlib-dev openssl openssl-dev linux-headers curl wget tar bash shadow
# 清除 apk 安装缓存
rm -rf /var/cache/apk/*
下面我们开始配置用户信息和目录
adduser -D -s /sbin/nologin www
接下来就是解压源码包,配置、编译安装了。
cd /home
tar -zxvf nginx-1.26.1.tar.gz
cd nginx-1.26.1/
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-stream
make && make install
好了,到这里,我们就完成容器里面的 nginx安装了。
配置文件到目录是:/usr/local/nginx/conf
nginx 服务启动命令是:/user/local/nginx/sbin/nginx
接下来我们可以推出容器,进行下面的步骤,也可以进行一些测试。
下面我们退出容器实例。
退出来以后,在my-nginx 容器实例正在运行的情况下,我们打包成一个新的容器镜像
docker commit my-nginx my-nginx-i:2025.9.29
# 前面的 my-nginx 是正常运行是容器实例; 后面的my-nginx-i:2025.9.29 是我们的容器名称,其中2025.9.29是容器的标签,我一般是这样用年.月.日来做的。要是一天产生多个版本,还可以在后面再加一节,例如:2025.9.29.1
这个时候,我们再 运行 docker images 命令就可以看到 my-nginx-i 这个容器镜像了。
更多推荐



所有评论(0)