Docker 制作Nginx镜像

摘要:
Dockerfile是一个包含所有用户命令的文本文档,可以在命令行上调用这些命令以形成图像。使用dockerbuild命令的用户可以读取dockerfile中的连续指令并自动构建图像。查看图像dockerimages#运行容器dockerun--namemynginx-d-p8123:80mynginx#查看容器dockers#根据构建的图像访问nginx

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

   

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

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

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

下载centos系统镜像

docker pull centos

Docker 制作Nginx镜像第1张

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

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

Docker 制作Nginx镜像第2张

安装epel源和nginx

yum install epel-release -y

yum install nginx -y

Docker 制作Nginx镜像第3张

   

Docker 制作Nginx镜像第4张

   

配置nginx为前台启动模式

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

vi /etc/nginx/nginx.conf

daemon off;

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

查看容器

docker ps -a

Docker 制作Nginx镜像第5张

制作镜像

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 制作Nginx镜像第6张

使用新镜像启动容器

先查看镜像

docker images

Docker 制作Nginx镜像第7张

使用新镜像启动容器

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

Docker 制作Nginx镜像第8张

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

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

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

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

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

Docker 制作Nginx镜像第9张

第二种,全新制作自己的容器使用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;"]
#ENTRYPOINTCMD连用时,CMD的命令是ENTRYPOINT命令的参数,两者连用相当于nginx -g "daemon off;"而当一起连用的时候命令格式最好一致(这里选择的都是json格式的是成功的,如果都是sh模式可以试一下)

#dockerfile 文件内容结束

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

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

Docker 制作Nginx镜像第10张

查看镜像

docker images

Docker 制作Nginx镜像第11张

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

Docker 制作Nginx镜像第12张

#查看容器
docker ps

Docker 制作Nginx镜像第13张

#访问nginx

Docker 制作Nginx镜像第14张

免责声明:文章转载自《Docker 制作Nginx镜像》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇tinymce 上传图片空间(转)QT多线程及通过事件进行通信(通过自定义事件,然后QApplication::postEvent给主界面,我之前用的是信号槽)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PHP Laravel的容器化开发与部署

本文说明一下PHP Laravel(包含Lumen)开发下的Docker化部署,写到了使用 CentOS 6.9、CentOS 7.0 进行生产环境部署,并使用了 Kong 来作为 API 网关进行鉴权。 Docker开发环境 首先,我们需要在开发环境下安装 Docker。这部分网络上的资料汗牛充栋,就不赘述了。 在项目根目录下创建 Dockerfile。...

制作1G的U盘启动盘

用了 Usboot、HP 的格式化工具(HPUSBFW)等许多工具,很难制成可启动的 U 盘。后来经反复测试及摸索,通过简单的方法,终于制作成功了可启动型 U 盘(我的主板是:Seltek SL-85DL-TC 的老主板),也曾在技嘉945的主板上启动成功。现将制作方法写出来,献给那些想用 U 盘启动到 dos 的朋友。 一、准备工作: 1.HP 的格式化...

国产化 飞腾芯片 银河麒麟 docker部署netcore

1、背景介绍 此文档是基于arm64架构服务器编写的,写此文档时使用的是银河麒麟系统。银河麒麟系统自带docker,所有我们不需要再安装docker,而且银河麒麟系统中的docker已经设置了开机自启,我们不需要设置开机自启。如果之后安装单机版的电脑没有docker,则需要我们在脚本中提供安装docker的命令,并设置docker开机自启。 2、单机版do...

Docker学习以及镜像制作流程

一、何为Docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能...

4.Cobbler自动化安装Windows10

<!doctype html>02_3部署Windows10 定制Win10 PE 下载ADK工具https://go.microsoft.com/fwlink/p/?LinkId=526740 这个下下来之后安装完成之后,在你指定的目录中还有一个adksetup.exe。再次进行安装,并且选择以下功能 安装完成之后,先打开部署和映像工...

docker 安装 activemq

1、先下载镜像信息到本地服务器。 这里不加版本号,那么安装的就是最新版本。 docker pull docker.io/webcenter/activemq 2、检查下镜像情况 docker images 3、安装activemq 映射端口与之前原来的一致 // 安装这里可以是镜像名称加版本号,也可以是镜像IDdocker run -d --name...