Docker安装及使用记录

news2024/12/31 7:05:10

本文汇总一下 Docker 的安装过程和使用过程中的问题

安装过程

Windows

Linux

  1. 更新软件源:Linux安装前可先更新以下各自发行版包管理器的软件源

  2. 卸载旧版本:如果之前安装过的话,可以先卸载

yum remove docker  docker-common docker-selinux docker-engine
  1. 安装 docker-ce :安装 docker 时直接通过包管理器安装 docker-ce 这个包名即可

CentOS 7/8

# 安装最新版本
yum -y install docker-ce
# 安装指定版本
yum -y install docker-ce-18.03.1.ce

版本号可以通过 yum list docker-ce --showduplicates | sort -r 命令得到,如下图所示

在这里插入图片描述

Ubuntu

直接 sudo apt install docker-ce 安装即可

如果失败可尝试以下命令

sudo apt update

安装Docker所需的依赖项
sudo apt install apt-transport-https ca-certificates curl software-properties-common

使用 Docker 命令

下面是一些使用 docker 的命令

# 启动Docker服务
sudo systemctl start docker

# 设置 docker 开机启动
sudo systemctl enable docker

问题记录

Got permission denied while trying to connect to the Docker daemon socket

执行 docker ps 时报错,详细信息如下:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/json: dial unix /var/run/docker.sock: connect: permission denied

可尝试的解决办法:

  1. 使用 sudo 获取管理员权限,运行 docker 命令
  2. 由于 docker 守护进程启动的时候,会默认赋予名字为 docker 的用户组读写 Unix socket 的权限,因此只要创建 docker 用户组,并将当前用户加入到 docker 用户组中,那么当前用户就有权限访问 Unix socket 了,进而也就可以执行 docker 相关命令了。
#添加docker用户组,安装完docker后应该已经有了,不用再添加
sudo groupadd docker
#将登陆用户加入到docker用户组中
sudo gpasswd -a $USER docker
#更新用户组
newgrp docker

Error response from daemon: Get “https://registry-1.docker.io/v2/”

问题现象如下:

使用虚拟机安装 docker 拉取镜像失败

在这里插入图片描述

报以下错误:
vvl@ubuntu:/etc/systemd$ docker pull nginx
Using default tag: latest
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

宿主机直接访问 https://registry-1.docker.io/v2/,能打开
在这里插入图片描述

汇总一下解决办法

更换镜像地址

使用各云服务商提供的镜像地址或者其他Docker镜像站提供的镜像地址
参考:Docker更换镜像源(附国内可用镜像源地址)

修改/etc/docker/daemon.json这个文件即可(记得用sudo,如果文件不存在可以自己新建一个同名文件)

sudo tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": ["https://dockerhub.icu", 
    	"https://docker.1panel.live",
    	"https://hub.rat.dev"
    	]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

如果更换了镜像发现还是不行,有可能是镜像地址已经失效了,需要另外寻找可用的镜像地址,或者尝试下面的办法

修改 DNS 配置

如果是DNS问题:网络 ping ip 能通,但是 ping 域名不通,需要修改DNS

以 UbuntuServer 24.04 LTS 为例
如果是虚拟机安装,刚开始 /etc/resolve.conf 文件是下面这样的

在这里插入图片描述
这个文件的内容解释如下

  • nameserver表示解析域名时使用该地址指定的主机为域名服务器,此处可指定多个。这里127.0.0.53 这个地址是个本地回环地址,和127.0.0.1一样的,发往那个地址的包不会出现在本地系统以外的地方
  • search localdomain 表示当提供了一个不包括完全域名的主机名时,在该主机名后自动添加localdomain的后缀。search和nameserver可同时存在,或者只存在其中一个
  • options ends0 trust-ad

修改 /etc/resolv.conf

#nameserver 127.0.0.53
options edns0 trust-ad
search localdomain
nameserver 8.8.8.8
nameserver 8.8.4.4

然后执行

sudo systemctl daemon-reload
sudo systemctl restart docker

注意:直接修改 /etc/resolv.conf 其实是临时修改,重启系统会重新还原

修改 /etc/systemd/resolved.conf,例如:

[Resolve]
DNS=8.8.8.8 114.114.114.114 192.168.4.2

重启域名解析服务

sudo systemctl restart systemd-resolved
sudo systemctl enable systemd-resolved

备份当前的 /etc/resolve.conf,并重新设置 /run/systemd/resolve/resolv.conf 到/etc/resolve.conf的软链接

mv /etc/resolv.conf /etc/resolv.conf.bak
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

查看验证:cat /etc/resolv.conf

下面是一些常用的DNS

nameserver 114.114.114.114     
nameserver 114.114.115.115
# 阿里DNS
nameserver 223.5.5.5
nameserver 223.6.6.6
# 百度DNS
nameserver 180.76.76.76
# Google DNS
nameserver 8.8.8.8
nameserver 8.8.4.4
# OpenDNS
nameserver 208.67.222.222
nameserver 208.67.220.220

Ubuntu 修改 DNS 配置

Ubuntu 修改DNS参考这篇文章:https://forum.ubuntu.org.cn/viewtopic.php?style=9&t=491181

ubuntu 在域名解析时,最直接使用的是/etc/resolve.conf文件,它是/run/systemd/resolve/
resolve.conf的软链接
在这里插入图片描述
初始内容如下
在这里插入图片描述

如果 systemd-resolve 命令不存在,是因为在systemd 239中,systemd-resolve 被重命名为resolvectl。在大多数情况下,resolvectl 提供了与systemd-resolve相同的选项,但是命名可能略有不同。 systemd-resolve status 使用 resolvectl status 代替

配置 docker daemon 代理

参考:https://www.cnblogs.com/Chary/p/18096678

[Service]
Environment="HTTP_PROXY=http://192.168.65.1:8090/"
Environment="HTTPS_PROXY=http://192.168.65.1:8090/"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2195582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

『网络游戏』自适应制作登录UI【01】

首先创建项目 修改场景名字为SceneLogin 创建一个Plane面板 - 将摄像机照射Plane 新建游戏启动场景GameRoot 新建空节点重命名为GameRoot 在子级下创建Canvas 拖拽EventSystem至子级 在Canvas子级下创建空节点重命名为LoginWnd - 即登录窗口 创建公告按钮 创建字体文本 创建输入…

基于SpringBoot“花开富贵”花园管理系统【附源码】

效果如下&#xff1a; 系统注册页面 系统首页界面 植物信息详细页面 后台登录界面 管理员主界面 植物分类管理界面 植物信息管理界面 园艺记录管理界面 研究背景 随着城市化进程的加快和人们生活质量的提升&#xff0c;越来越多的人开始追求与自然和谐共生的生活方式&#xf…

RabbitMQ(学习前言)

目录 学习MQ之前有必要先去温故下微服务知识体系&#xff0c;以加深本章节的理解 一、微服务间的通讯方式 1. 基本介绍 2. 同步通讯 2.1. 什么是同步通讯 2.2. 同步通讯存在的问题 问题一&#xff1a;耦合度高 问题二&#xff1a;性能和吞吐能力下降 问题三&#xff1a…

YOLOv11改进,YOLOv11添加DCNv4可变性卷积(windows系统成功编译),二次创新C2f结构,全网最详细教程

改进训练结果前: 二次创新C2f结构训练结果: 摘要 引入了可变形卷积 v4 (DCNv4),这是一种为广泛视觉应用设计的高效且有效的操作算子。DCNv4通过两项关键增强解决了其前身DCNv3的局限性:1. 移除空间聚合中的softmax归一化,以增强其动态特性和表达能力;2. 优化内存访问以…

【动态规划-4.2 最长递增子序列(LIS)】力扣300. 最长递增子序列

给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的 子序列 。 示例 1&…

LVM——让Linux磁盘空间的弹性管理

什么是LVM&#xff1f; LVM(Logical Volume Manager)逻辑卷管理是在Linux2.4内核以上实现的磁盘管理技术。它是Linux环境下对 磁盘分区进行管理的一种机制。现在不仅仅是Linux系统上可以使用LVM这种磁盘管理机制&#xff0c;对于其它的类UNIX操作系统&#xff0c;以及windows操…

用Manim简单解释奇异值分解(SVD)和图像处理方面的应

一&#xff0c;介绍 奇异值分解&#xff08;SVD&#xff09;是一种重要的矩阵分解技术&#xff0c;在统计学、信号处理和机器学习等领域有广泛应用。对于任意给定的矩阵 A&#xff08;可以是任意形状的矩阵&#xff09;&#xff0c;SVD将其分解为三个特定的矩阵的乘积&#x…

【时间盒子】-【9.任务设置项】自定义任务名称、任务时长等设置项组件

Tips: Stage、Link装饰器的使用&#xff1b; 参考我的帖子&#xff1a;https://developer.huawei.com/consumer/cn/forum/topic/0208152234389094513?fid0101587866109860105 一、预览 红色框&#xff1a;任务设置项列表&#xff0c;把它定义为一个组件对象SettingList。绿…

Python 工具库每日推荐【PyPDF2】

文章目录 引言Python PDF 处理库的重要性今日推荐:PyPDF2 工具库主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例:PDF文件合并案例分析高级特性加密和解密PDF添加水印扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 TypeScript 设计模式 专栏…

Vue基础(2)检测数据原理~生命周期

文章目录 检测数据原理1.更新时遇到的问题2.检测数据的原理-对象3. vue.set()的使用 收集表单数据过滤器内置指令1.v-text2.v-html3.v-cloak4.v-once5.v-pre 自定义指令生命周期1.挂载流程2.更新流程3.销毁流程 检测数据原理 1.Vue会监视data中的所有层次的数据 2.如何监测对象…

10月8日星期二今日早报简报微语报早读

10月8日星期二&#xff0c;农历九月初六&#xff0c;早报#微语早读。 1、我国自主研制的300兆瓦级F级重型燃气轮机在上海首次点火成功&#xff1b; 2、2024国庆档超21亿收官&#xff1a;《志愿军&#xff1a;存亡之战》票房8亿夺冠&#xff1b; 3、维克托安布罗斯&#xff0…

STM32工程环境搭建(库函数开发)

目录 1、移植固件库&标准库 2、新建工程 以STM32f401作为例子进行环境搭建 1、移植固件库&标准库 ①桌面创建工程文件夹并且提取内核文件 用户文件&#xff1a;用户自己编写的程序文件 .c .h文件 .c文件&#xff1a;具体函数功能源代码 .h文件&#xff1a;宏定义…

ctf.bugku - bp (弱密码top1000)

题目来源&#xff1a; bp - Bugku CTF 首先&#xff0c;下载top1000 &#xff0c;弱密码文本&#xff1a; PasswordDic/top1000.txt at master k8gege/PasswordDic GitHub 访问页面&#xff0c;随便输入个密码 发送请求到 intruder 以密码问参数 加载top1000.txt 密码文本&…

springboot开发网站-使用redis数据库定时特征限制指定ip的访问次数

springboot开发网站-使用redis数据库定时特征限制指定ip的访问次数。近期网站经常有人恶意访问&#xff0c;提交了很多垃圾信息。为了屏蔽这类灌水帖&#xff0c;打算屏蔽ip地址&#xff0c;限制24小时内只能访问1次某个接口。下面是测试的案例代码内容。 1&#xff1a;首先&am…

实验三 Web基础-JavaScript

实验三 Web基础-JavaScript 目的&#xff1a; 1、理解和掌握Javascript基本语法 2、掌握JavaScript操作表单对象的方法 3、理解和掌握JavaScript的函数与事件 4、理解JavaScript的内置对象 实验要求&#xff1a; 1、使用JavaScript语言实现实验要求 2、要求提交实验报告&…

HTB:Pennyworth[WriteUP]

目录 连接至HTB服务器并启动靶机 1.What does the acronym CVE stand for? 2.What do the three letters in CIA, referring to the CIA triad in cybersecurity, stand for? 3.What is the version of the service running on port 8080? 4.What version of Jenkins i…

【C++11】可变模板参数

文章目录 可变模板参数的概念递归函数方式展开参数包 STL容器中的empalce相关的接口函数emplace 与 insert / push_back 的区别 可变模板参数的概念 可变参数模板是 C11 引入的一种模板特性&#xff0c;允许定义可以接收任意数量参数的模板&#xff0c;广泛应用于函数和类的设计…

【js逆向学习】极志愿 javascript+python+rpc

JSRPC使用方式 逆向目标逆向过程逆向分析1、什么是 websocket2、websocket的原理3、总体过程3.1 环境说明3.2 python服务端代码3.3 python客户端代码 4、Sekiro-RPC4.1 执行方式4.2 客户端环境4.3 参数说明4.4 SK API4.5 python代码调试4.6 代码注入流程 逆向总结 逆向目标 网…

【STM32开发之寄存器版】(六)-通用定时器中断

一、前言 STM32定时器分类 STM32103ZET6具备8个定时器TIMx(x 1,2,...,8)。其中&#xff0c;TIM1和TIM8为高级定时器&#xff0c;TIM2-TIM6为通用定时器&#xff0c;TIM6和TIM7为基本定时器&#xff0c;本文将以TIM3通用定时器为例&#xff0c;分析STM32定时器工作的底层寄存器…

mysql读写分离的最佳实践

一. 传统的读写分离方式 在 MySQL 中实现读写分离可以通过以下几种方式来达到目的&#xff1a; 1. 主从复制 使用主从复制&#xff08;Master-Slave Replication&#xff09;是实现读写分离的常见方式。 主库&#xff1a;处理所有的写入操作&#xff08;INSERT、UPDATE、DE…