1,安装 docker



yum install docker



使用Docker 中国加速器



vim  /etc/docker/daemon.json



添加下面代码 



{
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "live-restore": true
}



(这个文件 初始状态是空的 只有“{}”)

启动服务



systemctl start docker



systemctl restart docker --重启
systemctl stop docker    --停止

查看版本



docker version



nginx部署多个静态html文件 nginx部署多个项目_nginx

查看状态



service docker status



nginx部署多个静态html文件 nginx部署多个项目_nginx部署多个静态html文件_02

2,安装nginx



yum install nginx



启动服务



systemctl start nginx



systemctl restart nginx --重启
systemctl stop nginx    --停止

啥也不显示表示正常启动,如显示

nginx部署多个静态html文件 nginx部署多个项目_docker_03

表示启动出错,看这里解决 

输入http://服务器IP/ 如果能看到nginx的界面,就表示安装成功了

nginx部署多个静态html文件 nginx部署多个项目_nginx部署多个静态html文件_04

3,把项目推送到docker hub



需要先执行 docker login 登录到 docker hub



docker push ejiyuan/demo-docker



命令后面的 image tag 必须是 docker hub 用户名 + “/” + 项目名称形式,如果“/”与当前登录的用户名不对应 会提示没有权限



Error response from daemon: pull access denied for io/webapp, repository does not exist or may require 'docker login'



你可以使用下列命令修改镜像tag名称后再进行推送



docker tag io/webapp ejiyuan/webapp



4,从docker hub 中拉取 项目 docker image

 在你需要部署的服务上安装docker 先执行 docker login 登录到 docker hub 然后执行下列命令拉取镜像到你的服务器上



docker pull ejiyuan/demo-docker



nginx部署多个静态html文件 nginx部署多个项目_docker_05

 docker pull [image 名称]

5,启动 docker运行镜像服务

查看镜像文件

nginx部署多个静态html文件 nginx部署多个项目_Docker_06

运行镜像到容器中: 



docker run -p 127.0.0.1:9000:8080 -t docker.io/ejiyuan/demo-docker



docker之进入启动容器查看目录结构:docker exec -it containerID /bin/bash 或 docker exec -it containerID /bin/sh

这里我不想将9000端口暴露给外网(所有请求都从nginx,映射过来,也就是仅对往外开放80端口)所有限定ip:127.0.0.1,如果你既想实现通过指定域名访问,又想通过外部 “ip+端口” 访问,这里去掉127.0.0.0即可

nginx部署多个静态html文件 nginx部署多个项目_Docker_07

检查是否正常运行:

方法1,使用curl透一下:

 

nginx部署多个静态html文件 nginx部署多个项目_nginx_08

 我的默认控制器会返回 hello Docker World

方法2,检查服务运行状态

nginx部署多个静态html文件 nginx部署多个项目_nginx_09

方法3,使用 docker ps命令查看运行的容器

 

nginx部署多个静态html文件 nginx部署多个项目_docker_10

6,配置nginx:



vim /etc/nginx/nginx.conf



修改或添加一个server标签



server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        location / {
        }
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
    #下面是自定义配置 端口转发
    server {
      listen 80;
      server_name www.abc.com;# 这里配置我们的域名,确定域名已解析到本机
      location / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:9000; #转发到本机9000端口
      }
    }



 重启nginx:



systemctl restart nginx



在浏览器访问你的域名 www.abc.com

nginx部署多个静态html文件 nginx部署多个项目_nginx_11

查看 docker项目容器运行日志

nginx部署多个静态html文件 nginx部署多个项目_docker_12

 

7,参考文档

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

在Docker容器环境中用Let's Encrypt部署HTTPS