Docker 制作Nginx镜像

参考文章:https://www.jianshu.com/p/dc4cd0547d1e

镜像的制作方式有两种,一种是下载别人的镜像之后再制作成自己的镜像,一种是从头开始制作自己的镜像

第一种,下载别人的镜像来修改。

安全起见下载官方的centos系统镜像,在该系统内安装nginx之后,在封装成镜像

下载centos系统镜像

docker pull centos

使用镜像启动容器并进入容器

docker run -it --name centos.nginx centos /bin/bash

安装epel源和nginx

yum install epel-release -y

yum install nginx -y

配置nginx为前台启动模式

在nginx的配置文件中加入如下参数

vi /etc/nginx/nginx.conf

daemon off;

使用exit退出容器,然后使用docker commit命令制作镜像

查看容器

docker ps -a

制作镜像

docker commit -m "nginx" -a "centos-nginx" -c ‘CMD ["/usr/sbin/nginx"]‘ 86ae1d7284e3 centos-nginx

-m 来指定提交的说明信息,跟我们使用的版本控制工具一样;

-a 可以指定更新的用户信息;之后是用来创建镜像的容器的 ID;最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息;

-c 制作镜像之后执行的命令

86ae1d7284e3 容器ID,就是希望将哪个容器重新制作

centos-nginx 制作之后的镜像名称

使用新镜像启动容器

先查看镜像

docker images

使用新镜像启动容器

docker run --name nginx -p 8888:80 -d centos-nginx

--name nginx 为容器定义名称,名称为nginx

-p 8888:80 将宿主机的8888端口映射到容器内的80端口

-d 指定该容器在后天运行

cetnos-nginx 指定使用centos-nginx镜像来创建容器

使用浏览器访问容器内的nginx

第二种,全新制作自己的容器使用Dockerfile文件

Dockerfile是使用源代码构建docker的镜像,编辑一个Dockerfile,而后根据此文件制作;

docker可以自动通过读取Dockerfile中的指令,自动构建镜像。

Dockerfile是一个文本文档包含所有用户的命令,可以在命令行上调用组建一个镜像。

使用docker build命令的用户可以读取docker file中的连续指令,自动构建一个镜像。

示例使用dockerfile文件制作nginx的镜像:

#创建工作目录
mkdir nginx

#进入nginx目录,创建nginx测试页,创建dockerfile文件

cd nginx/

vim index.html
<h1> nginx test page </h1>

vim dockerfile

#dockerfile 文件内容开始

FROM centos:latest #基准镜像
MAINTAINER "Withdocker" #作者信息
WORKDIR /usr/local/src/ #工作目录
ENV NG_VERSION nginx-1.16.0 #定义环境变量
RUN yum -y install epel-release #安装epel仓库
RUN yum -y install wget && wget http://nginx.org/download/$NG_VERSION.tar.gz && tar xzvf $NG_VERSION.tar.gz #下载nginx文件并解压
#安装编译依赖包
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel && yum install -y pcre-devel libxslt-devel gd-devel GeoIP GeoIP-devel GeoIP-data
RUN yum clean all #清理仓库
RUN useradd -M -s /sbin/nologin nginx #创建nginx用户
WORKDIR /usr/local/src/$NG_VERSION #切换工作目录
#编译安装nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install
ADD index.html /usr/local/nginx/html #复制测试页面到容器中
VOLUME /usr/local/nginx/html #设置容器中要挂在到宿主机的目录
ENV PATH /usr/local/nginx/sbin:$PATH #设置sbin环境变量
EXPOSE 80/tcp #暴露80端口
ENTRYPOINT ["nginx"]
CMD ["-g","daemon off;"]
#当ENTRYPOINT和CMD连用时,CMD的命令是ENTRYPOINT命令的参数,两者连用相当于nginx -g "daemon off;"而当一起连用的时候命令格式最好一致(这里选择的都是json格式的是成功的,如果都是sh模式可以试一下)

#dockerfile 文件内容结束

#构建镜像
docker build ./ -t mynginx

#指明构建的根目录,有dockerfile的就是构建根目录,-t指明tag标签,执行该命令后程序会读取并执行dockerfile文件内的所有命令。下图为执行成功的结果截图。

查看镜像

docker images

#根据构建的镜像运行容器
docker run --name mynginx -d -p 8123:80 mynginx

#查看容器
docker ps

#访问nginx

原文地址:https://www.cnblogs.com/withfeel/p/11670687.html

时间: 2024-09-29 08:09:20

Docker 制作Nginx镜像的相关文章

docker之NGINX镜像构建

Nginx是一个高性能的Web和反向代理服务器,它具有很多非常优越的特性:1.作为Web服务器.2.作为负载均衡服务器.3.作为邮件代理服务器.4.安装及配置简单.接下来我们介绍在docker构建nginx镜像:Docker镜像构建分为两种方式:一.手动构建二.Dockerfile(自动构建) 一.Docker镜像手动构建实例: 基于centos镜像进行构建nginx镜像 #下载镜像 [[email protected] ~]# docker pull centos [[email protec

Dockerfile介绍、Docker制作jdk镜像

Dockerfile介绍.Docker制作jdk镜像 目标 1.Dockerfile简介 2.Docker制作jdk镜像 Dockerfile简介 dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像, 另外,使用Dockerfile去构建镜像好比使用pom去构建maven项目一样,有异曲同工之妙 dockerfile基本结构 Dockerfile 由一行行命令语句组成, 并且支持以#开头的注释行,一般而言, Dockerfile 主体内容

04 Docker 制作自定义镜像包

制作自定义镜像包的两种方式 1.创建容器并对容器进行修改,然后打包容器为镜像 2.使用Dockerfile编排镜像 自定义镜像 1.创建一个容器 docker run -itd centos 2.进入容器进行修改配置 docker exec -it 容器id bash 停止容器,不是必须的 3.创建镜像并验证 docker commit 容器id 镜像名称:标签 4.打包镜像 docker save 镜像名称 > 包名.tar 使用 Dockerfile 编排镜像 给容器配置 yum 源 查看宿

docker 制作tomcat 镜像并应用

tomcat支持自主应用并对外开放端口: 1.制作Dockerfile 以centos为基础,远程ssh登录:新建Dockerfile,编辑如下: FROM tomcat MAINTAINER ****************** ADD web.xml /usr/local/tomcat/webapps/manager/WEB-INF/ ADD tomcat-users.xml /usr/local/tomcat/conf/ ADD server.xml /usr/local/tomcat/c

docker制作jdk镜像

同级目录下创建一个Dockerfile,必须叫这个名字 [[email protected] file]# ll total 181296 -rw-r--r--. 1 root root 0 Oct 31 10:34 Dockerfile -rw-r--r--. 1 root root 185646832 Mar 28 2019 jdk-8u181-linux-x64.tar.gz 编写Dockerfile [[email protected] file]# vim Dockerfile [[e

(五)Docker镜像管理2之nginx镜像制作

下面我们来制作一个Nginx的镜像,通过编译安装方式来完成. 重新制作一个基础镜像 文件内容 # Version: 0.0.1 # 指定使用哪个基础镜像 FROM centos:6.6 # 说明该镜像的制作者和联系方式 MAINTAINER Rex.chen [email protected] #设置标签,不是必须的只是为了说明里面的版本查看起来方便 LABEL Discrition="更换了epel源,并安装了相应库和组件" #备份系统默认的epel源,并设置新的EPEL源 RUN 

Docker之二----镜像制作

Docker镜像制作 1.Docker镜像有没有内核? 从镜像大小上面来说,一个比较小的镜像只有十几MB ,而内核文件需要一百多兆, 因此镜像里面是没有内核的,镜像在被启动为容器后将直接使用宿主机 的内核,而镜像本身则只提供相应的rootfs,即系统正常运行所必须的用户空间的文件系统,比如 /dev,/,/proc,/bin /etc等目录,所以容器当中基本是没有/boot目录的, 而/boot当中保存的就是与内核相关的文件和目录 . 2.为什么没有内核? 由于容器启动和运行过程中是直接使用宿主

Docker中启动Nginx镜像,配置aspnetcore 网站代理

1.使用docker 下载nginx 镜像  docker pull nginx 2.启动nginx docker run --name nginx -p 80:80 -d nginx 这样就简单的把nginx启动了,但是我们想要改变配置文件nginx.conf ,进入容器,命令: docker exec -it nginx bash nginx.conf配置文件在 /etc/nginx/  下面,但是你使用vim nginx.conf 或者vi nginx.conf 会发现vi或者vim命令没

Dockerfile构建nginx镜像以及使用nginx -g &quot;daemon off;&quot;方式前台运行

编写安装nginx的shell脚本 #!/bin/bash yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel cd /usr/local/nginx-1.16.0 ./configure --prefix=/usr/local/nginx && make && make install dockerfile FROM centos:7 ADD nginx-1.16.0.tar.gz /usr/lo