Docker 安装 Nginx容器 配置以及重新生成镜像

2023-10-29

目录

1、查看是否存在nginx镜像

2、搜索可用的nginx镜像,下载nginx镜像

3、创建并启动nginx容器

4、进入容器,对相关文件进行配置

5、更新镜像

6、将由容器生成的镜像push到镜像仓库docker hub


基本思路:先下载Nginx镜像,然后运行一个Nginx容器,在容器中配置相关参数,最后把配置好的容器制作成一个镜像,后期发布到服务器上可以省去重复配置。

1、查看是否存在nginx镜像

docker images

发现还没有下载过nginx镜像

2、搜索可用的nginx镜像,下载nginx镜像

首先查询可用的nginx镜像:

docker search nginx

就下载第一个nginx:

docker pull nginx

 

 不指定版本号,默认就是最新版本

3、创建并启动nginx容器

docker run --name mynginx -d -p 8989:80 nginx

# --name 给容器起一个名字

# -d 在后台运行

# -p 8989:80 把容器内的80端口映射到宿主机的8989端口

查看容器运行状态:

docker ps

 访问验证:使用外部端口8989可以访问该容器nginx

4、进入容器,对相关文件进行配置

进入容器:

docker exec -it mynginx /bin/bash 

# -i: 交互式操作。

# -t: 终端。

# mynginx : nginx镜像。

# /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

C:\Users\Administrator>docker exec -it mynginx /bin/bash
root@1eb487ead85e:/# ls
bin   dev                  docker-entrypoint.sh  home  lib64  mnt  proc  run   srv  tmp  var
boot  docker-entrypoint.d  etc                   lib   media  opt  root  sbin  sys  usr
root@1eb487ead85e:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@1eb487ead85e:/# cd /etc/nginx
root@1eb487ead85e:/etc/nginx# ls
conf.d  fastcgi_params  mime.types  modules  nginx.conf  scgi_params  uwsgi_params
root@1eb487ead85e:/etc/nginx# cd conf.d
root@1eb487ead85e:/etc/nginx/conf.d# ls
default.conf
root@1eb487ead85e:/etc/nginx/conf.d# cat default.conf
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

root@1eb487ead85e:/etc/nginx/conf.d# cd /usr/share/nginx/html
root@1eb487ead85e:/usr/share/nginx/html# ls
50x.html  index.html

可以看到nginx的默认配置是在/etc/nginx/conf.d/default.conf配置文件里,通过配置文件里

location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

可以知道nginx的html文件目录,这样就可以把我们自己的代码拷贝到html文件夹下:

docker cp d:/html 1eb487ead85e:/usr/share/nginx

# docker cp 本机文件路径 容器id:容器内的路径

5、更新镜像

我们对nginx进行配置后,需要使用当前容器生成一个新的镜像,

我们可以通过命令 docker commit 来提交容器副本。

docker commit -m="更新配置" -a=lwpoor 1eb487ead85e lwpoor/nginx:1.0

# -m: 提交的描述信息

# -a: 指定镜像作者

# 1eb487ead85e :容器 ID

# lwpoor/nginx:1.0: 指定要创建的目标镜像名

C:\Users\Administrator>docker commit -m="更新配置" -a=lwpoor 1eb487ead85e lwpoor/nginx:1.0
sha256:110f8f64ca1ea47ba61b3c773b3fe5a07c13492a17e6378455dc6d254f17177e

C:\Users\Administrator>docker images
REPOSITORY                                    TAG       IMAGE ID       CREATED         SIZE
lwpoor/nginx                                  1.0       110f8f64ca1e   9 seconds ago   224MB

6、将由容器生成的镜像push到镜像仓库docker hub

首先需要登录 docker hub:

docker login 

推送到镜像仓库:

docker push lwpoor/nginx:1.0

C:\Users\Administrator>docker login
Authenticating with existing credentials...
Login Succeeded

Logging in with your password grants your terminal complete access to your account.
For better security, log in with a limited-privilege personal access token. Learn more at https://docs.docker.com/go/access-tokens/

C:\Users\Administrator>docker push lwpoor/nginx:1.0
The push refers to repository [docker.io/lwpoor/nginx]
c269977a08d5: Pushed
d874fd2bc83b: Mounted from library/nginx
32ce5f6a5106: Mounted from library/nginx
f1db227348d0: Mounted from library/nginx
b8d6e692a25e: Mounted from library/nginx
e379e8aedd4d: Mounted from library/nginx
2edcec3590a4: Mounted from library/nginx
1.0: digest: sha256:fe4d4e8f68cace0f19cc7d070c84030487b31a585cdcd5969afe6f8848f80aca size: 1782

可以看到已经推送到镜像仓库了:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker 安装 Nginx容器 配置以及重新生成镜像 的相关文章

随机推荐

  • C++ STL array 容器(深入了解,一文学会)

    array 容器是 C 11 标准中新增的序列容器 简单地理解 它就是在 C 普通数组的基础上 添加了一些成员函数和全局函数 在使用上 它比普通数组更安全 且效率并没有因此变差 和其它容器不同 array 容器的大小是固定的 无法动态的扩展
  • 若依管理系统部署(SpringCloudAlibaba)

    简介 1 采用前后端分离发模式 微服务版本前端基于RuoYi Vue 2 后端采用Springboot Spring Cloud Alibaba 3 注册中心 配置中心选型Nacos 权限认证使用OAuth2 4 流量控制框架选型Senti
  • 蓝桥杯单片机半小时三等奖代码详解

    半小时三等奖程序是蓝桥杯单片机比赛的基础程序 并不是真正意义上的三等奖 下面我根据自己的理解 对半小时省赛三等奖的程序进行解读 基础操作单元 1 LED灯 2 数码管 3 独立按键 4 矩阵键盘 5 蜂鸣器和继电器 我们的程序也是围绕这几个
  • 实现绝对定位元素水平垂直居中的两种方法

    实现绝对定位元素水平垂直居中的两种方法 平时 用的方法即第一种方法是设置left top值均为50 同时margin left设置为绝对定位元素width的一半取负 margin top设为其height的一半取负 例如 绝对定位元素的wi
  • 前端js 数字金额转换为记账格式 金额格式化

    引用
  • Pycharm安装并搭建Tensorflow开发环境

    Pycharm安装并搭建Tensorflow开发环境 下载并安装pycharm 1 下载 2 pycharm配置python环境 安装tensorflow 1 输入清华仓库镜像 2 创建tensorflow环境 3 启动tensorflow
  • 如何确定K-means算法中的k值?

    1 K means算法 k means算法是机器学习中常用的聚类算法 原理简单实现容易 内存占用量也比较小 但使用这个方法时 需要事先指定将要聚合成的簇数 在先验知识缺乏的情况下 想要确定是非常困难的 目前常用的用来确定的方法主要有两种 肘
  • Sqli-labs之Less-18和Less-19

    Less 18 基于错误的用户代理 头部POST注入 注 这一个模拟的场景是注册登录后的注入 由题意可知 这又是一种新姿势 老方法 查找注入点 发现前面的方法都未成功 且错误回显与正确回显都显示IP 这里写说几个常用请求头 上一篇文章详细讲
  • C# System.Guid.NewGuid()

    C System Guid NewGuid GUID 即Globally Unique Identifier 全球唯一标识符 也称 作 UUID Universally Unique IDentifier GUID是一个通过特定算法产生的二
  • 【C语言】操作符详解(上篇)

    操作符分类 1 算术操作符 2 移位操作符 2 1整数的二进制表示形式 2 2 左移操作符 lt lt 2 3 右移操作符 gt gt 3 位操作符 3 1 3 2 3 3 4 赋值操作符 5 单目操作符 5 1 单目操作符的介绍 5 2
  • C#: 未能加载文件或程序集“xxx“

    导入数据时 发生了异常 错误日志如下 2023 09 11 09 20 49 304 125 FATAL null NPOI POIXMLException gt System Reflection TargetInvocationExce
  • Android上使用AES加密和解密字符串

    废话少说 直接上类的源码 import android util Base64 import java nio charset StandardCharsets import java util Objects import java ut
  • Android屏幕适配很难嘛其实也就那么回事,面试官不讲武德

    前言 大厂面试一直都是程序员圈内摸鱼时间津津乐道的话题 进大厂想必也是无数程序员的梦想 关于 原理 的问题 几乎是现如今Android开发岗必问的问题 尤其在大厂面试中更为突出 有过大厂面试经验的小伙伴应该知道 大厂的面试官一般会基于你的简
  • MySQL必知必会——第十四章使用子查询

    使用子查询 本章介绍什么是子查询以及如何使用它们 子查询 SELECT语句是SQL的查询 目前我们用的所有SELECT语句都是从单个数据库表中检索数据的单条简单语句 查询 query 任何SQL语句都是查询 但此术语一般指SELECT语句
  • 深度学习之 Keras vs Tensorflow vs Pytorch 三种深度学习框架

    深度学习是人工智能的子集 深度学习模仿人脑处理数据的神经通路 将其用于决策 检测对象 识别语音和翻译语言 它从非结构化和未标记的数据中学习 无需人工监督或干预 深度学习通过使用人工神经网络的层次结构来处理机器学习 人工神经网络的构建类似于人
  • 破解路由器管理登录密码

    破解路由器管理登录密码 Linux内核 准备工具 puttytel登录软件 正式开工 第一步 首先检查自己的路由器的系统 看是不是Linux内核的 只有是Linux内核的路由器才适合本教程 常见基于Linux内核的路由器系统有Openwrt
  • corosync+pacemaker高可用的lvs directory

    实验配置一个corosync pacemaker高可用的lvs directory负载均衡基于ldirectord ldirectord 独立守护进程服务 管理lvs director 1 生成IPvs规则 2 对各RS做健康状态监测 配置
  • 使用miniserve快速搭建文件服务

    当我们想自己搭建一个 HTTP 文件服务向其他人分享文件 或者往其他设备上传输文件时 又不想花费时间去研究 Nginx IIS FTP 这些东西 我们可以通过 miniserve 一键生成简约 美观的文件服务器 访问 miniserve 客
  • 祝贺!Databend Cloud 和阿里云 PolarDB 达成认证

    近日 北京数变科技有限公司旗下产品与阿里云 PolarDB 开源数据库社区展开产品集成认证 测试结果表明 北京数变科技有限公司旗下产品 Databend Cloud V1 25 正式通过了 阿里云 PolarDB 数据库管理软件 的技术认证
  • Docker 安装 Nginx容器 配置以及重新生成镜像

    目录 1 查看是否存在nginx镜像 2 搜索可用的nginx镜像 下载nginx镜像 3 创建并启动nginx容器 4 进入容器 对相关文件进行配置 5 更新镜像 6 将由容器生成的镜像push到镜像仓库docker hub 基本思路 先