Linux子系统安装docker-engine,国内镜像

导读

环境:Ubuntu 22.04.5 LTS、Windows 11、WSL 2

背景:工作中用到了milvus、MySQL、mongodb、redis,milvus使用docker安装非常方便,而无法安装桌面版docker

时间:20250109

说明:Linux子系统的Ubuntu安装docker,运行milvus,镜像仅限当前测试能用

官方文档:Ubuntu 安装 Docker 官方文档

 1、卸载与docker冲突的软件包

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

该Ubuntu版本不存在需要卸载的包

  • docker.io
  • docker-compose
  • docker-compose-v2
  • docker-doc
  • podman-docker
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

2、设置docker的apt仓库

# 添加docker官方的 GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 将docker加入到apt仓库:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

3、安装docker相关的包

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4、配置国内支持的镜像加速

镜像来源:2024年最新国内可用的Docker镜像加速器地址汇总

# 配置镜像加速
echo '{"registry-mirrors": ["https://docker.1ms.run"]}' | sudo tee /etc/docker/daemon.json > /dev/null
# 重新载入和重启docker
sudo systemctl daemon-reload && sudo systemctl restart docker

5、测试

sudo docker run hello-world

出现以下效果为成功:

jack@DESKTOP-MBL51MM:~$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:5b3cc85e16e3058003c13b7821318369dad01dac3dbb877aac3c28182255c724
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

<think>我们正在处理一个用户问题:在Linux中执行yum命令时提示“sudo: yum:找不到命令” 根据引用内容,我们知道yum是CentOS、Redhat等系统的包管理器,而apt是Ubuntu、Debian等系统的包管理器。 用户遇到这个错误,很可能是因为他正在使用的系统不是基于RPM的(即不是CentOS或Redhat),而是基于Debian的(如Ubuntu),因此系统中没有yum命令。 解决方案: 1. 首先确认用户系统的Linux发行版。可以通过以下命令查看: ```bash cat /etc/os-release ``` 2. 如果系统是Ubuntu或Debian,那么应该使用apt命令代替yum。例如,用户原本想执行`sudo yum remove docker`,应改为: ```bash sudo apt remove docker ``` 3. 如果用户确实需要在非yum系统上使用yum(这种情况很少见),那么可以尝试安装yum,但通常不推荐,因为包管理混乱可能导致系统问题。 但是,用户的问题中提到了“卸载Docker相关组件”,所以更可能是用户错误地在Ubuntu系统上使用了CentOS的命令。 因此,我们建议用户: - 确认系统类型,然后使用正确的包管理器。 - 对于Ubuntu/Debian系统,使用apt(或apt-get)来管理软件包。 另外,注意引用[1]中提到:在CentOS系统上使用yum命令时,不需要使用sudo命令,因为yum命令已经包含了root权限。但在Ubuntu上使用apt时,需要使用sudo。 所以,针对用户想卸载Docker的需求,如果确认是Ubuntu系统,可以执行: sudo apt remove docker.io # 或者具体安装docker包名 但是,Docker在Ubuntu上的包名可能是docker.io或docker-ce(如果用户按照Docker官方文档安装)。因此,更精确的做法是: sudo apt remove docker docker-engine docker.io containerd runc 或者,如果用户是通过docker官方仓库安装的,可能包名是docker-ce: sudo apt remove docker-ce docker-ce-cli containerd.io 为了彻底清除,还可以使用: sudo apt autoremove 此外,用户可能还需要删除docker相关的镜像、容器等,这些通常位于/var/lib/docker,但apt remove不会删除这些数据,需要手动删除(如果需要)。 因此,总结步骤: 1. 确认系统发行版。 2. 根据发行版选择正确的包管理器。 3. 使用正确的命令卸载docker。 如果用户不确定如何操作,可以进一步提供系统信息。 生成相关问题: 1. 如何查看Linux系统的发行版和版本? 2. 在Ubuntu系统中如何正确安装和卸载Docker? 3. 如何彻底删除Docker及其所有数据? 4. 不同Linux发行版的包管理器有哪些区别?</think>### 问题分析 当在Linux系统中执行 `sudo yum` 命令时提示 **"sudo: yum:找不到命令"**,通常由以下原因导致: 1. **系统类型不匹配**:当前系统可能不是基于RPM的发行版(如CentOS/RHEL),而是基于Debian的发行版(如Ubuntu) 2. **环境变量问题**:`yum` 命令路径未被包含在 `$PATH` 环境变量中 3. **软件包未安装**:在非RPM系统中尝试使用 `yum`(如Ubuntu) 4. **权限配置错误**:`sudo` 配置限制了命令执行 --- ### 解决方案 #### 步骤1:确认系统类型 执行以下命令查看系统信息: ```bash cat /etc/os-release ``` - 若输出包含 **`ID=ubuntu`** 或 **`ID=debian`** → 这是基于APT的系统 - 若输出包含 **`ID="centos"`** 或 **`ID="rhel"`** → 这是基于YUM的系统 #### 步骤2:根据系统类型操作 **情况A:系统是 Ubuntu/Debian(APT系统)** 1. 使用 `apt` 替代 `yum`: ```bash sudo apt update # 更新软件列表 sudo apt remove docker* # 卸载Docker组件 ``` 2. 若需安装软件(如安装Nginx): ```bash sudo apt install nginx ``` **情况B:系统是 CentOS/RHEL(YUM系统但命令缺失)** 1. 检查 `yum` 路径是否存在: ```bash which yum || ls /usr/bin/yum ``` 2. 修复环境变量: ```bash echo 'export PATH=$PATH:/usr/bin' >> ~/.bashrc source ~/.bashrc ``` 3. 重新安装 `yum`(极少数情况): ```bash sudo rpm --reinstall yum ``` **情况C:混合环境(如WSL)** - 在Windows Subsystem for Linux中: ```bash # 确认子系统类型 uname -a # Ubuntu子系统 → 使用 apt # CentOS子系统 → 检查 /etc/yum.conf 是否存在 ``` #### 步骤3:验证修复 ```bash command -v yum || command -v apt # 确认可用包管理器 ``` --- ### 关键差异总结 | 特性 | YUM系统 (CentOS/RHEL) | APT系统 (Ubuntu/Debian) | |--------------|-----------------------------|-----------------------------| | 包管理器 | `yum` 或 `dnf` | `apt` 或 `apt-get` | | 安装软件示例 | `sudo yum install nginx` | `sudo apt install nginx` | | 卸载软件示例 | `sudo yum remove docker` | `sudo apt remove docker.io` | | 配置文件路径 | `/etc/yum.conf` | `/etc/apt/sources.list` | > 📌 **注意**:在CentOS中直接使用 `yum` 无需 `sudo`(已内置root权限)[^1],而Ubuntu必须使用 `sudo apt` [^2]。 --- ### 相关问题 1. 如何查看Linux系统的详细版本信息? 2. 在Ubuntu中如何彻底卸载Docker及其所有依赖? 3. YUM和APT包管理器的底层工作原理有什么区别? 4. 如何修复Linux中的环境变量配置错误? 5. 不同Linux发行版之间迁移软件包的正确方法是什么? [^1]: `sudo yum search <package_name>` 在CentOS中实际无需`sudo`,因`yum`已内置root权限。 [^2]: APT与YUM适用于不同系统:APT用于Ubuntu/Debian(.deb包),YUM用于CentOS/RHEL(.rpm包)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值