Docker安装

docker 官方文档:https://docs.docker.com/get-docker/

docker 中文文档:https://www.kancloud.cn/jingyucloud/docker/216412

搭建私有仓库参考:https://zhuanlan.zhihu.com/p/511286328

开放远程API接口参考:https://blog.csdn.net/ic_esnow/article/details/113284475

一、简介

容器概念

容器是一种轻量级、可移植、自包含的软件运行环境。它允许开发者将一个应用及其全部运行环境------包括代码、运行时、系统工具、系统库以及设置------全部封装在一起。这种封装确保了应用在任何环境中都能以相同的方式运行,无论是在开发人员的个人电脑上、测试环境中、还是在生产环境的服务器或云平台上。

核心特性

  • 隔离性:容器通过操作系统级别的虚拟化实现了进程和资源的隔离。每个容器都运行在一个独立的环境中,并且容器与容器之间、容器与宿主机之间都是相互隔离的。
  • 轻量级:与传统的虚拟机相比,容器不需要额外加载一个完整的操作系统内核,只需利用宿主机的内核即可运行。这大大减少了资源消耗和启动时间。
  • 可移植性:由于容器内包含了应用运行所需的一切,因此可以确保应用在不同的计算环境中运行时的一致性和兼容性。
  • 微服务架构的支持:容器非常适合微服务架构,因为它们允许每个服务单独容器化,这样可以独立地开发和扩展服务。

容器与虚拟机的区别

  • 启动时间:容器只需几秒钟即可启动,而虚拟机可能需要几分钟。
  • 性能:容器直接运行在宿主机的操作系统之上,几乎没有额外开销,因此性能接近物理机。虚拟机则需要额外的资源来运行完整的操作系统。
  • 资源占用:容器共享宿主机的操作系统内核,而虚拟机则需要为每个虚拟机实例运行一个完整的操作系统,因此容器更加节省资源。
  • 隔离性:虚拟机提供了更强的隔离性,因为它们彼此之间以及与宿主机之间是完全独立的。容器虽然也提供了隔离性,但因为它们共享宿主机的内核,所以相对较弱。

容器技术的出现和普及改变了软件开发、部署和运维的方式,使得应用的交付更加快速、高效。Docker 是目前最流行的容器平台之一,但也有其他技术如 Podman、containerd 等。

什么是Docker

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

核心概念
  • 镜像(Image):Docker 镜像是用于创建 Docker 容器的模板,可以将其理解为一个只读的文件系统。它提供了容器运行时所需的程序、库、资源、配置等文件,但不包含任何动态数据。用户可以基于镜像启动新的容器实例。
  • 容器(Container):容器是镜像的运行实例。它可以被启动、开始、停止、删除,每个容器都是相互隔离、保证安全的平台。容器的核心是隔离性和临时性,这意味着当容器被删除时,容器内的更改和数据也会随之消失。
  • 仓库(Repository):Docker 仓库是集中存放镜像文件的场所。最著名的公共仓库是 Docker Hub,其中包含了数量庞大的镜像供用户下载。除了 Docker Hub,用户还可以创建私有仓库来存放自己的镜像。
工作原理

Docker 使用客户端-服务器(C/S)架构模式。Docker 客户端与 Docker 服务器(Docker Daemon)通信,Docker Daemon 负责构建、运行和分发 Docker 容器。Docker 客户端和服务器可以运行在同一个系统上,也可以通过网络从远程客户端与 Docker Daemon 通信。

主要特点
  1. 快速、一致地交付应用:Docker 可以快速构建、测试并部署应用,并确保应用在任何环境中都能以相同的方式运行。
  2. 响应式扩展与缩减:根据业务需求,容易地在服务中增加或删除容器来扩展或缩减服务。
  3. 运行任何地方:Docker 容器可以在开发者的本地笔记本电脑、物理或虚拟机、数据中心、云服务等任何地方运行。
  4. 隔离:Docker 确保每个容器都在自己的隔离环境中运行,使得应用更加安全。
  5. 轻量级:Docker 利用 Linux 容器技术,比传统的虚拟化技术更加轻量,提高了系统利用率和性能。

Docker 的出现极大地简化了部署应用的流程,让开发、测试、生产环境之间的切换变得更加容易和快捷,对现代软件开发和运维方式产生了深远影响。

二、Window安装

在Win10及以上系统安装Docker Desktop使用Docker

确保系统安装 Hyper-V 参考文章(https://www.runoob.com/docker/windows-docker-install.html)

1、在Docker Desktop下载 网页上点击Docker Desktop for Windows下载或者直接去官网下载安装包

2、安装包下载好后,直接双击Docker Desktop Installer.exe文件进行安装,把接下来的页面所有选项全部选中

参考:https://blog.csdn.net/qq_39611230/article/details/108641842

3、安装完成后,打开Docker Desktop应用,在setting页面选择 Docker Engine

内容如下

复制代码
{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "registry-mirrors": [
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ],
  "insecure-registries": [
    "192.168.1.153:5000"
  ]
}

//registry-mirrors 配置源,这里使用的是163的源
//insecure-registries 私有仓库地址

参考:

https://docs.docker.com/desktop/install/windows-install/

https://www.runoob.com/docker/windows-docker-install.html

https://zhuanlan.zhihu.com/p/191588757

https://blog.csdn.net/BThinker/article/details/123358697

三、CentOS安装

1、选择要安装的平台

Docker要求CentOS系统的内核版本高于3.10

复制代码
#通过 uname -r 命令查看你当前的内核版本
uname -r 

安装文档地址

2、选择要安装的操作系统

3、首先卸载已安装的Docker

使用Root权限登录 Centos。确保yum包更新到最新。

sql 复制代码
sudo yum update

在尝试安装新版本之前,请卸载任何此类旧版本以及关联的依赖项,操作系统没有安装过Docker就跳过。

复制代码
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

可能会报告您没有安装这些软件包,卸载 Docker 时,存储在 /var/lib/docker/ 其中的映像、容器、卷和网络不会自动删除。

1、您可以设置 Docker 的存储库并从中安装,以便于安装和升级任务。这是推荐的方法。

2、您可以下载 RPM 软件包,手动安装它,并完全手动管理升级。这在无法访问 Internet 的气隙系统上安装 Docker 等情况下很有用。

3、在测试和开发环境中,您可以使用自动化便利脚本来安装 Docker。

4、使用rpm存储库安装

在新主机上首次安装 Docker 引擎之前,需要设置 Docker 存储库。之后,您可以从存储库安装和更新 Docker。

4.1、设置仓库

安装 yum-utils 软件包(提供 yum-config-manager 实用程序)并设置存储库。

复制代码
## 安装Docker所需要的一些工具包
sudo yum install -y yum-utils

## 建立Docker仓库 (映射仓库地址)
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4.2、安装 Docker Engine

若要安装最新版本,请运行:

复制代码
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

如果系统提示您接受 GPG 密钥,请验证指纹是否匹配,如果匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 ,请接受它。

此命令将安装 Docker,但不会启动 Docker。它还会创建一个 docker 组,但是,默认情况下,它不会向该组添加任何用户。

4.3、启动 Docker

复制代码
sudo systemctl start docker

4.4、通过运行 hello-world 映像来验证 Docker 引擎安装是否成功。

复制代码
sudo docker run hello-world

5、软件包安装

如果无法使用 Docker rpm 的存储库安装 Docker 引擎,可以下载 .rpm 版本的文件并手动安装。每次要升级 Docker 引擎时,都需要下载一个新文件。

前往 https://download.docker.com/linux/centos/ 并选择您的 CentOS 版本。然后浏览并 x86_64/stable/Packages/ 下载 .rpm 要安装的 Docker 版本的文件。

5.1、安装 Docker 引擎,将以下路径更改为下载 Docker 包的路径。

复制代码
 sudo yum install /path/to/package.rpm

Docker 已安装但未启动。组已创建,但未将用户添加到 docker 组。

5.2、启动 Docker。

复制代码
sudo systemctl start docker

5.3、通过运行 hello-world 映像来验证 Docker 引擎安装是否成功。

复制代码
sudo docker run hello-world

6、升级Docker 引擎

若要升级 Docker 引擎,请下载较新的包文件并重复安装过程,使用 yum -y upgrade 而不是 yum -y install ,并指向新文件。

使用便捷脚本安装

Docker 在 https://get.docker.com/ 提供了一个方便的脚本,用于以非交互方式将 Docker 安装到开发环境中。不建议将方便脚本用于生产环境,但它可用于创建根据需求量身定制的预配脚本。另请参阅使用存储库安装步骤,了解使用软件包存储库进行安装的安装步骤。该脚本的源代码是开源的,您可以在 GitHub 上的 docker-install 存储库中找到它。

在本地运行脚本之前,请始终检查从 Internet 下载的脚本。在安装之前,请熟悉便利脚本的潜在风险和限制:

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

提示:运行前预览脚本步骤

您可以使用以下 --dry-run 选项运行脚本,以了解脚本在调用时将运行哪些步骤:

console 复制代码
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh ./get-docker.sh --dry-run

此示例从 https://get.docker.com/ 下载脚本并运行它以在 Linux 上安装 Docker 的最新稳定版本:

console 复制代码
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
Executing docker install script, commit: 7cae5f8b0decc17d6571f9f52eb840fbc13b2737
<...>

现在,您已成功安装并启动了 Docker 引擎。该 docker 服务在基于 Debian 的发行版上自动启动。在基于发行版(如 CentOS、Fedora、RHEL 或 SLES)上 RPM ,您需要使用相应的 systemctl or service 命令手动启动它。如消息所示,默认情况下,非 root 用户无法运行 Docker 命令。

以非特权用户身份使用 Docker,还是以无根模式安装?

安装脚本需要 root 或 sudo 具有权限才能安装和使用 Docker。如果要授予非 root 用户对 Docker 的访问权限,请参阅 Linux 的安装后步骤。您还可以在没有权限的情况下 root 安装 Docker,或配置为在无根模式下运行。有关在无根模式下运行 Docker 的说明,请参阅以非 root 用户身份运行 Docker 守护程序。

安装预发行版

Docker 还提供了一个方便的 https://test.docker.com/ 脚本,用于在 Linux 上安装 Docker 的预发行版。此脚本等同于 中的 get.docker.com 脚本,但将包管理器配置为使用 Docker 包存储库的测试通道。测试通道包括 Docker 的稳定版本和预发布版本(测试版、候选版本)。使用此脚本可以抢先体验新版本,并在它们作为稳定版本发布之前在测试环境中对其进行评估。

若要从测试通道在 Linux 上安装最新版本的 Docker,请运行:

console 复制代码
$ curl -fsSL https://test.docker.com -o test-docker.sh
$ sudo sh test-docker.sh

使用便捷脚本后升级 Docker

如果使用方便脚本安装了 Docker,则应直接使用包管理器升级 Docker。重新运行便利脚本没有任何好处。如果它尝试重新安装主机上已存在的存储库,则重新运行它可能会导致问题。

卸载 Docker 引擎

  1. 卸载 Docker 引擎、CLI、containerd 和 Docker Compose 包:

    console 复制代码
    $ sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
  2. 主机上的映像、容器、卷或自定义配置文件不会自动删除。要删除所有映像、容器和卷,请执行以下操作:

    console 复制代码
    $ sudo rm -rf /var/lib/docker
    $ sudo rm -rf /var/lib/containerd

您必须手动删除任何已编辑的配置文件。

参考:

https://docs.docker.com/engine/install/

https://docs.docker.com/engine/install/centos/

https://blog.csdn.net/BThinker/article/details/123358697

https://www.runoob.com/docker/centos-docker-install.html