Docker 制作Nginx镜像

本文详细介绍了如何使用Docker构建Nginx镜像的两种方法:一是通过现有镜像安装调试后制作镜像,二是利用Dockerfile从基础镜像开始构建。文中涉及到创建容器、安装配置Nginx、配置为前台启动、使用dockercommit制作镜像以及Dockerfile的编写和使用。此外,还提及了如何挂载目录和管理Nginx的配置文件。

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

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:镜像的制作方式有两种:
一种是用镜像生成容器安装调试好后再制作成自己的镜像
一种是 使用Dockerfile文件从官网的系统源始镜像开始制作自己的镜像


提示:以下是本篇文章正文内容,下面案例可供参考

一、第一种用镜像生成容器安装调试好后再制作成自己的镜像

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

1. 搜索镜像

# docker search centos

NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                             The official build of CentOS.                   6602      [OK] 

2. 下载镜像,如有可以跳过这步

# docker pull centos:latest

3. 查看镜像

# docker images

# docker images
REPOSITORY                                               TAG        IMAGE ID       CREATED         SIZE
hello-world                                              latest     d1165f221234   3 months ago    13.3kB
centos                                                   latest   300e315adb2f   6 months ago    209MB

1.2 使用镜像创建容器并进入容器

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

[root]# docker run -it --name centos.nginx centos /bin/bash
[root@32296d8d7530 /]# 

1.3 创建epel源和安装nginx

创建epel源文件

#先查看下官网信息: http://nginx.org/en/linux_packages.html#stable
要设置 yum 存储库,请创建以/etc/yum.repos.d/nginx.repo 以下内容命名的文件 :

 稳定版:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
主线版:
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

安装nginx

# yum install yum-utils //先决条件,这个可以不用管,官网有提
# yum install nginx -y

在这里插入图片描述

查看下版本

# nginx -v

nginx version: nginx/1.20.1

查看安装目录

# rpm -ql nginx

[root@3dcaed4646f2 /]# rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/mime.types
/etc/nginx/modules
/etc/nginx/nginx.conf
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
/usr/lib/.build-id
/usr/lib/.build-id/1d
/usr/lib/.build-id/1d/3ae6e2bbd9ecc1b968a5b9272ba0f431827ac1
/usr/lib/.build-id/e8
/usr/lib/.build-id/e8/4bc53181babc7ef9cb59c1239522ffe45d375b
/usr/lib/systemd/system/nginx-debug.service
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx
/usr/lib64/nginx/modules
/usr/libexec/initscripts/legacy-actions/nginx
/usr/libexec/initscripts/legacy-actions/nginx/check-reload
/usr/libexec/initscripts/legacy-actions/nginx/upgrade
/usr/sbin/nginx
/usr/sbin/nginx-debug
/usr/share/doc/nginx-1.20.1
/usr/share/doc/nginx-1.20.1/COPYRIGHT
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx
/usr/share/nginx/html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/var/cache/nginx
/var/log/nginx


1.4 配置nginx为前台启动模式

# 在nginx的配置文件中加入如下参数
vi /etc/nginx/nginx.conf

daemon off;                                       ##关闭守护进程;

使用exit退出容器

1.5 使用docker commit命令制作镜像

# docker ps -a
在这里插入图片描述
制作镜像
docker commit -m “nginx” -a “centos.nginx” -c ‘CMD [“/usr/sbin/nginx”]’ 3dcaed4646f2 centos-nginx


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

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

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

3dcaed4646f2 容器ID,就是希望将哪个容器重新制作

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

在这里插入图片描述

使用新镜像创建容器

#docker run -d -p 83:80 --name nginx03 centos-nginx:latest
#docker start nginx03

在这里插入图片描述

二 使用Dockerfile文件从官网的系统源始镜像开始制作自己的镜像

2.1 在本地新建一个空目录docker-c,创建nginx源文件和Dockerfile文件

# mkdir docker-c
# cd docker-c

2.2 创建nginx源文件和Dockerfile文件

vi nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

2.3 Dockerfile文件

vi dockerfile

# This is My first Dockerfile
# Version 1.0
# Author: ives
# Base images
FROM centos:latest
ADD nginx.repo /etc/yum.repos.d/
RUN yum install nginx -y
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN useradd -s /sbin/nologin -M www
EXPOSE 80
CMD ["nginx"]

注意: Dockerfile和nginx.repo在同一目录下 ,本目录下不要有其他东西

2.4 创建镜像:

docker build -t nginx:v1 .
在这里插入图片描述
在这里插入图片描述

#docker images
# docker run -d -p 85:80 --name nginx05 nginx:v1               ## 使用新镜像创建容器 
# docker start nginx05
# docker ps
CONTAINER ID   IMAGE      COMMAND   CREATED          STATUS          PORTS                               NAMES
bdada9573359   nginx:v1   "nginx"   10 minutes ago   Up 10 minutes   0.0.0.0:85->80/tcp, :::85->80/tcp   nginx05
 

在这里插入图片描述


Docker Nginx容器-挂载目录

#docker run -d -p 85:80 --name nginx01 \
-v /data/nginx/log:/var/log/nginx  \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/conf:/etc/nginx/conf.d \
registry.cn-hangzhou.aliyuncs.com/ivesgdidf/nginx

拷贝临时容器默认文件到默认路径
直接挂载,默认配置文件不会生成,所以需要从一个临时的容器中复制一份过来

# docker run -d -p 83:80 --name nginx03 centos-nginx:latest
# docker start nginx03
# docker cp nginx03:/usr/share/nginx/html/index.html /data/nginx/html
# docker cp nginx03:/etc/nginx/conf.d/default.conf /data/nginx/conf/
# docker stop nginx03 | docker rm nginx03                 ##删除临时容器
# docker restart nginx01

参考:

https://developer.aliyun.com/article/543025

https://www.cnblogs.com/withfeel/p/11670687.html

Dockerfile 使用说明

https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

https://docs.docker.com/engine/reference/builder/

补充事项有空可以看看,nging官网上的

在 Docker 主机上维护内容和配置文件
创建容器后,可以将Docker主机上的本地目录挂载到容器内的目录中。NGINX 镜像使用默认的 NGINX 配置,它/usr/share/nginx/html用作容器的根目录并将配置文件放在/etc/nginx. 对于内容在本地目录中/var/www且配置文件在 中的 Docker 主机/var/nginx/conf,请运行以下命令:
$ docker run --name mynginx2 --mount type=bind,source=/var/www,target=/usr/share/nginx/html,readonly --mount source=/var/nginx/conf,target=/etc/nginx/conf,readonly -p 80:80 -d nginx
对 Docker 主机上本地目录中的文件所做的任何更改都会反映在目录和容器中。该选项意味着这些目录只能在 Docker 主机上更改,而不能从容器内更改。/var/www and /var/nginx/conf/usr/share/nginx/html/etc/nginxreadonly

docker中管理nginx的其他事项参考: https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-docker/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风云笑gg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值