基于WSL搭建Ubnutu 20.04.6 LTS(二)-部署Docker环境

news2025/6/7 0:57:24

Docker是一组平台即服务(PaaS)的产品。它基于操作系统层级的虚拟化技术,将软件与其依赖项打包为容器。托管容器的软件称为Docker引擎。Docker能够帮助开发者在轻量级容器中自动部署应用程序,并使得不同容器中的应用程序彼此隔离,高效工作。该服务有CE社区版和EE企业版。

文章目录

    • 一、部署Docker
      • 1.1 安装Docker Engine
      • 1.2 验证Docker引擎
      • 1.3 Docker Hub镜像加速
    • 二、安装portainer-ce中文版
      • 2.1 安装及配置容器
      • 2.2、密码遗忘的处理
    • 三、安装Nginx反向代理服务
      • 3.1 安装包
      • 3.2 服务配置
        • (1) 主配置文件
        • (2) 可用站点配置
        • 附加配置实例
      • 参考文档

一、部署Docker

1.1 安装Docker Engine

要卸载的非官方软件包有:

  • docker.io
  • docker-compose
  • docker-compose-v2
  • docker-doc
  • podman-docker

此外,Docker引擎依赖于containard和runc。Docker引擎将这些依赖捆绑成一个bundle:如果您之前已经安装或运行过containerd,请卸载它们,以避免与Docker Engine绑定的版本冲突。

# Docker旧版本检测及卸载
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

# 配置国内镜像源
## GPG源
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

## APT源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

## 更新源
sudo apt update && sudo apt upgrade

# 安装Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

1.2 验证Docker引擎

sudo docker run hello-world

该命令下载一个测试映像并在容器中运行它。当容器运行时,它打印一条确认消息并退出。
现在您已经成功安装并启动了Docker引擎。
在这里插入图片描述

1.3 Docker Hub镜像加速

由于Docker Hub镜像服务运营商(默认是国外)网络原因,会导致您拉取Docker Hub镜像变慢,甚至下载失败。
下面直接改用国内的Hub镜像加速服:

# 修改守护json配置
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://mirrors.tuna.tsinghua.edu.cn",
        "http://mirrors.sohu.com",
        "https://ustc-edu-cn.mirror.aliyuncs.com",
        "https://ccr.ccs.tencentyun.com",
        "https://docker.m.daocloud.io",
        "https://docker.awsl9527.cn"
    ]
}
EOF

# 重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker

# 如果hello-world拉取失败,可再重试一下
sudo docker run hello-world

二、安装portainer-ce中文版

2.1 安装及配置容器

# 拉取镜像
docker pull 6053537/portainer-ce

# 创建数据卷
docker volume create portainer_data

# 创建运行portainer容器
docker run -d --name portainer -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data  6053537/portainer-ce

在这里插入图片描述
提示:通过docker ps -a 获取portainer容器ID,记住这串字符后面会用到。

现在就可以通过wsl虚拟机IP,访问Portainner Web管理器了。如果不知道虚拟机IP的话,可以这样获取:
在这里插入图片描述
第一次登录需要设置Admin密码,登录效果如下
在这里插入图片描述

2.2、密码遗忘的处理

# 通过容器ID查看配置文件
docker inspect 7d9e3a47f329
 
# 查看[Mounts]块复制Source的值(也就是密码存放的位置)
# 比如:/var/lib/docker/volumes/portainer_data/_data
 
# 停止Portainer服务
stop 7d9e3a47f329
 
# 执行密码重置
~$ docker run --rm -v  /var/lib/docker/volumes/portainer_data/_data:/data portainer/helper-reset-password

当执行完成后,获取系统重新初始化的密码,选取复制它。
在这里插入图片描述
记得重新启动Portainer服务,再次访问Web管理器,密码粘入复制的内容,登录即可。当然,仍可以点击[我的账户]修改方便记得住的密码。
在这里插入图片描述

三、安装Nginx反向代理服务

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

在连接高并发的情况下,Nginx是Apache服务不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为大家选择了 epoll and kqueue作为开发模型。

3.1 安装包

# 检查并更新系统软件包
sudo apt update && sudo apt upgrade

# 安装
sudo apt-get install nginx
# 显示 nginx 的版本,编译器版本和配置参数
nginx -V

# 启动服务
sudo systemctl start nginx
# 检查服务状态
sudo systemctl status nginx

# 快速关闭 Nginx,可能不保存相关信息,并迅速终止 web 服务
nginx -s stop
# 平稳关闭 Nginx,保存相关信息,有安排的结束 web 服务
nginx -s quit
# 因改变了 Nginx 相关配置,需要重新加载配置而重载(不需要重启Nginx,只需要重新加载,就能让配置生效)
nginx -s reload

3.2 服务配置

服务配置分为两个部分

  • nginx.conf主要负责全局服务,比如全局http、ssl,日志记录以及Gzip资源压缩、虚拟主机应用服务、电子邮件服务;
  • default.conf(虚拟主机)负责主http/https及代理服务,比如server的监听端口、root根资源路径(www)位置等;

温馨提示
虚拟主机(Virtual Host)是指在一台服务器上托管多个域名或网站,通过配置不同的虚拟主机来实现多个网站共享同一台服务器资源的功能。使用虚拟主机可以让不同的网站在同一台服务器上运行,每个网站都拥有自己独立的配置和内容,就好像它们在不同的服务器上一样。

/etc/nginx/
├── nginx.conf          # 主配置文件
├── sites-available/    # 可用站点配置
├── sites-enabled/      # 已启用站点(符号链接)
├── conf.d/             # 附加配置
└── snippets/           # 可复用配置片段
(1) 主配置文件

主要是看【Virtual Host Configs】虚拟主机这节配置,引用路径是http server主机可配置路径。内容如下

user www-data;
# 工作进程的数量
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
		# 每个worker允许的客端最大连接数
        worker_connections 1024;
        # multi_accept on;
}

http {
        # ......(省略)

        ##
        # Logging Settings
		# nginx的日志级别:debug info notice warn error crit 等级逐渐升高。
		# 比如: error_log logs/error.log info;
        ##
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        # ......(省略)

        ##
        # Virtual Host Configs
        # 引用虚拟主机配置路径(可手工增加指定include 虚拟主机配置路径),支持通配符。
        ##

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

# ......(省略)
(2) 可用站点配置

Nginx在安装实例中,官方给出了一个默认的Virtual Host实例配置。你会发现default在sites-available和sites-enabled子目录中都存在,他们的区别和作用如下:

  • 【sites-available】:用于存放网站的配置目录,意为可用的网站列表,用于在需要时链接到 sites-enabled 中作为需要启用的网站。
  • 【sites-enabled】:意为已开启的网站,用于存放 sites-available 中配置文件的软链接

也就是讲,只需要在sites-available中做配置就行,Nginx是 自动链接到sites-enabled进行启用。内容如下

server {
        listen 8080 default_server;
        listen [::]:8080 default_server;

        # ......(省略)
        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;
        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
        # ......(省略)
}

其中最主要的部分如下

  • 【listen】虚拟主机服务端口,带[::]是指开放的tcp6协议端口;
  • 【root】根页面路径,也就是网站首页入口的位置;
  • 【index】首页入口文件,可以设定多个。其中index.nginx-debian.html就是Nginx官方内置的页面
  • 【try_files】大意就是请求访问时,首次进行按文件资源检查是否存在,然后按目录来检查。都不存在则调取一个404错误
附加配置实例

我们可以直接使用conf.d子目录来配置应用主机实例(文件命名为conf扩展类型),内容如下

server {
    listen       9990;  #监听端口号,如果没有域名不要用80
    server_name  192.168.1.50; #域名(多个用空格分隔)
    charset utf-8;

    #静态文件处理
    location / {
        root   /var/www/dist; #网站根目录(前端代码打包app存放位置)
        try_files $uri $uri/ /index.html;
        index  index.html index.htm;
        client_max_body_size 2048m;
    }

    #反向代理配置(指向本地应用)
    location /dev-api/ {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size 2048m;
        proxy_pass http://localhost:9991/; #转发到后端服务器地址:端口号
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}

保存成功后,执行

# 原应用实例配置修改时
sudo nginx -s reload

# 新增应用实例时
sudo systemctl restart nginx

OK,可以测试一下新的请求地址。感谢阅读

参考文档

ubuntu上安装、卸载、配置nginx
Nginx使用总结
Nginx—nginx.conf 配置结构详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2402306.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【图像处理入门】6. 频域图像处理:傅里叶变换与滤波的奥秘

摘要 频域图像处理通过傅里叶变换将图像从空间域转换到频率域,为图像增强、去噪、压缩等任务提供全新视角。本文将深入解析傅里叶变换原理,介绍低通、高通滤波的实现方式,结合OpenCV和Python代码展示频域滤波在去除噪声、增强边缘中的应用,帮助读者掌握图像频域处理的核心…

基于开源AI智能名片链动2+1模式S2B2C商城小程序的生态农庄留存运营策略研究

摘要&#xff1a;本文聚焦于生态农庄运营中的游客留存问题&#xff0c;以村长与乡亲们吸引游客进村为背景&#xff0c;深入探讨如何借助开源AI智能名片链动2 1模式S2B2C商城小程序实现游客的有效留存。通过分析该小程序在信息传递、服务整合、营销激励等方面的优势&#xff0c…

Jenkins实现自动化部署Springboot项目到Docker容器(Jenkinsfile)

Jenkins实现自动化部署Springboot项目到Docker容器 引言:为什么需要自动化部署? 在软件开发中,频繁的手动部署既耗时又容易出错。通过 Docker + Jenkins + Git 的组合,您可以实现: ✅ 一键部署:代码推送后自动构建和部署🐳 环境一致性:Docker 确保开发、测试、生产环…

【Linux】Git原理与使用

编程不仅是解决问题的艺术&#xff0c;更是对复杂性进行优雅管理的哲学。 前言 这是我自己学习Linux系统编程的第三篇笔记。后期我会继续把Linux系统编程笔记开源至博客上。 上一期笔记是关于Vim文本编辑器知识&#xff1a; 【Linux】Vim文本编辑器-CSDN博客https://blog.csdn…

A*算法实现原理以及实现步骤(C++)

算法原理&#xff1a; A*算法是一种启发式搜索算法&#xff0c;用于在图中寻找最短路径。它结合了Dijkstra算法的确保最短路径的优点和贪心最佳优先搜索的高效性。其核心在于使用一个评估函数&#xff1a; f(n) g(n) h(n) 其中&#xff1a; - g(n) 表示从起点到节点n的实际代…

Devops自动化运维---py基础篇一

python基础篇 1、基本数据类型 2、算术运算符 3、变量 变量&#xff1a;编程语言中能储存结果或能表示值的抽象概念 用途&#xff1a;用一段数据赋予一个简短、易于记忆的名字&#xff0c;方便重复使用3.1 格式转化变量 操作符号描述%s字符串%d整数%f浮点数 实例&#xff1…

平安养老险蚌埠中心支公司开展金融宣教活动

近日&#xff0c;平安养老保险股份有限公司&#xff08;以下简称“平安养老险”&#xff09;蚌埠中心支公司&#xff0c;走进某合作企业开展金融教育宣传活动。 活动现场&#xff0c;平安养老险蚌埠中心支公司工作人员通过发放宣传手册和小礼品等方式&#xff0c;向企业员工普…

Redisson简明教程—你家的锁芯该换了

1.简介 各位攻城狮们&#xff0c;你还在使用原生命令来上锁么&#xff1f;看来你还是不够懒&#xff0c;饺子都给你包好了&#xff0c;你非要吃大饼配炒韭菜&#xff0c;快点改善一下“伙食”吧&#xff0c;写代码也要来点幸福感。今天咱们就来聊聊Redisson提供的各种锁&#…

48V带极性反接保护-差共模浪涌防护方案

在工业自动化&#xff08;电动机驱动 / 工业机器人&#xff09;、交通基础设施&#xff08;充电桩 / 车载电子&#xff09;、安防系统&#xff08;监控摄像头 / 门禁&#xff09;、储能设备&#xff08;BMS / 离网控制器&#xff09;等领域&#xff0c;DC48V 电源因安全特低电压…

Python----目标检测(使用YOLO 模型进行线程安全推理和流媒体源)

一、线程安全推理 在多线程环境中运行YOLO 模型需要仔细考虑&#xff0c;以确保线程安全。Pythons threading 模块允许您同时运行多个线程&#xff0c;但在这些线程中使用YOLO 模型时&#xff0c;需要注意一些重要的安全问题。本页将指导您创建线程安全的YOLO 模型推理。 1.1、…

jvm学习第1day jvm简介,栈溢出、堆溢出

jvm学习第1day jvm简介&#xff0c;栈溢出、堆溢出 jvm简介栈线程安全栈溢出线程运行诊断堆堆溢出 方法区方法区内存溢出常量池和运行时常量池 jvm简介 jvm 是编译后的字节码文件运行的环境&#xff0c; 因此各个平台有了jvm可以运行java.class文件&#xff0c;这是Java跨平台…

用广告维持的免费 AI 图像生成工具(个人项目分享)

用广告维持的免费 AI 图像生成工具&#xff08;个人项目分享&#xff09; 免费 AI 图像生成工具网址&#xff1a;https://aiart.gcc.ac.cn/ 最近做了一个 AI 图像生成器&#xff0c;主要目标是“尽量简单”&#xff1a; 打开网页就能用不用注册、不用登录免费&#xff0c;不…

分析Web3下数据保护的创新模式

在这个信息爆炸的时代&#xff0c;我们正站在 Web3 的门槛上&#xff0c;迎接一个以去中心化、用户主权和数据隐私为核心的新时代。Web3 不仅仅是技术的迭代&#xff0c;它更是一场关于数据权利和责任的结构性变革。本文将探讨 Web3 下数据保护的创新模式&#xff0c;以期为用户…

​减少交通拥堵、提高效率、改善交通安全的智慧交通开源了。

智慧交通视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。用户只需在界面上…

协议融合驱动效能跃升:Modbus转Ethernet IP的挤出吹塑机应用

在现代工业自动化领域&#xff0c;Modbus作为一种串行通信协议&#xff0c;其稳定性和简单性被广泛应用于各种工控设备中。但随着技术的进步&#xff0c;对于更高速、更远传输距离的需求日益增长&#xff0c;这就需要将Modbus协议通过以太网进行传输&#xff0c;即实现Modbus T…

bug 记录 - 使用 el-dialog 的 before-close 的坑

需求说明 弹窗中内嵌一个 form 表单 原始代码 <script setup lang"ts"> import { reactive, ref } from "vue" import type { FormRules } from element-plus const ruleFormRef ref() interface RuleForm {name: stringregion: number | null } …

Next.js 中间件鉴权绕过漏洞 CVE-2025-29927

前言:CVE-2025-29927 是一个影响 Next.js 的严重漏洞&#xff0c;源于开发者信任了客户端请求中携带的 X-Middleware-Rewrite 头部字段。攻击者可以手动构造该头部&#xff0c;实现绕过中间件逻辑&#xff0c;访问本应受保护的资源或 API。 影响版本&#xff1a;Next.js < …

基于YOLO-NAS-Pose的无人机象群姿态估计:群体行为分析的突破

【导读】 应对气候变化对非洲象的生存威胁&#xff0c;本研究创新采用无人机航拍结合AI姿态分析技术&#xff0c;突破传统观测局限。团队在肯尼亚桑布鲁保护区对比测试DeepLabCut与YOLO-NAS-Pose两种模型&#xff0c;首次将后者引入野生动物研究。通过检测象群头部、脊柱等关键…

8天Python从入门到精通【itheima】-71~72(数据容器“序列”+案例练习)

目录 71节-数据容器“序列”的切片 1.学习目标 2.什么是序列 3.序列的常用操作——切片 4.小节总结 72节——案例练习&#xff1a;序列的切片实践 1.案例需求 2.代码实战 好了&#xff0c;又一篇博客和代码写完了&#xff0c;励志一下吧&#xff0c;下一小节等等继续&a…

dvwa10——XSS(DOM)

XSS攻击&#xff1a; DOM型XSS 只在浏览器前端攻击触发&#xff1a;修改url片段代码不存储 反射型XSS 经过服务器攻击触发&#xff1a;可能通过提交恶意表单&#xff0c;连接触发代码不存储 存储型XSS 经由服务器攻击触发&#xff1a;可能通过提交恶意表单&#xff0c;连…