要创建一个运行 Nginx 的 Docker 容器,通常使用 docker run 命令。下面是创建 Nginx 容器的基本步骤和常用选项:
1. 运行 Nginx 容器(默认设置)
这个命令会从 Docker Hub 上拉取官方的 Nginx 镜像(如果没有本地镜像的话),并启动一个新的容器。
bash复制代码docker run --name nginx-container -d -p 80:80 nginx
解释:
-
--name nginx-container:指定容器的名称为nginx-container。 -
-d:让容器在后台运行(detached mode)。 -
-p 80:80:将容器的 80 端口映射到宿主机的 80 端口,使你能够通过浏览器访问。 -
nginx:指定使用的镜像名称,这里是官方的nginx镜像。
2. 映射自定义的主机端口
如果你希望将容器的 80 端口映射到宿主机的其他端口(例如 8080),可以使用如下命令:
bash复制代码docker run --name nginx-container -d -p 8080:80 nginx
这样你就可以通过 http://<宿主机IP>:8080 来访问 Nginx 服务。
3. 挂载自定义配置文件
如果你想使用自己的 Nginx 配置文件,可以通过 -v 选项将本地的配置文件挂载到容器中。例如,将本地的 /path/to/nginx.conf 配置文件挂载到容器中的 /etc/nginx/nginx.conf:
bash复制代码docker run --name nginx-container -d -p 80:80 -v /path/to/nginx.conf:/etc/nginx/nginx.conf nginx
4. 挂载静态网页文件
如果你有静态网页文件想要提供给 Nginx,可以使用 -v 挂载本地目录到容器中。例如,如果网页文件在 /path/to/html 目录下,可以这样运行:
bash复制代码docker run --name nginx-container -d -p 80:80 -v /path/to/html:/usr/share/nginx/html nginx
这样,Nginx 将提供 /path/to/html 目录下的静态文件。
5. 设置环境变量
如果你需要设置一些 Nginx 的环境变量,可以通过 -e 选项来设置。例如:
bash复制代码docker run --name nginx-container -d -p 80:80 -e NGINX_HOST=example.com -e NGINX_PORT=80 nginx
6. 查看容器日志
运行容器后,你可以查看 Nginx 容器的日志来调试或查看运行状态:
bash复制代码docker logs nginx-container
7. 进入容器内部
如果你需要进入容器内部进行调试,可以使用 docker exec 命令:
bash复制代码docker exec -it nginx-container bash
这会进入容器的 shell,允许你查看 Nginx 配置、日志文件等。
8. 停止和删除容器
如果你想停止容器并删除它,可以使用以下命令:
-
停止容器:
bash复制代码docker stop nginx-container
-
删除容器:
bash复制代码docker rm nginx-container
docker中的容器只给了运行必备的系统函数库和依赖
因此ll vi 命令无法使用 在容器内修改文件非常困难那么就通过数据卷将容器中的内容和宿主机绑定,通过宿主机操作容器内的文件
数据卷的介绍和使用(volume)其实就类似虚拟机和windows主机的关系
常用的volume命令
| 命令 | 说明 |
|---|---|
| docker volume create | 创建数据卷 |
| docker volume ls | 查看所有数据卷 |
| docker volume rm | 删除指定数据卷 |
| docker volume inspect | 查看某个数据卷的详情 |
| docker volume prune | 清除数据卷 |
创建容器的时候配置上 卷 使用 -v参数
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx
如何查看创建的nginx卷 ?
docker volume ls
查看卷挂在到宿主机的哪个位置?
docker volume inspect html
[
{
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/html/_data", 挂载的目录位置
"Name": "html",
"Options": {},
"Scope": "local"
}
]
这个就是卷在宿主机的位置 cd /var/lib/docker/volumes/html/_data 可以cd进去在宿主机内修改
bind mount 与 volume 的区别总结:
| 特性 | Bind Mount | Volume |
|---|---|---|
| 存储位置 | 直接映射宿主机的文件或目录 | Docker 管理的存储,不依赖于宿主机 |
| 数据持久化 | 宿主机删除文件或目录会删除挂载数据 | 数据独立于宿主机,容器删除后数据不丢失 |
| 适用场景 | 开发环境、需要共享宿主机文件的场景 | 持久化数据、多个容器共享数据、需要备份和迁移的场景 |
| 易用性 | 需要手动指定宿主机路径 | Docker 自动管理,可以通过命令轻松创建和管理 |
| 实时同步 | 宿主机和容器实时同步 | 容器可以修改 volume 内容,但宿主机路径不可直接访问(除非通过挂载) |
总结:
-
Bind mount 更适用于开发场景,方便共享宿主机的文件或目录,实时同步数据。
-
Volume 更适用于生产环境,特别是当你需要持久化数据或者多个容器共享数据时。它也更易于管理和备份。
根据你的应用场景选择合适的挂载方式。如果你需要在宿主机和容器之间频繁共享配置文件或代码,bind mount 是合适的选择。如果你需要持久化数据库数据或跨多个容器共享存储,volume 更合适
在docker容器中部署minio
docker run -p 9000:9000 -p 90
docker run -p 9000:9000 -p 9001:9001 minio/minio server /mnt/docker/data --console-address ":9001"
在这个命令中:
-
-p 9000:9000和-p 9001:9001是将容器的端口映射到主机的端口。 -
server /mnt/docker/data指定 MinIO 使用/mnt/docker/data作为数据存储目录。 -
--console-address ":9001"设置 MinIO 控制台的监听地址为:9001,即监听在主机的 9001 端口。
622

被折叠的 条评论
为什么被折叠?



