聊聊使用docker安装nginx提供web服务的问题

目录
  • 一、拉取镜像
  • 二、运行镜像启动容器
  • 三、文件映射
  • 四、再次启动容器服务

一、拉取镜像

docker pull命令用于拉取应用镜像,docker pull nginx命令用于拉取最新版本的nginx镜像。下文为拉取镜像过程的响应结果:

# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
c229119241af: Pull complete
2215908dc0a2: Pull complete
08c3cb2073f1: Pull complete
18f38162c0ce: Pull complete
10e2168f148a: Pull complete
c4ffe9532b5f: Pull complete
Digest: sha256:2275af0f20d71b293916f1958f8497f987b8d8fd8113df54635f2a5915002bf1
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

从上文我们可以看出nginx镜像是从docker.io这个网址拉取下来的。

使用docker images命令可以查看当前操作系统中下载了哪些镜像文件。

# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    12766a6745ee   33 hours ago   142MB
hello-world   latest    feb5d9fea6a5   6 months ago   13.3kB
  • REPOSITORY镜像仓库及镜像名称,如果不显示镜像仓库,默认就是docker.io
  • TAG镜像的版本或者是里程碑标签,latest表示最新版本
  • IMAGE ID 镜像的唯一标识
  • CREATED 这个镜像被创建的时间
  • SIZE表示镜像文件的大小

二、运行镜像启动容器

通过docker run命令启动一个容器,容器名称为nginx-zimug。

# docker run -d --name nginx-zimug -p  80:80  nginx
81bb1211144bc0991a789f860458548643c60b5459466c14d0604be9a4ccbfd7
  • -d表示容器在后台运行
  • --name为容器起一个名字
  • -p端口映射,格式为宿主机端口:容器端口,上文中含义是将容器中的端口80映射到宿主机的端口80,对外提供访问服务。最后一个字段为镜像名称

浏览器HTTP协议访问宿主机的80端口,如果是80端口可以省略。得到的访问结果如下,说明我们的nginx服务已经启动成功了。

通过docker ps可以查看正在运行中的容器,如下所示:

CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                               NAMES
81bb1211144b   nginx     "/docker-entrypoint.…"   11 minutes ago   Up 11 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   nginx-zimug

三、文件映射

首先明确的是容器中的文件内容是可以被修改的,但是一旦容器重启,所有写入到容器中的,针对数据文件、配置文件的修改都将丢失。所以为了保存容器的运行状态,执行结果,我们需要将容器内的一些重要的数据文件、日志文件、配置文件映射到宿主机上。
以nginx为例,nginx有三个重要的文件目录:

  容器中路径 宿主机中自定义映射路径
存储网站网页的目录 /usr/share/nginx/html /root/nginx/html
nginx配置文件目录 /etc/nginx/nginx.conf /root/nginx/conf/nginx.conf
日志目录 /var/log/nginx /root/nginx/logs

在宿主机中新建文件目录

mkdir -p  /root/nginx/logs  /root/nginx/html  /root/nginx/conf;

将容器中的文件copy到宿主机中
将nginx配置文件copy到宿主机中

docker cp nginx-zimug:/etc/nginx/nginx.conf /root/nginx/conf;

将一个模拟的html文件放入html目录
将下面的文件保存为index.html放入宿主机的/root/nginx/html目录,因为存在映射关系,实际上也是放入了容器的/usr/share/nginx/html目录。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>使用docker搭建nginx web服务</title>
</head>
<body>
    <h1>访问成功</h1>
    <p>厉害了!</p>
</body>
</html>

四、再次启动容器服务

-v参数表达了宿主机文件与容器中文件的映射关系,格式为-v 宿主机目录:容器文件系统目录。启动一个新的容器,容器的名字叫做nginx-prod

docker run -d -p 80:80 \
--name nginx-prod \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/logs:/var/log/nginx  nginx

在启动新容器之前,将nginx-zimug旧的容器删掉。如果不删除旧的容器,新容器的端口与旧容器端口会发生冲突。使用如下命令删除容器:

docker stop nginx-zimug;
docker rm nginx-zimug;

执行上面的docker run命令,启动新的容器。启动后通过浏览器访问宿主机80端口,响应结果如下证明nginx正常提供web服务了。

同时可以在宿主机上修改nginx配置,也可以查看运行时日志文件。修改结果会影响容器nginx服务的运行,因为宿主机的配置文件与容器内的配置文件存在映射关系。

到此这篇关于使用docker安装nginx提供web服务的文章就介绍到这了,更多相关docker安装nginx提供web服务内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 利用docker搭建web服务环境的方法步骤

    前言 做过开发的人对开发环境的安装.配置应该都不会太陌生,不管你做什么开发,对开发环境都会具有一定的依赖性的.对于 PHP 的 Web 开发来说,开发环境至少要有一个 Web 服务器(如 Apache.Nginx).一个数据库服务器(如 MySQL)和一个 PHP 解析器吧,如果你的 PHP 代码使用的一些扩展,那你还需要给你的 PHP 安装上这些扩展,那样你的 PHP 代码才能够顺利地跑起来.对于一个只想静静地敲代码的开发人员来说,开发环境的安装与配置这种事情,只要经历一次就已经很折腾人了.可

  • 使用Docker安装Nginx并配置端口转发问题及解决方法

    使用docker安装并运行nginx命令: docker run --name=nginx -p 80:80 -d docker.io/nginx 使用命令: docker exec -it nginx /bin/bash 进入容器可查看到几个重要的文件 配置文件:nginx.conf 在 /etc/nginx/nginx.conf 日志文件: /var/log/nginx/access.log /var/log/nginx/error.log 使用cat命令打开nginx.conf root@

  • docker安装nginx并配置ssl的方法步骤

    最近想在吃灰了一年多的服务器上,安装一下docker,结果始终找不到合适的yum源,后来经过一番百度才知道,原来centos8要凉了,所以好多镜像站都移除了CentOS 8的源. 没办法,短暂的思考之后,决定重装一下操作系统,换成centos7.9,好在服务器上没啥重要东西,只要给blog挪个窝就行了. 重装系统之后,安装docker过程非常顺利. 开始安装nginx. 1.直接拉取最新的nginx镜像 docker pull nginx 2.新建一些目录,把nginx容器内的相关文件夹挂载到宿

  • Docker安装Nginx问题及错误分析

    问题: 在Docker中装Nginx时遇到了如下错误: docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:424: container init caused "rootfs_linux.go:58: mounting \"/docker/nginx/

  • 聊聊使用docker安装nginx提供web服务的问题

    目录 一.拉取镜像 二.运行镜像启动容器 三.文件映射 四.再次启动容器服务 一.拉取镜像 docker pull命令用于拉取应用镜像,docker pull nginx命令用于拉取最新版本的nginx镜像.下文为拉取镜像过程的响应结果: # docker pull nginx Using default tag: latest latest: Pulling from library/nginx c229119241af: Pull complete 2215908dc0a2: Pull co

  • docker安装nginx容器的方法

    目录 1.自定义网络相关命令 2.nginx是什么 Nginx+tomcat是目前主流的java web架构 3.安装nginx 4.docker实战之通过nginx镜像来部署SPA项目 5.nginx.conf讲解 1.自定义网络相关命令 1.创建自定义网络       docker network create --driver bridge --subnet 192.168.0.1/16 --gateway 192.168.0.1 mynet       参数说明       --driv

  • docker安装nginx并部署前端项目的全过程

    目录 1.简介 2.操作 3. 总结 1.简介 本文主要介绍如何使用docker安装nginx,以及如何将前端打包好的vue项目部署到nginx上. 2.操作 (1)拉取nginx镜像: docker pull nginx (2)咱们先把docker镜像跑起来: docker run --name myNginx -p 80:80 -v /home/nginx/dist:/usr/share/nginx/html -d nginx ## --name:容器名字 ## -d: 要启动的镜像的名字

  • Docker安装jenkins实现微服务多模块打包的示例代码

    目录 1.安装 2.初始化 3.配置jenkins 3.1 安装Maven 3.2 配置Maven插件 3.3 安装svn插件 4. 创建自动化部署任务 4.1 配置清理旧的构建 4.2 创建svn账密凭证 4.3 填写build命令 4.4 首次构建 5. 配置maven运行命令及shell脚本 5.1 maven父子项目依赖指令配置 5.2打包完成之后shell命令 废话不多说,直接讲正事 1.安装 # 1.pull jenkins(若使用jdk11则可pull最新版jenkins,否则最新

  • docker安装nginx并配置通过https访问的方法

    1. 下载最新的nginx的docker image $ docker pull nginx:latest 2. 启动nginx容器 运行如下命令来启动nginx container docker run --detach \ --name wx-nginx \ -p 443:443\ -p 80:80 \ -v /home/evan/workspace/wxserver/nginx/data:/usr/share/nginx/html:rw\ -v /home/evan/workspace/w

  • Docker安装Nginx教程实现图例讲解

    这里来安装下Nginx试下. 注意要明确一点,镜像是类,容器是对象. 查看当前的镜像 看到只有一个测试的镜像. 拉取镜像: 下载成功后查看,镜像已经被下载下来了: 使用 nginx 镜像 运行容器: 查看容器运行情况: 然后在浏览器输入网址: 修改文件: [root@VM_0_4_centos bin]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8bf811453641 nginx "nginx -g 'da

  • 基于Docker、Nginx和Jenkins实现前端自动化部署

    目录 前期准备 部署目标 Dcoker环境的搭建 连接云服务器 安装Docker环境 Docker安装Docker Compose Docker安装Nginx和Jenkins服务 安装Nginx和Jenkins Nginx和Jenkins目录编写 docker-compose.yml文件配置 nginx.conf文件配置 安装Jenkins插件 关联Jenkins和GitLab 生成密钥 新建项目 源码管理 构建触发器 结束语 前期准备 基于CentOS 7系统云服务器一台. 基于Vue-CLI

随机推荐