【环境配置】ubuntu中 Docker的安装

前言

Docker的使用,一直没有系统的梳理和记录,刚好最近看视频又再次的全面介绍到docker。于是记录下方便后面自己的使用,毕竟安装过程中还是会存在小的不丝滑。

1 Docker的简单介绍

这里的介绍来自于大模型的问答(LLM时代的到来,使用起来~~)。

Docker 是一个开源的应用容器引擎,它使开发者能够打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app), 更重要的是容器性能开销极低。

传统的虚拟化技术(如 VMware,KVM 等)是在硬件层面实现虚拟化,需要模拟硬件,因此无法避免地有一些额外的性能开销。而 Docker 是在操作系统层面上实现虚拟化,Docker 容器和内核交互,几乎没有性能损耗。

Docker 的三个基本概念

  • 镜像(Image):Docker 镜像是一个只读模板,可以用来创建 Docker 容器。一个镜像可以包含一个完整的操作系统环境,里面仅安装了应用和运行时所需的依赖。镜像可以用来创建 Docker 容器。
  • 容器(Container):Docker 容器是 Docker 镜像的一个可运行实例,它包含了应用程序及其依赖项,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
  • 仓库(Repository) :仓库是集中存放镜像文件的场所。仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云、网易云等。

Docker的组成

  • Docker Client客户端:用户通过DockerClient与Docker守护进程进行交互,发送请求并接收响应。
  • Docker Daemon守护进程:负责接收来自DockerClient的请求,执行诸如创建、运行、停止、删除容器等操作。
  • Docker Image镜像
  • Docker Container容器

Docker的使用

  • 安装Docker:在Linux或Windows上安装Docker引擎,并验证安装是否成功。
  • 创建和运行容器:通过Docker命令(如docker search、docker pull、docker create、docker start等)来搜索、拉取、创建和启动容器。
  • 构建和发布镜像 :使用Dockerfile来定义镜像的构建过程,并通过docker build命令来构建镜像。构建完成后,可以使用docker push命令将镜像发布到Docker Hub等镜像仓库供其他人使用。
    Docker通过其强大的功能和灵活性,已经成为现代软件开发和运维中不可或缺的工具之一。

Docker的特点

  • 可移植性:Docker容器可以在任何安装了Docker的机器上运行,无需担心环境差异。
  • 隔离性:Docker容器使用沙箱机制,相互之间不会有任何接口,确保了应用程序的安全性。
  • 轻量级:Docker容器相比于虚拟机更加轻量级,因为它们共享宿主机的内核,不需要额外的操作系统。
  • 版本控制 :Docker镜像可以被版本化,方便管理和追踪历史变更。

Docker的用途

  • 本地依赖:Docker可以快速搭建开发环境,节省时间,提高开发效率。
  • 搭建环境:Docker可以快速地构建源码所需的环境,无需手动安装和配置各种软件。
  • 微服务:Docker非常适合微服务架构,可以将每个服务打包为一个Docker镜像并使用docker-compose来模拟生产环境。
  • 自动测试:Docker可以将测试用例与镜像紧密运行在一起,提高测试效率和可管理性。
  • 部署过程:Docker可以简化部署过程,使得应用程序可以快速、可靠地部署到目标机器上。
  • 持续部署:Docker天生适合持续集成/持续部署,可以方便地实现应用程序的自动化更新和升级。

2 Docker的安装

第二章节,记录下ubuntu20.04下的Docker的安装。

1 安装一些依赖

sh 复制代码
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y

2 添加docker官网 GPG 密钥、设置stable 仓库

sh 复制代码
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

正确执行为会打印"OK"。

可能存在问题:报错

复制代码
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to download.docker.com:443 
gpg: no valid OpenPGP data found.
...

这说明连接异常,更换阿里云进行配置GPG 密钥(如下图),以及设置stable仓库(未贴图)

具体命令如下:

sh 复制代码
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository  \
"deb [arch=arm64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

3. 安装 Docker

python 复制代码
sudo apt-get update
sudo apt install docker-ce docker-ce-cli containerd.io

安装完成,Docker 服务将会自动启动。你可以输入下面的命令,验证它:

bash 复制代码
docker --version
sudo systemctl status docker

但安装过程中,可能报错如下:

复制代码
invoke-rc.d:syntax error: unknown option ".-skip-systemd-native"
dpkg: error processing package docker-ce(--configure):
installed docker-ce package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
docker-ce
E:Sub-process /usr/bin/dpkg returnedan error code (1)


则需执行以下操作:

sh 复制代码
cd /var/lib/dpkg
sudo mv info info.bak
sudo mkdir info
sudo apt-get install docker-ce docker-ce-cli containerd.io 

3.1 查阅安装的版本

安装历史版本的docker

bash 复制代码
apt list -a docker-ce         ## 查看 Docker 软件源中所有可用的版本
sudo apt install docker-ce=<VERSION> docker-ce-cli=<VERSION> containerd.io

3.2 Docher 版本的固定

如果你想阻止 Docker 自动更新,锁住它的版本:

bash 复制代码
sudo apt-mark hold docker-ce

4 设置非root用户的权限

默认情况下,只有 root 或者 有 sudo 权限的用户可以执行 Docker 命令。
想要以非 root 用户执行 Docker 命令,需要将用户添加到 Docker 用户组,该用户组在 Docker_ce 软件包安装过程中被创建。输入:

sh 复制代码
sudo usermod -aG docker $USER   ## $USER是一个环境变量,代表当前用户名。

登出,并且重新登录,以便用户组会员信息刷新。

5 安装docker-compose

可选,安装命令如下。(实际上就是从github的releases中下载对应系统版本的docker-compose程序文件,授予执行权限即可)

python 复制代码
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version 

6 Docker的测试

Docker Hub是一个云端服务,主要用来储存 公有和私有源中的 Docker 镜像。默认情况下,Docker可以从 从 Docker Hub 拉取镜像。
运行个docker的hello-word,执行docker命令如下:

sh 复制代码
docker container run hello-world

第一次云运行时本地没有该镜像,这个命令将会下载测试镜像,在容器中运行它,打印出 "Hello from Docker",并且退出。


6.1 阿里云镜像加速器的配置

拉取 hub.docker.com 的镜像,会发现速度很慢,是因为有墙。可以配置阿里云镜像加速器。
修改Docker配置文件。对于系统系统为Ubuntu 16.04+、Debian 8+、CentOS 7、Fedora 24+、RedHat 7+等,可修改/etc/docker/daemon.json文件(可能不存在)

sh 复制代码
vim /etc/docker/daemon.json

然后添加如下内容

复制代码
{
  "registry-mirrors": ["https://b2w3942p.mirror.aliyuncs.com"]
}

然后重启docker

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker

7 卸载 Docker

在卸载 Docker 之前,最好移除所有的容器,镜像,卷和网络。
运行下面的命令停止所有正在运行的容器,并且移除所有的 docker 对象:

sh 复制代码
docker container stop $(docker container ls -aq)
docker system prune -a --volumes

使用apt像卸载其他软件包一样来卸载 Docker:

sh 复制代码
sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo apt autoremove
相关推荐
热爱生活的五柒34 分钟前
window11:docker desktop启动时一直转圈进不去
运维·docker·容器
微信公众号:AI创造财富38 分钟前
run docker 报错的解决办法!
docker
Mrdaliang1 小时前
Linux系统性能优化
linux·运维·性能优化
RedMapleGI3 小时前
ubuntu 22.04 安装部署kibana 7.10.0详细教程
ubuntu·elk·kibana
LPH31194 小时前
Linux系统安全管理
linux·网络·安全·系统安全
linux行者5 小时前
linux基础重定向及组合重定向
linux·运维
前进的程序员5 小时前
Ubuntu 磁盘损坏后的修复全攻略
ubuntu·磁盘修复
kikumaru7146 小时前
Mac 安装 finalshell
linux·网络·macos
小兔子酱#6 小时前
【Docker 07】Network - 网络
网络·docker·php
Ares_程序猿7 小时前
ubuntu24.04安装docker
docker