首先docker安装,从官网上下载Docker Desktop 安装

1.拉取nginx镜像

#进入终端执行或者从docker desktop首页直接点击运行(会自动执行拉取),如下图
docker pull nginx
#查看docker 镜像,就能看到拉取的nginx镜像了
docker images

 

 

 2.运行一个nginx容器,并映射本地相关文件目录

##本地创建相关目录,我这里放到D盘Docker文件下,方便我管理
nginx   #主目录
nginx/logs #创建日志目录
nginx/www #站点存放目录
nginx/conf.d #相关站点配置目录
nginx/cert #配置证书存储目录


##运行有一个容器
docker run --name nginx-test  -p 80:80  -d nginx   #运行容器
#进入到nginx-test容器中查看需要挂载的文件
docker exec -it nginx-test /bin/bash
#拷贝一些常用的nginx文件到上面创建的目录中,与本地相映射
docker cp nginx-test:/etc/nginx/nginx.conf D:\Docker\nginx   #nginx 默认配置文件
docker cp nginx-test:/etc/nginx/conf.d D:\Docker\nginx    #nginx配置文件夹
docker cp nginx-test:/usr/share/nginx/html D:\Docker\nginx\www   #nginx的html文件


*********************************注意注意Linux 环境部署一致****************************

docker run --name nginx  -p 80:80  -d nginx   #运行容器
创建相关目录

mkdir -p \
/nginx/html\
/nginx/conf.d \
/nginx/logs  \
/nginx/cert



//拷贝对应的文件,拷贝时,需要先运行一个nignx容器
sudo docker cp nginx:/etc/nginx/nginx.conf /nginx   #nginx 默认配置文件
sudo docker cp nginx:/etc/nginx/conf.d /nginx    #nginx配置文件夹
sudo docker cp nginx:/usr/share/nginx/html /nginx

//删除之前的容器,重新运行一个容器并启动容器
docker run --name nginx -dit -p 80:80 -p 443:443 -v /nginx/nginx.conf:/etc/nginx/nginx.conf -v /nginx/conf.d:/etc/nginx/conf.d -v /nginx/html:/usr/share/nginx/html -v /nginx/cert:/etc/nginx/cert -v /nginx/logs:/var/log/nginx -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 --privileged=true --restart=always nginx


#或
mkdir -p $PWD/nginx/{conf.d,html,cert,logs}


//拷贝对应的文件,拷贝时,需要先运行一个nignx容器
sudo docker cp nginx:/etc/nginx/nginx.conf $PWD/nginx   #nginx 默认配置文件
sudo docker cp nginx:/etc/nginx/conf.d $PWD/nginx    #nginx配置文件夹
sudo docker cp nginx:/usr/share/nginx/html $PWD/nginx


//删除之前的容器,重新运行一个容器并启动容器
docker run --name nginx -dit -p 80:80 -p 443:443 -v $PWD/nginx/nginx.conf:/etc/nginx/nginx.conf -v $PWD/nginx/conf.d:/etc/nginx/conf.d -v $PWD/nginx/html:/usr/share/nginx/html -v $PWD/nginx/cert:/etc/nginx/cert -v $PWD/nginx/logs:/var/log/nginx -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 --privileged=true --restart=always nginx


 3.停止并删除nginx-test容器,重新运行一个新的nginx容器启动时,映射本地相关目录

#停止nginx-test容器
docker stop nginx-test

#删除nginx-test容器
docker rm nginx-test

##创建一个新nginx 容器
docker run --name nginx -d -p 80:80 -v D:\Docker\nginx\nginx.conf:/etc/nginx/nginx.conf -v D:\Docker\nginx\conf.d:/etc/nginx/conf.d -v D:\Docker\nginx\html:/usr/share/nginx/html -v D:\Docker\nginx\cert:/etc/nginx/cert -v D:\Docker\nginx\logs:/var/log/nginx -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 --privileged=true --restart=always nginx

 4.在浏览器中访问127.0.0.1,直接访问到www目录下index,html

5.容器间相互访问(docker bridge自定义网络)

##创建bridge自定义网络
docker network create test 或docker network create --driver bridge  test

#查看创建的网络是否存在
docker network ls 


#把已存在容器加入网络或者重新运行新容器加入网络
docker network connect test --alias nginx-test nginx-test 
或
docker run --name nginx-test -d  --privileged=true --network test --network-alias nginx-test -p 80:80   -v D:\Docker\nginx\nginx.conf:/etc/nginx/nginx.conf -v D:\Docker\nginx\conf.d:/etc/nginx/conf.d -v D:\Docker\nginx\www:/usr/share/nginx/html -v D:\Docker\nginx\cert:/etc/nginx/cert -v D:\Docker\nginx\logs:/var/log/nginx -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 --privileged=true --restart=always nginx 


##再启动一个webapi容器
docker run --name webapi -d  --privileged=true --restart=always --network test --network-alias webapi -p 80:80  webapi
#最后面nginx-test反向代理调用webapi


   location /api/ {
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
        add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,cookietoken,cookieuid';
 
        if ($request_method = 'OPTIONS') {
          return 200;
        }
        proxy_pass   http://webapi:80;
        proxy_redirect          off;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }


##把webapi容器移除自定义网络
docker network disconnect  test webapi


##如果要修改容器启动项,则可以使用  docker update 
 docker update adminapi --restart always  #这表示设置容器随着docker启动自动启动

 6.访问成功

 

Logo

云原生社区为您提供最前沿的新闻资讯和知识内容

更多推荐