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

笔记:docker安装(ubuntu 20.04)

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语言管理依赖,自行管理所有依赖,确保运行稳定。

http://www.dtcms.com/a/106833.html

相关文章:

  • C# 中充血模型和‌贫血模型
  • 从查重报告入手的精准论文降重秘籍
  • 基于 Spring Cloud 与 Spring Boot 的工程项目管理系统源码:重塑工程管理新范式​
  • 文件实时备份软件PanguFlow
  • zabbix监控网站(nginx、redis、mysql)
  • 在openharmony中编译部署早期vi工具(附带vi工具源码)
  • 生产管理系统如何破解汽车零部件行业追溯难痛点
  • (Kotlin) Android使用DialogX实现iOS风格底部弹窗(带Toggle开关)
  • 算法与数据结构面试题
  • 【硬件视界8】电源供应器(PSU):计算机的“心脏“
  • 洛谷题单3-P5720 【深基4.例4】一尺之棰-python-流程图重构
  • Tomcat 部署 Jenkins.war 详细教程(含常见问题解决)
  • 存储型XSS漏洞解析
  • springBoot统一响应类型3.5.2版本
  • 【橘子大模型】关于PromptTemplate
  • 定制化管理系统与通用管理系统,谁更胜一筹?
  • MySQL的进阶语法7(索引-B+Tree 、Hash、聚集索引 、二级索引(回表查询)、索引的使用及设计原则
  • ES6对函数参数的新设计
  • 贪心算法,其优缺点是什么?
  • 第二篇:系统分析师——1-6章
  • 深入解析 Spring Boot 测试核心注解
  • 使用UDP建立连接,会存在什么问题?
  • es使用ik分词器并自定义中文词库实现热更新
  • 软件工程13 条法则
  • 空调开机启动后发出噼里啪啦的异响分析与解决
  • C语言--字符串逆序
  • Timer的底层实现原理?
  • LETTERS(DFS)
  • Java 递归全解析:从原理到优化的实战指南
  • Elasticsearch 正排索引