一、 拉取 最新 nginx 镜像
docker pull nginx
二、 拷贝配置文件
2.1 目的
【数据持久化】容器被删除时,它内部的所有数据也会丢失。通过将数据目录挂载到宿主机,可以确保重要数据得到持久化保存
【方便数据管理和调试】通过卷挂载,可以直接在宿主机上编辑配置文件,调整应用参数
2.2 操作
2.2.1. 第一次运行 nginx 镜像的命令:容器名nginx
docker run -p 80:80 -d --name nginx nginx
2.2.2 拷贝 Nginx 宿主机中 相关配置文件
# 创建配置目录
mkdir -p /docker/nginx/conf
# Nginx 主配置文件
docker cp nginx:/etc/nginx/nginx.conf /docker/nginx/conf
# Nginx 主配置文件
docker cp nginx:/etc/nginx/conf.d /docker/nginx/conf
# Nginx 默认文档根目录
docker cp nginx:/usr/share/nginx/html /docker/nginx
# Nginx 日志目录(可选)
docker cp nginx:/var/log/nginx /docker/nginx/log
三、 停止nginx容器
docker stop nginx
四、 删除第一次启动的nginx容器
docker rm nginx # 根据容器名删除
docker rm a4b45286381c # 根据容器ID删除
五、 正式运行 nginx 容器
docker run -p 80:80 \--network mynet \-d --name my_nginx \-v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \-v /docker/nginx/conf/conf.d:/etc/nginx/conf.d \-v /docker/nginx/html:/usr/share/nginx/html \-v /docker/nginx/log:/var/log/nginx \--restart=always \nginx
- 参数解释:
--network
:将容器加入到名为 mynet 的网络。注:如果该网络不存在,docker 会报错。若网络不存在,需要执行docker network create mynet
创建。-p
:端口映射,冒号前为宿主机端口,冒号后为容器内的端口,即宿主机上访问 80 端口的 HTTP 请求会被交给 nginx 容器的 80 端口。-d
:后台运行容器--name
:指定容器名称,本例中名称为 nginx-v
:挂载配置文件、html 目录到宿主机;冒号前为宿主机文件路径,冒号后为挂载到容器中的路径。可以看到宿主机被挂载的多个目录/文件是第一次运行时从容器内拷贝出来的。--restart=always
:开机启动