docker挂载文件时会覆盖掉容器里面的目录,因此需准备一份默认的配置文件
准备配置文件
- 临时启动nginx容器,拷出默认配置文件
# 启动nginx
docker run -d --name tmp-nginx nginx:latest
# 拷出默认配置文件
mkdir -p /root/nginx/{config,data,logs}
docker cp tmp-nginx:/etc/nginx /root/nginx/config/
docker cp tmp-nginx:/usr/share/nginx/html /root/nginx/data/
docker cp tmp-nginx:/var/log/nginx /root/nginx/logs/
- 删除临时容器
docker rm -f tmp-nginx
docker方式启动
- 持久化目录须为绝对路径
docker run -d --name nginx -p 80:80 \
-v /root/nginx/config/nginx/:/etc/nginx \
-v /root/nginx/data/html:/usr/share/nginx/html \
-v /root/nginx/logs/:/var/log/nginx \
nginx:latest
- 测试,修改欢迎页面
cd /root/nginx/data/html
echo "hello nginx" > index.html
- 访问
docker-compose方式启动
- 进入工作目录
/root/nginx
,创建docker-compose编排文件(挂载目录一致)
vim docker-compose.yml
version: '3'
services:
nginx:
image: nginx # 镜像
container_name: nginx # 容器名
restart: always # 开机自动重启
ports: # 端口号绑定(宿主机:容器内)
- 80:80
volumes: # 目录映射(宿主机:容器内)
- ./config/nginx/:/etc/nginx
- ./data/html:/usr/share/nginx/html
- ./logs/:/var/log/nginx
- 启动
docker-compose up -d
- 停止
docker-compose down
- 若修改配置,需重新创建容器
docker-compose up -d --force-recreate