准备工作:
1.从docker下载nginx
docker search nginx 查看各版本nginx
docker pull nginx 根据需要拉取镜像(一般使用最新版本就可以)
启动方法一 、docker 启动一个暴露外网端口nginx 实例
#官方nginx镜像暴露端口是80
dockerfile暴露的端口是80
#启动一个绑定外网端口是8080的nginx容器
docker run \
--name some-nginx \
-v /data/nginx/html:/usr/share/nginx/html:ro \
-p 8080:80 \
-d \
nginx
如果宿主机的ip是192.168.1.10,向nginx发起请求地址是http://192.168.1.10:8080
启动方法二 、docker 启动一个暴露外网端口和nginx配置文件路径的nginx 实例
假设宿主机的nginx配置文件存放目录/data/nginx/nginxconf,如果手头没有nginx配置文件,可以把容器的nginx配置文件复制到/data/nginx/nginxconf,不过先要启动一下没有绑配置的nginx容器,复制配置文件,删除这个nginx容器,最后就可以启动绑定nginx配置文件路径的nginx 实例。整个操作步骤如下:
第一步。启动一个不绑定nginx配置文件的容器
docker run \
--name some-nginx \
-v /data/nginx/html:/usr/share/nginx/html:ro \
-p 8080:80 \
-d \
nginx
第二步。复制some-nginx里nginx配置文件到宿主机的/data/nginxconf下
docker cp some-nginx:/etc/nginx /root/nginx/nginxconf
mv /root/nginx/nginxconf/nginx/* /root/nginx/nginxconf/
rm -rf /root/nginx/nginxconf/nginx
第三步。删除nginx容器
docker rm -f some-nginx
第四步。启动绑定nginx配置文件的nginx容器
docker run \
--name some-nginx \
-v /root/nginx/html:/usr/share/nginx/html:ro \
-v /root/nginx/nginxconf:/etc/nginx:ro \
-p 8080:80 \
-d \
nginx
-v /data/nginx/nginxconf:/etc/nginx:ro:/data/nginxconf宿主机上存储nginx的配置文件路径。/etc/nginx是容器里nginx配置文件路径。
启动方法三、docker-compose启动nginx服务
手动创建 /root/nginx/ 目录
手动创建 nginx的docker-compose.yml文件,存放在/root/nginx/下
version: '3' # docker-compose版本
services:
nginx:
image: nginx # 镜像名称
restart: always
container_name: some-nginx # 起别名
privileged: true
ports:
- 8080:8080 # 要启动的端口
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- /etc/nginx/conf.d:/etc/nginx/conf.d
- /usr/share/nginx/html:/usr/share/nginx/html
- ./logs:/var/log/nginx
- /root/code:/root/code
/data/nginx/logs/:/var/log/nginx/ 加了一个日志映射到宿主机目录。好查看日志文件。
#docker-compose启动nginx
docker compose up -d
如果启动失败:
到/var/log/nginx/目录下查看nginx日志
/var/log/nginx/
报错信息是 Permission denied可能是权限不够,把nginx.conf 文件里的user nginx改成 user root后重启nginx就好了。