【系列3】使用Dockerfile创建带编译安装nginx服务的Centos Docker镜像

简介:

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

Dockerfile

run.sh              #启动ssh和apache服务的脚本

nginx-1.12.2.tar.gz     #http://nginx.org/en/download.html 

以上文件都放到/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

vim Dockerfile

文件内容如下:

#新生成的镜像是基于sshd:dockerfile镜像

FROM sshd:centos

MAINTAINER by cmzsteven

WORKDIR /usr/local/src


#安装wget

RUN yum install -y  wget

#下载并解压源码包

RUN wget  

RUN tar -zxvf nginx-1.8.0.tar.gz

WORKDIR nginx-1.8.0

#编译安装nginx

RUN yum install -y gcc make pcre-devel zlib-devel

RUN ./configure   --prefix=/usr/local/nginx   --with-pcre

RUN make

RUN make install

#修改Nginx配置文件,以非daemon方式启动

RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf


#启动Nginx服务

RUN /usr/local/nginx/sbin/nginx


#复制服务启动脚本并设置权限

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 .

查看镜像: 

[root@docker1 nginx_centos]# docker images

REPOSITORY         TAG         IMAGE ID            CREATED          VIRTUAL SIZE

nginx_dockerfile    centos        9ad55461b2fe        5 minutes ago       386.1 MB

nginx           centos         b738cec02b29        47 minutes ago      369.9 MB

sshd-centos       latest         64136bdc0cc8        46 hours ago        261.8 MB

centos           latest        0f73ae75014f        5 weeks ago         172.3 MB


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

[root@docker1 nginx_centos]#docker run -d -p 2224:22 -p 8001:80 -p 4443:443 nginx:centos /usr/local/sbin/run.sh

将容器的22端口、80端口和443端口分别映射到到宿主机上的2224端口、8001端口和4443端口,并运行服务脚本。 
也可以使用-P参数来让系统随机指定端口映射到22、80和443端口:

[root@docker1 nginx_centos]#docker run -d -P nginx:centos

因为在Dockerfile中指定了EXPOSE所以系统会自动将指定的端口映射出来;同时使用CMD来指定生成容器时所需要执行的角本,所以这里省略了“/usr/local/sbin/run.sh”。

 
2、查看新生成的容器:

[root@localhost nginx_centos]# docker ps -a

CONTAINER ID   IMAGE        COMMAND            CREATED        STATUS        PORTS              NAMES

c69d42541f52  nginx:centos  "/usr/local/sbin/run  26 seconds ago  Up 25 seconds  0.0.0.0:2224->22/tcp, 0.0.0.0:8001->80/tcp, 0.0.0.0:4443->443/tcp  high_colden


3、测试 
测试nignx:

[root@docker1 nginx_centos]# curl localhost:8001

测试成功!


测试ssh

[root@docker1 nginx_centos]# ssh localhost -p 2224

测试成功!


 各个版本的nginx源码安装包:http://down.51cto.com/data/2369729 


 YUM源  http://down.51cto.com/data/2387451 


本文转自 Mr_sheng 51CTO博客,原文链接:http://blog.51cto.com/sf1314/2044884


相关文章
|
1天前
|
监控 关系型数据库 MySQL
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
46 30
|
1月前
|
安全 Linux
CentOS下载ISO镜像的方法
访问CentOS官方网站(https://www.centos.org/download/),在“Downloads”页面找到ISO镜像下载链接,选择所需版本和架构(如x86_64)开始下载。CentOS分为Linux版和Stream版,前者每两年发行一次并提供10年安全维护,后者为滚动更新。旧版本可在Vault(https://vault.centos.org/)下载。建议选择DVD格式镜像,包含完整系统和常用软件。
935 14
CentOS下载ISO镜像的方法
|
15天前
|
缓存 Ubuntu Linux
Docker Buildx 简介与安装指南
Docker Buildx 是一个强大的工具,提供了多架构构建、并行构建和高级缓存管理等功能。通过正确安装和配置 Buildx,可以显著提升 Docker 镜像的构建效率和灵活性。希望本文能帮助你更好地理解和使用 Docker Buildx,以提高开发和部署的效率。
149 16
|
12天前
|
存储 虚拟化 Docker
Docker Desktop 4.38 安装与配置全流程指南(Windows平台)
Docker Desktop 是容器化应用开发与部署的一体化工具,支持本地创建、管理和运行 Docker 容器。4.38 版本新增 GPU 加速、WSL 2 性能优化和 Kubernetes 1.28 集群管理功能,适用于微服务开发和 CI/CD 流水线搭建。安装要求为 Windows 10 2004 及以上(64 位),需启用 Hyper-V 或 WSL 2。硬件最低配置为 4GB 内存、20GB 存储和虚拟化技术支持的 CPU。安装步骤包括启用系统功能、下载并运行安装程序,完成后配置镜像加速并验证功能。常见问题涵盖 WSL 2 安装不完整、磁盘空间清理及容器外网访问等。
913 12
|
13天前
|
弹性计算 运维 Ubuntu
在阿里云ECS云服务器上安装、配置及高效使用Docker与Docker Compose
本文介绍了在阿里云ECS上使用Ubuntu系统安装和配置Docker及Docker Compose的详细步骤。通过这些工具,可以快速部署、弹性扩展和高效管理容器化应用,满足开发和运维需求。内容涵盖Docker的安装、镜像源配置、创建Web程序镜像以及使用Docker Compose部署WordPress等实际操作,并分享了使用体验,展示了阿里云实例的高性能和稳定性。
188 4
|
4天前
|
Ubuntu Linux Docker
Docker 入门全攻略:安装、操作与常用命令指南
Docker 的世界非常广阔,这只是一个开始,请继续探索和学习 Docker 的高级特性和最佳实践。后续也会继续更新相关的理论与实践内容。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
6天前
|
Ubuntu Linux Docker
如何在Ubuntu 20.04系统中安装Docker
安装 Docker 引擎的步骤如下:首先更新系统包索引 (`sudo apt update`),安装必要依赖包 (`apt-transport-https` 等),添加 Docker 官方 GPG 密钥及 APT 仓库。接着再次更新包索引并安装 Docker 引擎及相关工具 (`docker-ce` 等)。最后启动 Docker 服务并设置开机自启,通过 `docker --version` 和运行测试容器 (`sudo docker run hello-world`) 验证安装是否成功。
60 0
|
Shell Docker 容器
在Docker中创建应用
本文讲的是在Docker中创建应用,【编者的话】下面内容是在基于Docker,用node.js开发和部署网络应用过程中获得的经验和教训。
1822 0
|
2月前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
298 93
|
1月前
|
网络协议 API Docker
Docker+consul容器服务的更新与发现
通过本文的介绍,我们详细探讨了如何结合Docker和Consul来实现容器服务的更新与发现。通过Consul的服务注册和发现功能,可以高效地管理和监控容器化服务,确保系统的高可用性和可扩展性。希望本文能帮助您在实际项目中更好地应用Docker和Consul,提高系统的可靠性和管理效率。
69 23