Linux系统配置安装docker(以ubuntu为例)

Linux系统配置安装docker(以ubuntu为例)

2 人赞同了该文章
展开目录
 

Docker 是一款基于容器技术的开源平台,它通过将应用程序及其依赖环境打包成标准化的容器(Container),实现了 “一次构建,处处运行” 的跨环境部署能力。与传统虚拟机相比,Docker 容器不依赖完整操作系统内核,而是通过 Linux 内核的 Namespace 和 Cgroup 技术实现资源隔离,具有轻量化、启动快(毫秒级)、资源占用低的显著优势。

本文提供一种尽可能安全、不重启主机、不更新系统的方法来安装docker,适用于linux操作系统,无论是公用服务器、个人主机都适用。

一、删除旧版/残留Docker

为了方便后续的docker正常安装于配置,需要要彻底删除 Linux 系统上的 Docker 及相关残留。

=================注意:=================

  1. 数据丢失:上述操作会删除所有 Docker 镜像、容器和卷,请提前备份重要数据。
  2. 依赖检查:如果其他程序依赖 Docker(如 Kubernetes),请谨慎删除。
  3. Snap 安装的 Docker:如果通过snap安装,需额外执行:
sudo snap remove docker

如果你已经清楚了以上注意事项,并做好了重要数据(镜像、容器等)的备份工作,可以按照以下步骤操作:

1. 卸载 Docker 相关包

# 停止Docker服务
sudo systemctl stop docker

# 卸载Docker软件包(适用于apt安装的版本)
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker.io podman-docker

# 卸载依赖包(可选,会删除未被其他程序使用的依赖)
sudo apt-get autoremove --purge

# 检查是否还有Docker相关包残留
dpkg -l | grep docker 

2. 删除 Docker 数据目录

# 删除Docker根目录
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

# 删除Docker配置文件
sudo rm -rf /etc/docker
sudo rm -rf /etc/containerd

# 删除Docker镜像、容器和网络(谨慎操作,会删除所有数据)
sudo rm -rf /var/lib/docker
sudo rm -rf /var/run/docker

3. 删除残留文件和符号链接

# 查找并删除所有Docker相关文件(谨慎操作)
sudo find / -name "*docker*" -exec rm -rf {} \; 2>/dev/null

# 删除Docker命令行补全文件
sudo rm -f /etc/bash_completion.d/docker 

4. 清理用户组和环境变量

# 检查并删除docker用户组(如果没有其他程序依赖)
sudo groupdel docker

# 移除用户的docker组成员身份
sudo gpasswd -d $USER docker

5. 清理系统服务和配置

# 删除Docker服务文件
sudo rm -f /etc/systemd/system/docker.service
sudo rm -f /etc/systemd/system/docker.socket

# 重新加载systemd管理器配置
sudo systemctl daemon-reload

6. 验证删除结果

# 检查Docker命令是否还存在
docker --version  # 应提示"command not found"

# 检查Docker进程是否运行
ps aux | grep docker  # 不应看到Docker相关进程

# 检查Docker目录是否存在
ls /var/lib/docker  # 应提示"no such file or directory"

二、检查主机情况

首先需要确认服务器的 Linux 发行版和版本(例如 Ubuntu、CentOS 等)以及当前 Docker 相关软件的安装情况。命令如下:

1. 查看系统发行版和版本

cat /etc/os-release

根据以上输出的结果,我的服务器运行的是 Ubuntu 22.04.5 LTS系统。

之后所有的命令都是可以直接在ubuntu系统中运行的,对于centos系统需要使用不同命令的时候我会注释。

2. 检查是否已安装Docker

docker --version

输出以上类似内容就代表目前系统中还没安装Docker。

3. 检查是否存在旧版本Docker

dpkg -l | grep docker
rpm -qa | grep docker  # 适用于CentOS/RHEL

如果你的系统中已有Docker安装,或者有残留未清除干净,请参考“一、删除旧版/残Docker”部分的内容。

4. 验证内核版本(可选)

如果你想确认当前内核版本,可以运行:

uname -r

我的系统Ubuntu 22.04 默认的内核版本(5.15)已经满足 Docker 的要求(>=3.10),因此安装过程中不会涉及内核更新。

Docker官方文档中要求操作系统的版本至少为Linux内核3.10及以上,以确保Docker能够正常运行。如果你的系统内核版本号小于3.10,则需要升级内核。​

三、安装Docker

1. 更新包索引并安装必要的依赖包

命令如下:

sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg

2. 添加 Docker 官方 GPG 密钥

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

3. 添加 Docker 官方仓库

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4. 再次更新包索引并安装 Docker 引擎

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

5. 配置非 root 用户访问(可选但推荐)

为了避免每次使用 Docker 都需要输入 sudo,可以将你的用户添加到 docker 用户组:

sudo usermod -aG docker $USER
newgrp docker

6. 配置国内 Docker 镜像源

执行以下步骤配置国内镜像源:

# 创建或编辑Docker配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://registry.docker-cn.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://hub-mirror.c.163.com",
        "https://mirror.baidubce.com",
        "https://ccr.ccs.tencentyun.com"
    ]
}
EOF

# 重新加载Docker配置并重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker

7. 验证镜像配置生效(和6. 一同执行)

# 检查Docker配置
sudo docker info | grep -A 1 'Registry Mirrors'

 

8. 检查 Docker 服务状态

sudo systemctl status docker

如果输出图中类似内容,主要是“Active:active(running)”就代表Docker服务运行正常。

9. 验证一下

sudo docker run hello-world

如果出现 "Hello from Docker!" 的输出,说明 Docker 已成功安装并运行。

四、网络问题及解决方法

1. 检查 DNS 设置

修改 Docker 的 DNS 配置,使用更可靠的公共 DNS 服务器

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/dns.conf <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --dns 8.8.8.8 --dns 1.1.1.1
EOF

# 重新加载配置并重启Docker
sudo systemctl daemon-reload
sudo systemctl restart docker

2. 使用 HTTP 镜像源(如果 HTTPS 被封锁)

某些环境可能限制了 HTTPS 访问,可以尝试配置 HTTP 镜像源

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "http://hub-mirror.c.163.com",
    "http://mirror.baidubce.com"
  ],
  "insecure-registries": [
    "hub-mirror.c.163.com",
    "mirror.baidubce.com"
  ]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

3. 检查防火墙设置

确认防火墙是否允许 Docker 通信

# 对于Ubuntu默认的ufw防火墙
sudo ufw allow 2375/tcp  # Docker默认端口
sudo ufw reload

# 对于CentOS/RHEL的firewalld
sudo firewall-cmd --zone=public --add-port=2375/tcp --permanent
sudo firewall-cmd --reload

4. 使用代理服务器(如果有可用代理)

如果服务器可以通过代理访问外网,可以配置 Docker 使用代理

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/proxy.conf <<EOF
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080"
Environment="HTTPS_PROXY=http://proxy.example.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.example.com"
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

5. 手动测试网络连接

使用 curl 命令测试与镜像源的连接

curl -v https://registry.docker-cn.com
curl -v https://docker.mirrors.ustc.edu.cn

6. 备选方案:手动下载镜像

如果上述方法都失败,可以尝试手动下载镜像文件并导入,以下以 hello-world 镜像为例

  1. 在可以访问 Docker Hub 的机器上
docker pull hello-world
docker save hello-world -o hello-world.tar

2. 将 tar 文件复制到服务器上

scp hello-world.tar user@your-server:/path/to/

3. 在服务器上导入镜像

sudo docker load -i hello-world.tar
sudo docker run hello-world

 

至此,docker安装方法介绍结束。

如果你觉得本教程对你有所帮助,欢迎赞同、喜欢、分享!!!

posted on 2025-09-03 10:56  漫思  阅读(6)  评论(0)    收藏  举报

导航