文章正文

windows下docker容器部署 Nginx服务

加入时间:2020/12/1 10:07:21

主要内容参考来自:https://www.cnblogs.com/saneri/p/11799865.html 这篇文章作者的环境应该是linux,他创建了两个容器,第一个容器演示了最简单的运行并使用了--rm参数实例关闭自动销毁,第二个容器讲了如何映射目录和端口

我经过试验在window下大同小异,搬一些他的内容过来,区别地方我会重点讲一下

主要的命令有这几个:

  • docker search nginx    这个命令用来搜索docker官方仓库如果配置了其他镜像就是对应镜像仓库里nginx镜像
  • docker pull nginx      从上面搜索到的内容中拉取nginx,其实有很多镜像,一般这个nginx不带其他内容的是nginx官方给的当前版本镜像资源
  • docker images nginx    这个命令主要是查看是不是成功拉取到了nginx镜像,成功的状态下会有类似下面的返回
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx     latest              f949e7d76d63        5 weeks ago         XXX MB
  • docker run --name nginx-test -p 8080:80 -d nginx   

其中,该命令的三个命令行参数的含义如下。
      --name nginx-test:容器的名字叫做nginx-test,名字自己定义.
      -p: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口
      -d:容器启动后,在后台运行

这个时候访问localhost:8080如果运行正常的话就能看到

上面一般是测试例子,简单掌握docker安装nginx的用法

实际上使用中,通常我们要映射端口和文件目录

所以我们一般创建容器会使用类似这样的命令

docker run --name nginx-test -p 8080:80 -v D:/study/docker/nginx/www:/usr/share/nginx/html -v D:/study/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v D:/study/docker/nginx/logs:/var/log/nginx -d nginx

命令说明:

      -p 8080:80: 将容器的 80 端口映射到主机的 8080 端口.

      --name nginx-test:将容器命名为 nginx-test

      -v D:/study/docker/nginx/www:/usr/share/nginx/html:将我们自己创建的 www 目录挂载到容器的 /usr/share/nginx/html。

      -v D:/study/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:/etc/nginx/nginx.conf:将我们自己创建的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf。

这里一定注意,我在这里被坑了很久,就是在执行这个docker run命令之前,一定要先创建好这个nginx.conf文件,哪怕是个空文件,也一定要创建,不然在windows环境下执行run命令会报错,虽然创建成功,而且会创建成一个nginx.conf的文件夹,导致运行失败,需要重新删掉镜像(docker rm nginx-test)再创建才可以
建议里面填上下面斜体内容

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
}

 

      -v D:/study/docker/nginx/logs:/var/log/nginx:将我们自己创建的 logs 挂载到容器的 /var/log/nginx。

如果上面操作都正常再访问localhost:8080就可以打开展示上图的默认页面了,

进入例如我的例子中D:/study/docker/nginx/www目录,然后创建个静态文件,刷新页面,你会发现什么都没有发生。。

上面斜体字代码中,蓝色部分前面加个#号,再刷新页面!

ok,自己创建的静态页面内容正常执行了!目前我遇到的坑基本上都描述完了!今天的记录就到这里!

字体大小[ ]

版权所有:有信心——uxinxin 我的个人网站欢迎常来!手机版(新站开启,请多多关照) 豫ICP备12017930号-1
 豫公网安备 41910102000493号