通过Dockerfile创建nginx服务的Centos镜像

本文介绍如何使用Dockerfile构建包含Nginx和SSH服务的Docker镜像,并通过具体步骤演示从创建脚本到最终镜像生成及测试的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过Dockerfile生成镜像 

在宿主机上准备的文件清单:

Dockerfile

#sshapache的角本

run.sh

以上文件都放到/root/nginx_centos目录下

mkdir -p /root/nginx_centos

cd /root/nginx_centos

一、准备run.sh文件 
在/root/nginx_centos目录新建run.sh

vim run.sh

#!/bin/bash

/usr/sbin/sshd &

/usr/local/nginx/sbin/nginx

二、准备Dockerfile 
在/root/nginx_centos目录新建Dockerfile

cat Dockerfile

#新生成的镜像是基于sshd:dockerfile镜像
FROM sshd-centos
MAINTAINER by cmzsteven
WORKDIR /usr/local/src
#安装wget
RUN yum install -y  wget
#下载并解压源码包
RUN wget http://nginx.org/download/nginx-1.12.1.tar.gz
RUN tar zxvf nginx-1.12.1.tar.gz
WORKDIR nginx-1.12.1
#编译安装nginx
RUN yum -y install gcc gcc-c++ pcre-devel zlib-devel openssl*
RUN useradd -M -u 40 -s /sbin/nologin  nginx
RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module --with-http_realip_module
RUN make
RUN make install
#启动Nginx服务
RUN ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
RUN /usr/local/nginx/sbin/nginx
#修改Nginx配置文件,以非daemon方式启动
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
#复制服务启动脚本并设置权限
ADD run.sh /usr/local/sbin/run.sh
RUN chmod 755 /usr/local/sbin/run.sh
#设置生成容器时需要执行的脚本
CMD ["/usr/local/sbin/run.sh"]
#开放22、80、443端口
EXPOSE 22
EXPOSE 80
EXPOSE 443


需要注意的是:在Dockerfile文件中更换当前目录不可以用“cd”命令,而要改用“WORKDIR”. 
三、根据Dockerfile生成镜像

docker build -t nginx_dockerfile:centos .

查看镜像:

ocker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

nginx_dockerfile    centos              28d333149027        6 minutes ago       692MB

nginx               centos              bb2863c49d58        2 hours ago         586MB

sshd-centos         latest              0742cfe06535        3 hours ago         328MB

centos              latest              36540f359ca3        3 weeks ago         193MB

四、根据镜像生成的容器并进行测试 
1
、生成新的容器

docker run -d -p 2224:22 -p 8001:80 -p 4443:443 nginx_dockerfile:centos /usr/local/sbin/run.sh

将容器的22端口、80端口和443端口分别映射到到宿主机上的2224端口、8001端口和4443端口,并运行服务脚本。 
2、测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值