Ubuntu安装docker

2023-12-13 11:58:35

一、安装流程

文档:https://docs.docker.com/engine/install/ubuntu/

1.1 添加 Docker 库

# 1、更新软件包
sudo apt-get update
# 2、安装 Docker 依赖
# sudo apt-get install ca-certificates curl gnupg
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
# 3、添加 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

# 4、添加 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
# 更新
sudo apt-get update

1.2 安装 Docker

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

若要安装其他版本 Docker 。运行下列命令检查可以安装的 Docker 版本

apt-cache madison docker-ce

挑选上面列表中的任何版本进行安装。例如,安装 5:20.10.16~ 3-0 ~ubuntu-jammy 这个版本,运行

sudo apt install docker-ce=5:20.10.16~3-0~ubuntu-jammy docker-ce-cli=5:20.10.16~3-0~ubuntu-jammy containerd.io

1.3 运行Docker

安装完成后,运行如下命令验证 Docker 服务是否在运行

systemctl status docker

在这里插入图片描述

如果没有运行,运行以下命令运行 Docker 服务

sudo systemctl start docker

1.4 设置开机自启动

使 Docker 服务在每次重启时自动启动:

sudo systemctl enable docker

1.5 查看Docker 版本

查看已安装的 Docker 版本

sudo docker version

1.6 测试 Docker

sudo docker run hello-world

下载一个 Docker 测试镜像,并在容器内执行一个 “hello_world” 样例程序
出现下图,则Docker安装成功
在这里插入图片描述

1.7 添加国内镜像源

国内使用Docker下载镜像时会出现网速慢的问题,所以需要添加国内镜像源。
首先运行 sudo vim /etc/docker/daemon.json 来创建daemon.json文件,然后将以下内容复制到daemon.json文件中。

{
    "registry-mirrors": [
        "https://registry.docker-cn.com",
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://kfwkfulq.mirror.aliyuncs.com"
    ]
}

重启Docker

sudo service docker restart

查看添加的国内源是否生效

sudo docker info | grep Mirrors -A 4

在这里插入图片描述

二、遇到的问题

2.1报错E: Method https has died unexpectedly! E: Sub-process https received signal 4.

问题描述
ubuntu 执行apt updateapt install时,报错
E: Method https has died unexpectedly!
E: Sub-process https received signal 4.

解决办法参考
执行sudo apt 相关命令时添加 GNUTLS_CPUID_OVERRIDE=0x1 参数

sudo GNUTLS_CPUID_OVERRIDE=0x1 apt-get update

2.2 报错 curl: (56) OpenSSL SSL_read: error:0A000126:SSL routines::unexpected eof while reading, errno 0

问题描述
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
报错 curl: (56) OpenSSL SSL_read: error:0A000126:SSL routines::unexpected eof while reading, errno 0

解决方法
1、先到https://download.docker.com/linux/ubuntu/gpg下载gpg文件,命名为old.gpg
2、将old.gpg,移动到/etc/apt/keyrings/目录下
3、再/etc/apt/keyrings/目录下,将其解密并输出到/etc/apt/keyrings/docker.gpg

sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg old.gpg

2.3 报错 W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy InRelease: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8

问题描述
sudo apt-get update 报错
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy InRelease: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
W: Failed to fetch http://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/jammy/InRelease The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8

之前添加 Docker 的官方 GPG 密钥时候,由于一直卡顿,更换了阿里云的镜像,但是同样不行。后面通过2.2的方法解决。而后阿里云的镜像就没使用,报错

解决方法
1)查看ls /etc/apt/sources.list.d/目录中的文件列表
2)删除相应的文件(将 替换为实际的文件名)
sudo rm /etc/apt/sources.list.d/<filename>
3)更新软件包列表:sudo apt update


推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容
点击立即学习:C/C++后台高级服务器课程

文章来源:https://blog.csdn.net/Ricardo2/article/details/134792677
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。