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 是 "门卫 + 快递员",负责接待用户、分发静态资源、转发动态请求

相关推荐
啦啦啦小石头11 小时前
Docker 换源
docker
等什么君!14 小时前
docker -数据卷技术
运维·docker·容器
上天_去_做颗惺星 EVE_BLUE15 小时前
Docker高效使用指南:从基础到实战模板
开发语言·ubuntu·docker·容器·mac·虚拟环境
好好沉淀16 小时前
Docker开发笔记(详解)
运维·docker·容器
禅口魔心17 小时前
Win10 + WSL2 + Docker:K510(DongshanPI-Vision)开发环境从踩坑到跑通全记录(交叉编译 + 上板运行)
docker·嵌入式开发·wsl2·k510
Ankie Wan17 小时前
cgroup(Control Group)是 Linux 内核提供的一种机制,用来“控制、限制、隔离、统计”进程对系统资源的使用。
linux·容器·cgroup·lxc
Free Tester19 小时前
基于已有容器生成Dockerfile
docker
lcx_defender19 小时前
【Docker】Docker部署运行nacos
运维·docker·容器
啦啦啦小石头19 小时前
docker添加用户权限不使用sudo
运维·docker·容器
cuber膜拜20 小时前
Weaviate 简介与基本使用
数据库·python·docker·向量数据库·weaviate