首先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 环境部署一致****************************
创建相关目录
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
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/ {
proxy_pass http://webapi:80;
}
##把webapi容器移除自定义网络
docker network disconnect test webapi
##如果要修改容器启动项,则可以使用 docker update
docker update adminapi --restart always #这表示设置容器随着docker启动自动启动
6.访问成功