Docker Nginx容器制作部署实现方法

快速开始

1.查找 Docker Hub 上的 nginx 镜像

docker search nginx

2.拉取官方的Nginx镜像

docker pull nginx

3.在本地镜像列表里查到 REPOSITORY 为 nginx 的镜像

docker images nginx

REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 4bb46517cac3 4 weeks ago 133MB

4.以下命令使用 NGINX 容器内的默认的配置来启动一个 Nginx 容器实例:

代码如下:

docker run --rm --name nginx-test -p 8080:80 -d nginx

其中,该命令的四个命令行参数的含义如下。

  • --rm:容器终止运行后,自动删除容器文件。
  • --name nginx-test:容器的名字叫做nginx-test,名字自己定义.
  • -p: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口
  • -d:容器启动后,在后台运行
  • -d参数后的nginx为指定的启动的容器镜像名字

5.查看启动的docker容器

docker container ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
acb0e263dff3 nginx "/docker-entrypoint.…" 10 seconds ago Up 9 seconds 0.0.0.0:8080->80/tcp nginx-test

6.在浏览器访问,我这边是腾讯云主机,访问公网ip+端口即可

在浏览器中打开http://公网ip:8080,效果如下.

部署服务

1.创建本地目录,用于存放Nginx的相关文件信息.

mkdir -p /home/nginx/www /home/nginx/logs /home/nginx/conf

其中:

  • www: 目录将映射为 nginx 容器配置的虚拟目录。
  • logs:目录将映射为 nginx 容器的日志目录。
  • conf: 目录里的配置文件将映射为 nginx 容器的配置文件。

2.拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录,容器ID可以查看 docker ps 命令输入中的第一列:

docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
acb0e263dff3 nginx "/docker-entrypoint.…" 10 seconds ago Up 9 seconds 0.0.0.0:8080->80/tcp nginx-test

docker cp acb0e263dff3:/etc/nginx /home/nginx/conf

3.把此容器停止

docker container stop nginx-test

注意进入容器命令:docker exec -it nginx-test /bin/bash

4.部署命令

docker run --rm -d -p 8080:80 --name nginx-test-web \
-v /home/nginx/www:/usr/share/nginx/html \
-v /home/nginx/conf/nginx:/etc/nginx \
-v /home/nginx/logs:/var/log/nginx \
nginx

命令说明:

  • --rm:容器终止运行后,自动删除容器文件。
  • -p 8080:80: 将容器的 80 端口映射到主机的 8080 端口.
  • --name nginx-test-web:将容器命名为 nginx-test-web
  • -v /home/nginx/www:/usr/share/nginx/html:将我们自己创建的 www 目录挂载到容器的 /usr/share/nginx/html。
  • -v /home/nginx/conf/nginx:/etc/nginx:将我们自己创建的 conf下的nginx目录 挂载到容器的 /etc/nginx。
  • -v /home/nginx/logs:/var/log/nginx:将我们自己创建的 logs 挂载到容器的 /var/log/nginx。

5.启动以上命令后进入 /home/nginx/www 目录:

cd /home/nginx/www/
vi index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Nginx test !!!</title>
</head>
<body>
<h1>我的第一个标题</h1>
<p>我的第一个段落。</p>
</body>
</html>

6.在浏览器访问

在浏览器里面输入http://公网ip:8080/,输出结果如下,如果在访问时出现403错误,应该是index.html文件权限不足,给成644就行.

支持HTTPS、HTTP2

1.在/home/nginx/conf/nginx下目录下新建一个子目录certs

mkidr certs

2.生成证书

openssl req \
-x509 \
-nodes \
-days 365 \
-newkey rsa:2048 \
-keyout example.key \
-out example.crt

上面命令的各个参数含义如下。

  • req:处理证书签署请求。
  • -x509:生成自签名证书。
  • -nodes:跳过为证书设置密码的阶段,这样 Nginx 才可以直接打开证书。
  • -days 365:证书有效期为一年。
  • -newkey rsa:2048:生成一个新的私钥,采用的算法是2048位的 RSA。
  • -keyout:新生成的私钥文件为当前目录下的example.key。
  • -out:新生成的证书文件为当前目录下的example.crt。

创建成功目录会多出两个文件:example.key和example.crt。

3.HTTPS配置

在/home/nginx/conf/nginx/conf.d目录下创建https.conf文件,写入如下:

server {
  listen 443 ssl http2;
  server_name localhost;

  ssl           on;
  ssl_certificate     /etc/nginx/certs/example.crt;
  ssl_certificate_key   /etc/nginx/certs/example.key;

  ssl_session_timeout 5m;

  ssl_ciphers HIGH:!aNULL:!MD5;
  ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers  on;

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

4.部署服务

docker run --rm -d -p 8080:80 -p 8081:443 --name nginx-test-web \
-v /home/nginx/www:/usr/share/nginx/html \
-v /home/nginx/conf/nginx:/etc/nginx \
-v /home/nginx/logs:/var/log/nginx \
nginx

5.快速测试

http://公网ip:8080/:访问http
https://公网ip:8081/:访问https

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • docker部署nginx并且挂载文件夹和文件操作

    这段时间在研究docker,在部署nginx时遇到了坑,最主要的问题是在挂载文件和文件夹的时候不知道怎么挂载,经过反复实验以及查看网上的教程,先总结如下: 1首先pull下载nginx镜像包 docker pull nginx 2(关键)查看nginx镜像里面配置文件.日志等文件的具体位置,只有找到镜像配置文件的路径,后面挂载文件和文件夹才能覆盖这些路径 以终端的方式打开镜像容器 [root@docker2 nginx]# docker run -i -t nginx /bin/bash roo

  • Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作

    下载Tomcat8镜像 [root@localhost ~]# docker search tomcat8 NAME DESCRIPTION STARS OFFICIAL AUTOMATED ashince/tomcat8 Tomcat GUI Manager pre-configured docker ima- 5 podbox/tomcat8 2 [OK] 这个tomcat包含了jdk而且启动了可以直接访问,自己启动了8080端口 [root@localhost ~]# docker pul

  • docker nginx实现一个主机部署多个站点操作

    在某站租赁的虚拟机快到期了,续费得花200多,想到在阿里云新买的服务器,不如把这个也转移过去.域名我就用真实的吧,大家别黑我网站就好了,谢谢各位了. 阿里云里面已经用部署了一个站点 用域名 www.dcssn.com 就能直接访问,我的想法是再用 www.xhxf119.com 指向这个主机,根据域名的不同去访问不同的服务. 首先 域名解析都要指向这个主机的ip 然后 www.dcssn.com的服务开启8080端口,docker run -p 8080:80 weian www.xhxf119

  • Docker部署nginx实现过程图文详解

    1.下载nginx [root@localhost my.Shells]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/redis latest 1e70071f4af4 6 weeks ago 106.7 MB [root@localhost my.Shells]# docker pull nginx //下载nginx Using default tag: latest Trying to pull reposit

  • Docker搭建Nginx图片服务器的方法

    前言 一般开发中,都会把图片上传到一个目录,然后将目录和文件名拼接存储在数据库中,但是,这种方法如果没弄好的话可能有一定的缺陷. 若项目搬迁,即时这台服务器本身还在用,存放在服务器的跟项目相关的图片也要跟着搬迁,同时还要修改代码,会造成较多麻烦.如果搭建一个专门存放图片的服务器,而且通过ftp传输,那么你的代码就不用改了. 关于Docker和Nginx的介绍和优点在这里就不展开了,网上博客和教程也有很多. 环境搭建 环境搭建有些模块可能不够详细,如果想知道更多的话可以查看其他资料,这里只是简单操

  • 基于docker搭建nginx文件服务器的方法步骤

    1.在本机新建配置文件docker_nginx.conf server { listen 7070; server_name localhost; charset utf-8; location /files { #在docker内nginx的目录 alias /home/files; expires 1d; allow all; autoindex on; } 2.启动命令 docker run --name nginx -d -p 7070:7070 -v D:\dev\nginx-1.13

  • Docker镜像+nginx 部署 vue 项目的方法

    一.打包vue项目 在开发完的vue项目输入如下命名,打包生成dist文件夹 yarn build / npm run build 此时根目录会多出一个文件夹:dist文件夹,里面就是我们要发布的东西. 如果将该dist目录整个传到服务器上,部署成静态资源站点就能直接访问到该项目. 二.获取nginx 镜像 nginx 是一个高性能的HTTP和反向代理服务器,此处我们选用 nginx 镜像作为基础来构建我们的vue应用镜像. 在终端输入: docker pull nginx 即可以获取到ngin

  • Docker Nginx Log 三者的处理详解

    因为公司的同事需要Nginx日志标准输出,也就是通过控制台处理,那么我们需要先将日志写到文件内: error_log /var/log/nginx/error.log access_log /var/log/nginx/access.log 处理方式无非有两种: 1.创建宿主机路径,然后将其挂载到容器内的nginx日志路径: docker run --name docker_nginx -d -p 80:80\ -v /var/log/nginx/log:/var/log/nginx\ --!-

  • Docker Nginx容器制作部署实现方法

    快速开始 1.查找 Docker Hub 上的 nginx 镜像 docker search nginx 2.拉取官方的Nginx镜像 docker pull nginx 3.在本地镜像列表里查到 REPOSITORY 为 nginx 的镜像 docker images nginx REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 4bb46517cac3 4 weeks ago 133MB 4.以下命令使用 NGINX 容器内的默认的配置来启动

  • Docker Compose一键ELK部署的方法实现

    安装   Filebeat 已经完全替代了 Logstash-Forwarder 成为新一代的日志采集器,因为它更加轻量.安全.基于 Filebeat + ELK 的部署方案架构图如下:    软件版本: 服务 版本 说明 CentOS 7.6 Docker 18.09.5 Docker Compose 1.25.0 ELK 7.5.1 Filebeat 7.5.1 docker-compose 文件 version: "3" services: es-master: containe

  • Docker中Dockerfile制作镜像的方法步骤

    目录 1.基于容器制作 2. 基于Dockerfile制作镜像 2.1 Dockerfile命令 2.2 简单示例 docker 镜像的制作,可以基于容器创建镜像,也可基于 dockerfile 构建镜像.但需要注意的是,我们并不是真正"创建"新镜像,而是基于一个已有的基础镜像,如 centos 或 ubuntu 等,构建新镜像而已. 1.基于容器制作 联合文件系统(UnionFS)挂载提供了容器的文件系统,任何对容器内文件系统的改动都会被写入到新的文件层中,这个文件层归创建它的容器所

  • 使用Docker将容器打成镜像的方法步骤

    目录 前言 1. 容器打成镜像 过程示例 2. 镜像打包 前言 工作中遇到三方闭源的中间件运行起来某项特性不符合需求,但是镜像提供方偏偏又没有将配置文件挂载出来以供修改,这就导致要使软件符合需求地运行只能进入到容器内部修改配置文件后重启,可谓非常之蛋疼.笔者平时对 Docker 接触不多,好在有同事提到 Docker 支持将运行中的容器重新打包为镜像,于是网上搜索资料,大致整理出以下步骤解决上面的问题,故有本文聊作记录 进入运行中的容器修改其配置文件,修改完成后重启容器 将已经修改过配置文件的容

  • 详解docker nginx 容器启动挂载到本地

    首先nginx容器内部的结构: 进入容器: docker exec -it b511b6049f57 bash 查看容器的结构目录:其实每一个容器就相当于一个独立的系统. root@b511b6049f57:/# ls bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr nginx的结构目录在容器中: 日志位置:/var/log/nginx/ 配置文件位置:/etc/nginx/

  • 详解Docker修改容器端口映射的方法

    直接解决方法 具体可参考Stack Overflow链接 docker运行时存在守护程序,所以我们需要停止docker内运行的容器和docker服务.具体可参考官网给出的守护程序解释 docker stop 容器id //CentOS下停止docker服务(Ubuntu类似) sudo systemctl stop docker 使用以下命令找到已创建容器的hostconfig.json和config.v2.json配置文件. find / -name hostconfig.json //或co

  • 基于Docker+Jenkins实现自动化部署的方法

    使用码云搭建Git代码存储仓库 https://gitee.com/login 使用码云创建私有私有git仓库 将本地springboot项目上传到git仓库中 基于Docker安装Jenkins环境 1.使用docker 安装jenkins docker run -p 8080:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean 2.访问jenkins地址 8080 注意:第一次启动的时候正在加载j

  • Docker 配置容器固定IP的方法

    目录 前言 环境介绍 绑定步骤 跨主机容器互访 前言 之前使用pipework 分配静态ip是暂时的,重启之后就会失效,并且使用pipework绑定的ip 物理机,虚拟机,docker容器的ip都在同一网段,这在生产环境是很困难的,下面使用docker自带的network实现固定ip分配,并且重启不会消失. 环境介绍 绑定步骤 先操作192.168.1.105虚拟机 第一步:创建自定义网络 docker network create --subnet=172.172.0.0/24 docker-

  • 云vscode搭建之使用容器化部署的方法

    目录 1.Code-Server下载部署 1.1 Code-Server下载 1.2 Code-Server部署 1.3 Docker部署Code-Server 2. 一个小问题 2.1 端口监听 2.2 使用VS-Code插件 2.3 代理服务器实现 Vscode作为一个轻量级的IDE,其支持丰富的插件,而通过这些插件我们就可以实现在Vscode中写任何语言的代码.Code-Server是Vscode的网页版,启动Code-Server之后我们就可以在浏览器中打开vscode来愉快的编写代码了

随机推荐