Docker(②创造nginx容器)

出现 sudo: docker: command not found 说明 WSL2 的 Ubuntu 子系统中没有正确安装或配置 Docker 命令。这通常是因为 Docker 客户端未在 Ubuntu 中安装,或者 Docker Desktop 与 WSL2 的集成未启用。按以下步骤解决:

步骤 :确认 Docker Desktop 已启用 WSL2 集成

打开 Docker Desktop,点击顶部菜单栏的 Settings(齿轮图标)。

左侧导航栏选择 Resources → WSL Integration。

确保 "Enable integration with my default WSL distro" 已勾选,且你的 Ubuntu 子系统(通常显示为 Ubuntu)右侧的开关已打开(蓝色为启用)。

点击 Apply & Restart 重启 Docker Desktop,使配置生效。

常用 Docker 命令

bash 复制代码
# 查看运行中的容器
sudo docker ps

# 查看所有容器(包括停止的)
sudo docker ps -a

# 停止容器(mynginx 是容器名)
sudo docker stop mynginx

# 启动已停止的容器
sudo docker start mynginx

# 删除容器(需先停止)
sudo docker rm mynginx

# 查看本地镜像
sudo docker images

# 删除镜像(需先删除依赖该镜像的容器)
sudo docker rmi nginx

镜像(Image) 类似 "父类":它是一个只读的模板,包含了运行应用所需的所有代码、依赖、配置等(相当于类的定义)。

容器(Container) 类似 "实例":是镜像运行起来的动态实例(相当于类创建的对象)。多个容器可以从同一个镜像创建,就像一个类可以实例化多个对象。

在 Docker 中,"实例化创建容器" 的核心命令是 docker run,它通过指定一个镜像(相当于 "模板")来创建并启动一个容器实例。

用官方镜像快速创建容器

以创建一个 Nginx 容器为例(Nginx 是一个网页服务器,官方镜像已做好,直接可用):

bash 复制代码
# 格式:docker run [选项] 镜像名称 [容器内执行的命令]
sudo docker run --name mynginx -p 8080:80 -d nginx

命令拆解:

--name mynginx:给容器起个名字(mynginx),方便后续管理(不指定则 Docker 会自动生成一个随机名)。

-p 8080:80:端口映射(关键):

把宿主机(你的 Ubuntu 或 Windows)的 8080 端口,和容器内的 80 端口(Nginx 默认端口)关联起来。这样访问 http://localhost:8080 就能打开容器里的 Nginx 页面。

-d:让容器在后台运行("守护进程" 模式),不会占用当前终端。

nginx:指定要用的镜像名称(Docker 会先检查本地是否有这个镜像,没有则自动从网上拉取)。

创建后进入容器内部操作

进入正在运行的容器

用 docker exec 命令进入 mynginx 容器的终端:

bash 复制代码
sudo docker exec -it mynginx /bin/bash

执行后会进入容器内部的命令行(提示符会变成类似 root@3b77da21e3d8:/#)。

修改默认网页

Nginx 的默认页面文件在 /usr/share/nginx/html/index.html,用 nano 编辑器修改(如果容器内没有 nano,先安装):

bash 复制代码
# 安装 nano 编辑器(容器内操作)
apt update && apt install -y nano

# 编辑默认页面
nano /usr/share/nginx/html/index.html

随便改点内容(比如把 "Welcome to nginx!" 改成 "Hello Docker!"),保存退出(Ctrl+O 保存,Ctrl+X 退出)。

对比维度 Flask Nginx
本质 Python Web 开发框架 高性能 HTTP 服务器 / 反向代理
作用 开发动态内容(处理业务逻辑) 转发请求、处理静态资源、抗并发
典型场景 写用户登录接口、动态网页 部署应用、做负载均衡、托管图片
性能特点 处理逻辑强,但抗并发能力较弱 抗并发极强,适合处理静态内容

Flask 是 "做内容的":它是 Python 的一个轻量级 Web 框架,用来开发动态网页或 API 接口。比如你写一个用户注册页面、查询数据的接口,需要用 Flask 这类框架来处理逻辑(接收用户输入、操作数据库、生成动态内容)。

Nginx 是 "传内容的":它是一个高性能的服务器,主要负责接收用户的请求、传递内容、处理并发。比如 Flask 生成了一个动态页面,Nginx 会把这个页面高效地 "转发" 给用户;或者当有 1 万个用户同时访问你的 Flask 应用时,Nginx 可以合理分配请求,避免 Flask 被压垮。

用户请求先到 Nginx(相当于 "大门");

如果是静态资源(如图片、CSS),Nginx 直接返回,速度快;

如果是动态请求(如用户登录、数据查询),Nginx 转发给 Gunicorn;

Gunicorn 把请求交给 Flask 处理,Flask 生成结果后通过 Gunicorn、Nginx 返回给用户。

简单说:Gunicorn 是 Flask 的 "生产级保镖",负责高效稳定地运行 Flask;Nginx 是 "门卫 + 快递员",负责接待用户、分发静态资源、转发动态请求

相关推荐
杨浦老苏42 分钟前
文件共享应用程序Palmr
docker·群晖·网盘
小白不想白a2 小时前
【Ansible】使用ansible部署k8s集群前的准备工作脚本
容器·kubernetes·ansible
啥也不会的小胡2 小时前
深入理解 Docker:从入门到实践
docker·容器
Lin_Aries_04219 小时前
容器化简单的 Java 应用程序
java·linux·运维·开发语言·docker·容器·rpc
人逝花落空.10 小时前
docker容器的三大核心技术UnionFS(下)
运维·docker·容器
Insist75310 小时前
基于OpenEuler部署kafka消息队列
分布式·docker·kafka
程序猿费益洲11 小时前
Docker 网络详解:(一)Linux 网络虚拟化技术
linux·网络·docker·容器·云计算
神都少年12 小时前
Linux Ubuntu Docker 常用命令
linux·ubuntu·docker
再难也得平12 小时前
Docker基础与项目部署
运维·docker·容器
云宏信息12 小时前
赛迪顾问《2025中国虚拟化市场研究报告》解读丨虚拟化市场迈向“多元算力架构”,国产化与AI驱动成关键变量
网络·人工智能·ai·容器·性能优化·架构·云计算