笔记:docker安装(ubuntu 20.04)

发布于:2025-04-03 ⋅ 阅读:(17) ⋅ 点赞:(0)
sudo apt update   #sudo:以 超级用户权限 运行命令。apt update:更新 APT 软件包管理器 的软件源列表,确保安装的是最新版本的软件。

sudo apt install docker.io -y   #apt install docker.io:安装 Docker; -y:自动确认安装(否则安装过程中会提示你输入 Y/N 进行确认)

sudo systemctl enable --now docker   #systemctl enable docker:让 Docker 在系统启动时自动运行; --now:除了启用 Docker 开机自启,还立即启动 Docker 服务。 这个命令确保每次开机 Docker 都会自动启动,并且你现在就可以使用它了

#注:下面这句我用了之后再使用docker run 的话还是要加sudo,有待进一步排查
sudo usermod -aG docker $USER       #usermod -aG docker $USER:把当前用户 ($USER) 添加到 docker 用户组,这样,你可以在 不使用 sudo 的情况下运行 Docker 命令,比如 docker ps、docker run 等

newgrp docker  #让当前用户生效,无需重启。newgrp docker:让新的用户组权限 立即生效,否则你需要 重启系统 才能生效。这样你可以立刻使用 docker 命令,而不需要退出终端或重启电脑

按顺序执行这些命令,然后试试运行:

docker --version
docker run hello-world  (显示没有权限别忘了加sudo)

第一句正常,但是第二条命令会报错:

docker run hello-world

Unable to find image 'hello-world:latest' locally docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers). See 'docker run --help'.

这个错误表明 Docker 无法从官方 Docker Hub 拉取 hello-world 镜像,通常是因为 网络问题(比如访问 Docker Hub 受限或超时)

可以先试一下检查 Docker 运行状态(虽然大概不是这里的问题)

sudo systemctl restart docker  # 重启 Docker
sudo systemctl status docker   # 查看 Docker 运行状态

 如果 status 显示 active (running),说明 Docker 正常

尝试手动拉取 hello-world(大概率也会失败)

docker pull hello-world(显示没有权限别忘了加sudo)
要更换docker源https://zhuanlan.zhihu.com/p/32004414428
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://docker.m.daocloud.io"]
}
EOF                       #sudo:以 超级用户权限 运行。

#tee /etc/docker/daemon.json:将 接下来的内容(EOF 之间的部分)写入 /etc/docker/daemon.json。

#<<EOF:表示 多行输入,直到遇到 EOF 结束。

#{ "registry-mirrors": ["https://docker.m.daocloud.io"] }这是 Docker 的 JSON 配置,告诉 Docker 使用 国内镜像源 来加速拉取镜像。

#registry-mirrors:指定 镜像加速地址。

#EOF:这个 EOF 是 结束标记,告诉 Shell 写入完成,不要再继续追加内容。

使用vim或nano也可以,反正有这么个文件就行(anyway,如果显示是只读文件,别忘了vim或nano前加sudo)

此时还是不能正常使用的,需要

sudo systemctl daemon-reload    #systemctl:用于管理 systemd 服务(Linux 的服务管理工具)daemon-reload:重新加载 systemd 配置,让它识别 新的或修改后的服务配置(比如 /etc/docker/daemon.json 的更改)。
#作用:如果你修改了 Docker 的配置文件(例如换了镜像源),就需要 daemon-reload 让系统重新读取它。
 sudo systemctl restart docker   #重启 Docker 服务

此时sudo docker run hello-world应该可以正常使用了

docker-io, docker-ce区别(因为很多教程给的都是下载ce社区版,和大模型给的方法不同,故有此疑问):

维护者:https://www.zhihu.com/question/266021659/answer/1257882242

  • docker.io:由Debian团队维护,存在于Ubuntu的官方库中。

  • docker-ce:由Docker官方维护,是Docker社区版。

依赖管理:【搬运】docker.io 和 docker-ce 区别 - 小明明007 - 博客园

  • docker.io:采用apt方式管理依赖,依赖包由Ubuntu统一管理。
  • docker-ce:使用go语言管理依赖,自行管理所有依赖,确保运行稳定。


网站公告

今日签到

点亮在社区的每一天
去签到