开发环境搭建-4:WSL 配置 docker 运行环境

news2025/1/30 11:05:18

在 WSL 环境中构建:WSL2 (2.3.26.0) + Oracle Linux 8.7 官方镜像

基本概念说明

容器技术

利用 Linux 系统的 文件系统(UnionFS)、命名空间(namespace)、权限管理(cgroup),虚拟出一个独立于主系统的文件系统(文件、网络、权限与主机相互独立),由于 Linux 系统一切均基于文件,因此这样就可实现多个虚拟环境在同一主机上的运行

  1. 容器技术 VS 虚拟机 VS 实机运行
    1. 实机运行 = 软件直接在硬件上运行
      直接运行在硬件上效率高,但灵活度太低、硬件成本高
    2. 虚拟机 = 利用计算机硬件的功能,虚拟化一个完整的系统
      安全,虚拟系统支持的种类多,但虚拟系统负责运行效率低
    3. 容器技术 = 共用系统底层,利用系统实现不同容器、容器与主机间的隔离
      运行效率高、灵活性高
  2. 重要概念
    1. 容器 Container:每个独立划分的空间,里边包含了独立的文件系统,称为容器,镜像在其中运行
    2. 源 Registry:管理镜像的仓库
    3. 镜像 Image:可以将现有的容器打包 / 使用构建工具创建镜像,便于分发部署
  3. 容器技术的未来
    1. 容器进一步发展,从单一服务器扩展到整个集群、多个集群都使用容器构建系统,此时 docker 就力不从心了,需要更高级的专门系统,进行集群级的容器管理
      --> 容器编排系统,如 k8s,OpenShift 等
      参考资料:https://www.thebyte.com.cn/architecture/container.html

容器运行时

粗略的来说,容器运行时 = 控制容器的管理软件 + 提供外界管理的界面(命令行、API 等)
常见的容器运行时有:

  1. docker:容器的创始者,应用广泛,但运行时需要 root 权限,不够安全
  2. podman:redhat 改进的容器运行时,是 centos 预装的运行时,无需 root 权限更安全
  3. k8s:实际上是容器编排软件(容器编排 = 利用计算机自动化实现集群级大量容器的管理)

这里选用比较常见的 docker 运行时

安装 docker 流程

参考资料(清华 docker-ce 源):https://mirror.tuna.tsinghua.edu.cn/help/docker-ce/

清理冲突软件、旧版软件

容器运行时不能相互共存。即:如果要安装 docker,则需要卸载 podman 等其他运行时
同一运行时的不同版本不能互存。如:如果要安装新版 docker,则需要删除原来存在的旧版

卸载冲突软件(以 podman 为例)

  1. 查询是否安装了 podman 相关软件

    sudo rpm -qa | grep podman
    

    若指令执行有相关输出,则这些软件是 podman 相关的软件

  2. 卸载 podman(如果上面查询到安装了相关软件)

    1. 将 podman 中所有容器停止

      podman stop $(podman ps -aq)
      
    2. 将 podman 中所有容器删除

      podman rm -f $(podman ps -aq)
      
    3. 将 podman 中所有镜像删除

      podman rmi $(podman images -q)
      
    4. 删除 podman 软件及工具链

      sudo dnf uninstall -y podman podman-docker buildah skopeo
      

卸载原版docker

如果原来安装过 docker,需要将原版 docker 先卸载
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装docker

配置 docker 仓库

这里第 3 步是关键,将原来的官方地址替换为清华源地址,实现 docker 软件安装时的加速
sudo yum install -y yum-utils
# 配置原版仓库地址
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 替换为清华源地址
sudo sed -i 's+https://download.docker.com+https://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo

安装 docker

yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

配置 docker 服务

注意:docker 相关指令,都需要 root 权限。root 权限配置可参考我的文章《配置 WSL (类 centos 的 oracle linux 官方镜像)》

安装完成后,docker 服务默认未启动、且开机不自启,这里设置为开机启动、并直接启动

# 设置 docker 开机启动
sudo systemctl enable dockerd

# 启动 docker 服务
sudo systemctl start docker

若之后想控制 docker 的启动/停止/重启,设置/取消开机自启,可执行以下指令

# 启动/停止/重启 docker
# 一般修改 docker 配置后,都需要重启 docker 服务使配置生效
sudo systemctl start/stop/restart docker

# 设置/取消 docker 开机自启
sudo systemctl enable/disable docker

配置 docker 国内镜像仓库加速

  • docker 安装加速(前面介绍的):docker 软件本身安装的加速
  • docker 镜像仓库加速(这一节介绍的):使用 docker 下载容器镜像时的加速

通用配置如下
参考文章:https://blog.csdn.net/liuxin_hello/article/details/139654089

# 1. 打开 docker 配置文件
sudo vim /etc/docker/daemon.json

# 在配置文件中添加以下内容
{  
  "registry-mirrors": [  
    "https://registry.docker-cn.com",  
    "http://hub-mirror.c.163.com",  
    "https://docker.mirrors.ustc.edu.cn"  
    // 可以继续添加其他镜像源地址....
  ]  
}

这里配置 daocloud.io 的加速
daocloud 镜像加速地址详情:https://github.com/DaoCloud/public-image-mirror
!!!感谢 dcaocloud 等国内公益镜像加速服务提供者!!!


# 1. 打开 docker 配置文件
sudo vim /etc/docker/daemon.json

# 在配置文件中添加以下内容
{  
  "registry-mirrors": [  
    "https://docker.daocloud.io",
    "https://registry.docker-cn.com",  
    "http://hub-mirror.c.163.com",  
    "https://docker.mirrors.ustc.edu.cn"  
  ]  
}

# 2. 保存文件

# 3. 重启docker 服务
sudo systemctl restart docker

注意:

  1. 修改配置文件后,需要重启 docker 服务
  2. 修改配置文件、重启 docker 服务,都需要root 权限

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

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

相关文章

Git 如何将旧仓库迁移新仓库中,但不显示旧的提交记录

一、异常错误 场景:我想把旧仓库迁移新仓库中,放进去之后,新仓库会显示这个项目之前的所有提交,如何不显示这些旧的提交? 二、原因 我们需要将旧仓库迁移新仓库中,但是又不想在新仓库中显示旧的提交记录…

使用Python和Qt6创建GUI应用程序--关于Qt的一点介绍

关于Qt的一点介绍 Qt是一个免费的开源部件工具包,用于创建跨平台GUI应用程序,允许应用程序从Windows瞄准多个平台,macOS, Linux和Android的单一代码库。但是Qt不仅仅是一个Widget工具箱和功能内置支持多媒体,数据库&am…

4、PyTorch 第一个神经网络,手写神经网络的基本部分组成

假设有一个二维数据集,目标是根据点的位置将它们分类到两个类别中(例如,红色和蓝色点)。 以下实例展示了如何使用神经网络完成简单的二分类任务,为更复杂的任务奠定了基础,通过 PyTorch 的模块化接口&#…

挂载mount

文章目录 1.挂载的概念(1)挂载命令:mount -t nfs(2)-t 选项:指定要挂载的文件系统类型(3)-o选项 2.挂载的目的和作用(1)跨操作系统访问:将Windows系统内容挂载到Linux系统下(2)访问外部存储设备(3)整合不同的存储设备 3.文件系统挂载要做的事…

算法刷题Day30

题目链接 描述 解题思路 考点:动态规划 dp[i][j]表示当前坐标的最小路径和dp初始化状态转移: dp[i][j] matrix[i][j] min(dp[i-1][j],dp[i][j-1]) 比较正上方和正左方的路径和哪个小。取小的那条路 代码 import copy class Solution:def minPathS…

【R语言】数学运算

一、基础运算 R语言中能实现加、减、乘、除、求模、取整、取绝对值、指数、对数等运算。 x <- 2 y <- 10 # 求模 y %% x # 整除 y %/% x # 取绝对值 abs(-x) # 指数运算 y ^x y^1/x #对数运算 log(x) #log()函数默认情况下以 e 为底 双等号“”的作用等同于identical(…

DeepSeek助攻!VS Code+Continue 解放双手编程!

简介 要想在vscode中采用AI&#xff0c;那么就需要添加AI插件&#xff0c;通过API来访问不同的模型。 Continue 插件 一款常用的AI代码助手&#xff0c;可以通过vscode和jetbrains来自动补全&#xff0c;推演代码。还有聊天功能。 https://marketplace.visualstudio.com/item…

当高兴、尊重和优雅三位一体是什么情况吗?

英语单词 disgrace 表示“失脸&#xff0c;耻辱&#xff0c;不光彩&#xff0c;名誉扫地”一类的含义&#xff0c;可做名词或动词使用&#xff0c;含义基本一致&#xff0c;只是词性不同。 disgrace n.丢脸&#xff1b;耻辱&#xff1b;不光彩&#xff1b;令人感到羞耻的人(或…

JVM栈溢出线上环境排查

#查看当前Linux系统进程ID、线程ID、CPU占用率&#xff08;-eo后面跟想要展示的列&#xff09; ps H -eo pid,tid,%cpups H -eo pid,tid,%cpu |grep tid #使用java jstack 查看进程id下所有线程id的情况 jstack pid 案例2 通过jstack 排查死锁问题 #启动java代码 jstack 进…

Sprintboot原理

配置优先级 Springboot中支持的三种配置文件&#xff1a; application.propertiesapplication.ymlapplication.yaml java系统属性&#xff1a;-Dxxxxxx 命令行参数&#xff1a;-xxxxxx 优先级&#xff1a;命令行参数>java系统属性>application.properties>applicat…

架构技能(四):需求分析

需求分析&#xff0c;即分析需求&#xff0c;分析软件用户需要解决的问题。 需求分析的下一环节是软件的整体架构设计&#xff0c;需求是输入&#xff0c;架构是输出&#xff0c;需求决定了架构。 决定架构的是软件的所有需求吗&#xff1f;肯定不是&#xff0c;真正决定架构…

动态规划<九>两个数组的dp

目录 引例 LeetCode经典OJ题 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 6.第六题 7.第七题 引例 OJ传送门LeetCode<1143>最长公共子序列 画图分析&#xff1a; 使用动态规划解决 1.状态表示 ------经验题目要求 经验为选取第一个字符串的[0,i]区间以及第二个字…

浅析百度AOI数据与高德AOI数据的差异性

目录 前言 一、AOI属性数据 1、百度AOI数据 2、高德AOI数据 二、AOI矢量边界 1、百度AOI空间范围 2、高德AOI空间范围 三、数据获取频次和难易程度 1、接口限制 2、数据转换成本 四、总结 前言 在当今数字化时代&#xff0c;地理信息数据的精准性和丰富性对于城市规划…

白平衡与色温:摄影中的色彩密码

目录 一、色温&#xff1a;光线的色彩温度 &#xff08;一&#xff09;色温的定义与原理 &#xff08;二&#xff09;常见光源的色温 &#xff08;三&#xff09;相机色温与环境色温 二、白平衡&#xff1a;还原真实色彩的关键 &#xff08;一&#xff09;白平衡的定义与…

【Android】布局文件layout.xml文件使用控件属性android:layout_weight使布局较为美观,以RadioButton为例

目录 说明举例 说明 简单来说&#xff0c;android:layout_weight为当前控件按比例分配剩余空间。且单个控件该属性的具体数值不重要&#xff0c;而是多个控件的属性值之比发挥作用&#xff0c;例如有2个控件&#xff0c;各自的android:layout_weight的值设为0.5和0.5&#xff0…

深度学习|表示学习|卷积神经网络|参数共享是什么?|07

如是我闻&#xff1a; Parameter Sharing&#xff08;参数共享&#xff09;是卷积神经网络&#xff08;CNN&#xff09;的一个重要特性&#xff0c;帮助它高效地处理数据。参数共享的本质就是参数“本来也没有变过”。换句话说&#xff0c;在卷积层中&#xff0c;卷积核的参数&…

【25考研】人大计算机考研复试该怎么准备?有哪些注意事项?

人大毕竟是老牌985&#xff0c;复试难度不会太低&#xff01;建议同学认真复习&#xff01;没有机试还是轻松一些的&#xff01; 一、复试内容 由公告可见&#xff0c;复试包含笔试及面试&#xff0c;没有机试&#xff01; 二、参考书目 官方无给出参考书目&#xff0c;可参照…

国内优秀的FPGA设计公司主要分布在哪些城市?

近年来&#xff0c;国内FPGA行业发展迅速&#xff0c;随着5G通信、人工智能、大数据等新兴技术的崛起&#xff0c;FPGA设计企业的需求也迎来了爆发式增长。很多技术人才在求职时都会考虑城市的行业分布和发展潜力。因此&#xff0c;国内优秀的FPGA设计公司主要分布在哪些城市&a…

DeepSeek-R1:将强化学习用于激励大型语言模型的推理能力

目录 引言 一、DeepSeek-R1的贡献 二、DeepSeek-R1的方法 2.1、DeepSeek-R1-Zero&#xff1a;基础模型上的强化学习 2.2、DeepSeek-R1&#xff1a;冷启动强化学习 2.3、蒸馏&#xff1a;赋予小模型推理能力 三、DeepSeek-R1实验结果 3.1、模型优点 3.2、模型缺点 四、…

DPO、KTO、DiffusionDPO

DPO&#xff08;Direct Preference Optimization&#xff09; 原文来自于 https://arxiv.org/pdf/2305.18290&#xff0c; Bradley-Terry (BT)模型&#xff0c;假设人的喜欢遵循下面的公式&#xff0c;给定x&#xff0c;得到 y 1 y_1 y1​和 y 2 y_2 y2​分别遵循以下关系&am…