Docker官方文档学习笔记(一):安装Docker Engine(和安装Docker Desktop for Linux二选一)

这篇具有很好参考价值的文章主要介绍了Docker官方文档学习笔记(一):安装Docker Engine(和安装Docker Desktop for Linux二选一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker Engine on Ubuntu 安装教程(和安装DD4L即Docker Desktop for Linux二选一)

参考官方文档

首先需要卸载旧版本

sudo apt remove docker docker-engine docker.io containerd runc

/var/lib/docker 中的内容会被保留,如果要完全删除,继续参考文章最后的卸载教程完成卸载

安装方法

三种方法,通过仓库安装(推荐),通过DEB包手动安装,以及使用脚本安装。

在安装之前,请让自己熟悉脚本安装的潜在风险和限制:
该脚本需要root或sudo特权才能运行。
该脚本会尝试检测您的 Linux 发行版和版本并为您配置包管理系统,并且不允许您自定义大多数安装参数。
该脚本会在不要求确认的情况下安装依赖项和建议。这可能会安装大量软件包,具体取决于主机的当前配置。
默认情况下,该脚本安装 Docker、containerd 和 runc 的最新稳定版本。使用此脚本配置机器时,可能会导致 Docker 的主要版本升级意外。在部署到生产系统之前,始终在测试环境中测试(主要)升级。
该脚本并非旨在升级现有的 Docker 安装。使用脚本更新现有安装时,可能无法将依赖项更新到预期版本,从而导致使用过时的版本。

本文只介绍使用仓库安装的方法

使用仓库安装

  1. 更新apt包索引并安装包以允许apt通过 HTTPS 使用存储库:
sudo apt-get update

sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
  1. 添加 Docker 的官方 GPG 密钥:
sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  1. 使用以下命令设置存储库:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 更新apt包索引,安装最新版本的 Docker Engine、containerd 和 Docker Compose
sudo chmod a+r /etc/apt/keyrings/docker.gpg

sudo apt-get update

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

或者安装特定版本:
列出特定版本

apt-cache madison docker-ce

使用第二列中的版本字符串替换<VERSION_STRING>安装特定版本,例如5:20.10.16~3-0~ubuntu-jammy

sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io docker-compose-plugin
  1. 通过运行hello-world镜像来验证是否正确安装
sudo docker run hello-world

若打印一条消息并退出,则已安装成功, docker 用户组已创建,但未向其中添加任何用户。需要使用 sudo 来运行Docker命令。若需要使用非特权用户运行及进行其他可选的配置步骤,继续进行接下来的步骤:进一步配置Docker

进一步配置Docker

参考官方文档Post-installation steps for Linux

推荐的项目最好都设置一下,其他的根据自己的需求选择是否设置

以非root用户身份管理Docker(推荐)

Docker 守护进程绑定到 Unix 套接字而不是 TCP 端口。默认情况下,Unix 套接字归用户所有root,其他用户只能使用sudo。Docker 守护程序始终以root用户身份运行。

如果您不想在docker命令前加上sudo,请创建一个名为 docker 的Unix组并将用户添加到其中。当 Docker 守护进程启动时,它会创建一个可供docker组成员访问的 Unix 套接字。

该docker组授予与root 用户等效的权限。有关这如何影响系统安全性的详细信息,请参阅Docker Daemon Attack Surface。

  1. 创建 docker 组

    sudo groupadd docker
    
  2. 将用户添加到 docker 组中

    sudo usermod -aG docker $USER
    

    通常情况下执行到这一步就可以了,如果不行就继续执行第3步

  3. 注销并重新登录

  4. 验证是否可以不使用 sudo 运行docker(第4步其实没必要,一般不会碰到权限问题,可以跳过)

    (这会从Docker Hub下载名为hello-world的镜像)

    docker run hello-world
    

    若报下方的错误

    WARNING: Error loading config file: /home/user/.docker/config.json
    stat /home/user/.docker/config.json: permission denied

    则修改权限

    sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
    sudo chmod g+rwx "$HOME/.docker" -R
    

将 Docker 配置为开机启动(推荐)

在 Debian 和 Ubuntu 上,Docker 服务默认配置为开机自启。

若需要设置为开机自启,使用以下命令

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

若禁用开机自启,则

sudo systemctl disable docker.service
sudo systemctl disable containerd.service

为Docker指定DNS服务器(一般不需要配置)

  1. 编辑 /etc/docker/daemon.json
sudo vim /etc/docker/daemon.json
  1. 添加地址
"dns": ["8.8.8.8", "8.8.4.4"]
  1. 重启守护程序
sudo service docker restart

为Docker设置HTTP/HTTPS代理(如果使用了Clash的TUN模式就不需要进行此项设置)

从Docker Hub下载镜像的时候会用到这里的代理设置

Docker daemon在它的启动环境中使用 HTTP_PROXY 、HTTPS_PROXY、NO_PROXY 环境变量配置 HTTP 或 HTTPS 代理行为,这些环境变量不能在 daemon.json 文件中配置,需要在Docker systemd 文件中添加配置

  1. 为docker服务创建systemd目录
sudo mkdir -p /etc/systemd/system/docker.service.d
  1. 创建一个名为 /etc/systemd/system/docker.service.d/http-proxy.conf 的文件并添加一个或多个环境变量
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

以下为示例内容

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:1080"
Environment="HTTPS_PROXY=http://127.0.0.1:1080"
Environment="NO_PROXY=localhost,127.0.0.1"
  1. 刷新更改并重新启动Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
  1. 验证是否加载成功
sudo systemctl show --property=Environment docker

换源(只能加速官方镜像)

参考菜鸟教程,推荐使用阿里云。
若不使用自定义源,必须删除配置文件,否则会导致docker服务启动失败文章来源地址https://www.toymoban.com/news/detail-532152.html

到了这里,关于Docker官方文档学习笔记(一):安装Docker Engine(和安装Docker Desktop for Linux二选一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker Desktop 启动docker engine一直转圈解决方法

    首先任务管理器关闭所有docker desktop进程。然后尝试使用手动方法升级wsl  wsl --update 如果报灾难性错误,先shutdown wsl,再执行上述命令 wsl --shutdown wsl --update 显示成功后,重新打开docker desktop,docker engine启动成功

    2024年04月09日
    浏览(67)
  • 学习笔记-elstaciElasticSearch7.17官方文档

    特征 适用于所有 Elasticsearch API 的强类型请求和响应。 所有 API 的阻塞和异步版本。 在创建复杂的嵌套结构时,使用流畅的构建器和功能模式允许编写简洁但可读的代码。 通过使用对象映射器(例如 Jackson 或任何 JSON-B 实现)无缝集成应用程序类。 将协议处理委托给一个 h

    2024年02月14日
    浏览(46)
  • Flink|《Flink 官方文档 - 部署 - 概览》学习笔记

    学习文档:《Flink 官方文档 - 部署 - 概览》 学习笔记如下: 上图展示了 Flink 集群的各个构建(building blocks)。通常来说: 客户端获取 Flink 应用程序代码,将其转换为 JobGraph,并提交给 JobManager JobManager 将工作分配给 TaskManager,并在那里执行实际的算子操作 在部署 Flink 时,

    2024年01月19日
    浏览(55)
  • 微软官方Microsoft Remote Desktop for Mac

    microsoft-remote-desktop-for-mac 时候还是需要用到windows系统上的数据或者软件,除了使用第三方开发商的远程桌面工具外,微软公司也提供了Mac版(iMac和MacBook)的远程桌面软件(Microsoft Remote Desktop),可是中国区的Apple store无法直接下载到这个软件 直接找到微软官方下载地址:

    2024年02月12日
    浏览(51)
  • Flink|《Flink 官方文档 - 内幕 - 文件系统》学习笔记

    学习文档:内幕 - 文件系统 学习笔记如下: Flink 通过 org.apache.flink.core.fs.FileSystem 实现了文件系统的抽象。这种抽象提供了一组通用的操作,以支持使用各类文件系统。 为了支持众多的文件系统, FileSystem 的可用操作集非常有限。例如,不支持对现有文件进行追加或修改。

    2024年02月03日
    浏览(37)
  • 【笔记】Spring Boot 历史官方文档学习(持续更新)

    Spring Boot 2014正式发布1.0版本,距今已经快10年了。看历史官方文档了解重点feature, 帮助自己建立知识网络。 与 Spring 5 官网历史文档学习 一样,尽量保证不误解文档作者的原意,不好翻译的会有原文摘录(包括一些专有名词),并辅以自己的理解。限于篇幅原因,只摘录工作

    2024年02月10日
    浏览(46)
  • ros2官方文档(基于humble版本)学习笔记

    由于市面上专门讲ROS 2开发的书籍不多,近期看完了《ROS机器人开发实践》其中大部分内容还是基于ROS 1写的,涉及topic,service,action等一些重要的概念,常用组件,建模与仿真,应用(机器视觉,机器语音,SLAM,机械臂),最后一章写了ROS 2的安装,话题通信和服务通信的示

    2024年02月11日
    浏览(42)
  • Spring MVC官方文档学习笔记(二)之DispatcherServlet

    1.DispatcherServlet入门 (1) Spring MVC是以前端控制器模式(即围绕着一个中央的Servelt, DispatcherServlet)进行设计的,这个DispatcherServlet为请求的处理提供了一个共用的算法,即它都会将实际的请求处理工作委托给那些可配置的组件进行执行,说白了,DispatcherServlet的作用就是进行统一调度,并

    2024年02月07日
    浏览(82)
  • ROS 2官方文档(基于humble版本)学习笔记(二)

    今天继续总结CLI 工具章的学习 理解节点(node) ROS 2图是一个ROS 2元件同时处理数据的网络,如果将它们全部映射并可视化它们,则包括所有可执行文件以及它们之间的连接。 ROS中的每个节点(node)都应该只为了单个的、模块化的目的而设计的,例如控制车轮电动机或从激光

    2024年02月10日
    浏览(44)
  • Flink|《Flink 官方文档 - 概念透析 - 及时流处理》学习笔记

    学习文档:概念透析 - 及时流处理 学习笔记如下: 及时流处理时有状态流处理的扩展,其中时间在计算中起着一定的作用。 及时流的应用场景: 时间序列分析 基于特定时间段进行聚合 对发生时间很重要的事件进行处理 处理时间(processing time) 处理时间的即数据到达各个

    2024年02月03日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包