当前位置: 首页 > article >正文

开发环境搭建-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 相关软件

    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.kler.cn/a/521884.html

相关文章:

  • Spring事务和事务传播机制
  • 【数据结构】动态内存管理函数
  • 低代码系统-产品架构案例介绍、明道云(十一)
  • WPS数据分析000005
  • [权限提升] 操作系统权限介绍
  • 性能测试全链路监控模式有哪些?
  • 【回溯+剪枝】回溯算法的概念 全排列问题
  • 动态规划DP 数字三角形模型 传纸条(题目分析+C++完整代码)
  • 提示词设计流程 ——《如何从0开始构建一个基于强化学习的AI智能体》使用场景为例
  • 机试题——最小矩阵宽度
  • 互联网概述
  • 【开源免费】基于Vue和SpringBoot的美食推荐商城(附论文)
  • 云计算的概念与特点:开启数字化时代的新篇章
  • 链表排序--(奇数位是升序,偶数位是降序)
  • 算法-遍历分发糖果
  • 解码大数据的四个V:体积、速度、种类与真实性
  • SpringMVC的参数处理
  • c语言中mysql_query的概念和使用案例
  • Niagara学习笔记
  • 解决Oracle SQL语句性能问题(10.5)——常用Hint及语法(7)(其他Hint)
  • 【linux】Linux 常见目录特性、权限和功能
  • LockSupport概述、阻塞方法park、唤醒方法unpark(thread)、解决的痛点、带来的面试题
  • Firewalld 防火墙
  • Python的那些事第三篇:Python编程的“调味料”与“交流术”运算符与输入输出
  • 读书笔记--分布式服务架构对比及优势
  • 基于SpringBoot的志愿者招募管理系统