Docker 基础命令 - 以 Nginx 实战总结

发布于:2025-03-14 ⋅ 阅读:(11) ⋅ 点赞:(0)

前言

  • 操作镜像:Nginx
  • 操作环境:CentOS 7 64
  • Docker版本:1.13.1

1. 在宿主机安装 Docker 软件

可以博主写的另外一篇博客,地址:CentOS 7 64 安装 Docker

2.Docker 基本命令

2.1 拉取 Nginx 镜像

# 搜索镜像
docker search nginx
# 拉取 Nginx 镜像(latest版本)
docker pull nginx
# 拉取指定版本的 Nginx 镜像
docker pull nginx:1.13.1

在这里插入图片描述

2.2 查看本地镜像

# 列出本地存储的所有镜像
docker images
# 删除镜像
docker rmi nginx

在这里插入图片描述

2.3 运行 Nginx 容器

# 运行 Nginx 容器
# docker run -d -p 8080:80 --name <自己自定义的镜像名称> <镜像>
docker run -d -p 8080:80 --name my_test_nginx nginx

命令解析:docker run

  • 作用:创建并启动一个心得容器
  • 参数
    • -d :表示容器在后台运行(守护模式)。
    • -p 8080:80:将容器的 80 的端口映射到宿主机的 8080端口。这样,你可以通过访问宿主机的 8080 端口来访问容器内 Nginx 的服务。
    • --name my_test_nginx:为容器指定一个自定义名称。如果不指定,Docker 会自动生成一个随机名称。
    • nginx:指定使用的镜像名称。这里使用的是官方的 Nginx镜像(默认为最新版本 latest
      在这里插入图片描述

2.4 验证容器是否运行成功

2.4.1 查看容器状态

# 查看运行中的容器
docker ps
# 查看所有容器,包括已停止的
docker ps -a

如果看到 my_test_nginx 容器处于 Up 状态,说明容器运行成功。
PORTS 列显示了端口映射关系:0.0.0.0:8080->80/tcp,表示宿主机的 8080 端口映射到了容器的 80 端口。
在这里插入图片描述

2.4.2 访问 Nginx 服务

打开浏览器,访问 http://localhost:8080http://<宿主机IP>:8080,你应该会看到 Nginx 的默认欢迎页面。

# 注意不要输入https
http://127.0.0.1:8080

在这里插入图片描述

2.4.3 查看 Nginx 版本

# docker exec <容器名称或ID>  nginx -v
docker exec my_test_nginx nginx -v
命令解析:docker exec
  • 作用:在运行中的容器内部执行命令。
  • 参数
    • my_test_nginx:容器的名称或容器ID。这个是之前通过docker run创建的容器名称。
    • nginx -v:在容器内部执行的命令,用于查看 Nginx 的版本

在这里插入图片描述

2.4.4 查看 Nginx 容器日志

# docker logs <容器名称或ID>
docker logs my_test_nginx

在这里插入图片描述

2.4.5 进入 Nginx 容器内部

如果你想进入容器内部进行操作(例如修改配置文件或查看文件系统),可以运行:

# docker exec -it <容器名称或ID>  /bin/bash
docker exec -it my_test_nginx /bin/bash
命令解析:docker exec
  • 作用:在运行中的 Docker 容器内部执行命令。
  • 参数
    • -it:两个选项的组合:
      • -i:(interactive):保持 STDIN
      • -t:(tty):分配一个伪终端,让你能够像操作普通终端一样操作容器内部的命令行。
    • my_test_nginx:容器的名称或 ID。这是之前通过doker
    • /bin/bash:在容器内部执行的命令,这里指启动一个 Bash 终端
      这将打开一个交互式的 Bash 终端,让你可以在容器内部执行命令。

在这里插入图片描述

2.4.6 停止和删除

2.4.6.1 停止容器
# docker stop <容器名称或ID>
docker stop my_test_nginx 

在这里插入图片描述

2.4.6.2 删除容器
# docker rm <容器名称或ID>
docker rm my_test_nginx

在这里插入图片描述

3. 使用自定义文件配置数据卷

使用 Docker 部署 Nginx 时,合理配置数据卷(Volumes)可以实现配置文件、静态资源和日志的持久化,同时便于管理和更新。

3.1 创建数据卷文件

3.1.1 创建 Docker 数据卷

# 在使用 docker volume create 创建的数据卷(Volumes)默认存储在 Docker 的内部目录中,而不是直接映射到宿主机的某个特定路径
docker volume create nginx-config   # 配置文件
docker volume create nginx-html     # 静态资源
docker volume create nginx-logs     # 日志文件

在这里插入图片描述

3.1.2 查看 Docker 数据卷内部路径

可以通过 docker volume inspect 命令查看数据卷的详细信息,包括其在宿主机上的实际存储路径。

# 查看数据卷的存储路径
docker volume inspect nginx-config

在这里插入图片描述

3.2 准备宿主机上的文件

在宿主机上准备需要挂载的文件和目录:

  1. 配置文件:将 Nginx 的配置文件(如 nginx.confdefault.conf)放在宿主机的某个目录中,例如 /home/user/nginx/nginx-config
  2. 静态资源:将静态文件(如 HTML、图片等)放在 /home/user/nginx/nginx-html 目录中。
  3. 日志目录:创建一个日志目录 /home/user/nginx/nginx-logs,用于存储 Nginx 的日志文件。
    在这里插入图片描述

3.3 将文件复制到数据卷

将本地文件复制到 Nginx 容器内部的原因主要有以下几点,这些原因涉及配置管理、数据持久化、开发便利性以及安全性等多个方面。以下是一些具体场景和原因:

3.3.1. 配置管理

Nginx 的行为主要由其配置文件(如 nginx.conf 和站点配置文件)控制。在开发和部署过程中,你可能需要频繁修改这些配置文件以适应不同的需求。将本地配置文件复制到容器内部,可以实现以下目标:

  • 快速更新配置:无需重新构建镜像,直接通过 docker cp 将修改后的配置文件复制到容器中,并重新加载 Nginx 服务即可生效。
  • 版本控制:将配置文件存储在宿主机上,便于使用版本控制系统(如 Git)管理配置文件的变更历史。
  • 一致性:确保开发环境和生产环境使用相同的配置文件,减少因环境差异导致的问题。
3.3.1.1 首先启动容器并绑定数据卷nginx-config
# 
docker run -d -p 8080:80 --name my_test_nginx -v nginx-config:/etc/nginx nginx tail -f /dev/null
3.3.1.2 复制配置文件:nginx.conf和default.conf
# 将宿主机本地的文件nginx.conf复制到docker里面
docker cp /home/dgs/nginx/nginx-config/nginx.conf  my_test_nginx:/etc/nginx/nginx.conf

docker cp /home/dgs/nginx/nginx-config/default.conf my_test_nginx:/etc/nginx/conf.d/default.conf
3.3.1.3 重启 nginx 容器
# docker exec -it <容器名称> nginx -s reload
docker exec -it my_test_nginx nginx -s reload

在这里插入图片描述

3.3.2. 静态资源管理

Nginx 通常用于提供静态资源(如 HTML 文件、图片、CSS 文件等)。将本地静态资源复制到容器内部,可以实现以下目标:

  • 快速部署:直接将静态资源复制到容器的 /usr/share/nginx/html 目录中,无需重新构建镜像,即可快速更新网站内容。
  • 开发便利性:在开发过程中,你可以直接在宿主机上修改静态资源,然后通过 docker cp 将其复制到容器中,立即看到效果。
  • 数据持久化:通过挂载数据卷,即使容器被删除,静态资源也不会丢失,便于长期维护。
3.3.2.1 首先启动容器并绑定数据卷nginx-html
docker run -d -p 8080:80 -v nginx-html:/usr/share/nginx/html --name my_test_nginx nginx
3.3.2.2 自定义首页:index.html
echo "<h1>hello dgs , docker nginx</h1>" index.html
3.3.2.3 复制 index.html 文件到 docker 容器内
docker cp /home/dgs/nginx/nginx-html/index.html my_test_nginx:/usr/share/nginx/html/index.html
3.3.2.4 重启 nginx 容器
# docker exec -it <容器名称> nginx -s reload
docker exec -it my_test_nginx nginx -s reload

在这里插入图片描述
在这里插入图片描述


3.3.3. 日志管理

Nginx 的日志文件(如 access.logerror.log)通常存储在 /var/log/nginx 目录中。将日志文件存储在宿主机上,可以实现以下目标:

  • 持久化日志:即使容器被删除,日志文件仍然保留在宿主机上,便于后续分析和审计。
  • 集中管理:将日志文件存储在宿主机的某个目录中,便于使用日志管理工具(如 logrotate)进行集中管理和轮转。
  • 安全审计:日志文件是安全审计的重要依据,将其存储在宿主机上可以提高安全性。
3.3.3.1 首先启动容器并绑定数据卷nginx-logs
docker run -d -p 8080:80 -v nginx-logs:/var/log/nginx --name my_test_nginx nginx
3.3.2.3 复制 docker 容器内日志到宿主机
docker cp my_test_nginx:/var/log/nginx /home/dgs/nginx/nginx-logs

在这里插入图片描述

3.4 命令启动总结

启动 Nginx 容器时,将数据卷挂载到容器的相应目录:

docker run -d --name my_test_nginx \
  -p 8080:80 \
  -v nginx-config:/etc/nginx \
  -v nginx-html:/usr/share/nginx/html \
  -v nginx-logs:/var/log/nginx \
  nginx

4 重点总结

通过本次学习,我们全面掌握了 Docker 的基础命令,从镜像的拉取与管理,到容器的创建、启动、停止与删除,再到日志与数据的管理以及配置文件的操作。以 Nginx 为例的实践操作,让我们能够将理论知识应用到实际场景中,为后续的开发与部署工作打下了坚实的基础。Docker 的这些基础命令是日常开发和运维工作中最常用的工具,熟练掌握它们将大大提高我们的工作效率。

  • 搜索镜像:docker search nginx :用于在 Docker Hub 上搜索 Nginx 镜像。
  • 拉取镜像:docker pull nginx :从 Docker Hub 拉取官方的 Nginx 镜像。
  • 查看本地镜像:docker images :列出本地存储的所有镜像。
  • 删除镜像:docker rmi nginx :删除本地的 Nginx 镜像。
  • 运行容器:docker run -d -p 8080:80 --name my_test_nginx nginx :在后台运行一个 Nginx 容器,并将容器的 80 端口映射到宿主机的 8080 端口。
  • 查看运行中的容器:docker ps :列出当前正在运行的容器。
  • 查看所有容器:docker ps -a :列出所有容器,包括已停止的。
  • 停止容器:docker stop my_test_nginx :停止名为 my_test_nginx 的容器。
  • 启动容器:docker start my_test_nginx :启动已停止的容器。
  • 删除容器:docker rm my_test_nginx :删除容器。
  • 进入容器:docker exec -it my_test_nginx /bin/bash :进入正在运行的容器并启动交互式 Bash 终端。
  • 查看容器日志:docker logs my_test_nginx :查看 Nginx 容器的日志输出。
  • 将日志复制到宿主机:docker cp my_test_nginx:/var/log/nginx/access.log /path/to/destination/access.log :将容器内的日志文件复制到宿主机指定路径。
  • 使用数据卷挂载日志目录:docker run -d --name my_test_nginx -v /home/user/nginx-logs:/var/log/nginx nginx :将容器的日志目录挂载到宿主机的指定目录。
  • 创建独立的数据卷并指定文件:docker volume create nginx-config :创建一个名为 nginx-config 的数据卷用于存储 Nginx 配置文件。
  • 将配置文件复制到数据卷:docker cp /home/user/nginx-config/nginx.conf my_test_nginx:/etc/nginx/nginx.conf :将宿主机上的配置文件复制到数据卷中。
  • 挂载配置文件数据卷:docker run -d --name my_test_nginx -v nginx-config:/etc/nginx nginx :运行容器时挂载配置文件数据卷。
  • 直接在容器中替换:进入容器后,使用 docker cp 命令将新的 index.html 文件复制到容器的 /usr/share/nginx/html 目录。
  • 使用数据卷挂载:在启动容器时挂载包含新 index.html 文件的目录到 /usr/share/nginx/html

网站公告

今日签到

点亮在社区的每一天
去签到