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

在 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 相关软件

    bash 复制代码
    sudo rpm -qa | grep podman

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

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

    1. 将 podman 中所有容器停止

      bash 复制代码
      podman stop $(podman ps -aq)
    2. 将 podman 中所有容器删除

      bash 复制代码
      podman rm -f $(podman ps -aq)
    3. 将 podman 中所有镜像删除

      bash 复制代码
      podman rmi $(podman images -q)
    4. 删除 podman 软件及工具链

      bash 复制代码
      sudo dnf uninstall -y podman podman-docker buildah skopeo

卸载原版docker

如果原来安装过 docker,需要将原版 docker 先卸载

bash 复制代码
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装docker

配置 docker 仓库

这里第 3 步是关键,将原来的官方地址替换为清华源地址,实现 docker 软件安装时的加速

bash 复制代码
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

bash 复制代码
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

配置 docker 服务

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

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

bash 复制代码
# 设置 docker 开机启动
sudo systemctl enable dockerd

# 启动 docker 服务
sudo systemctl start docker

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

bash 复制代码
# 启动/停止/重启 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

bash 复制代码
# 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 等国内公益镜像加速服务提供者!!!

bash 复制代码
# 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 权限
相关推荐
大树8812 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠12 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质12 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工13 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn8613 小时前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
酣大智14 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_14 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉15 小时前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦15 小时前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
2601_9618752416 小时前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant