Docker 已经成为软件开发人员和 IT 专业人员高效构建、交付和运行应用程序的必备工具。它允许开发人员将应用程序及其所有依赖项打包到一个标准化的单元中,即容器。这些容器几乎可以在任何基础设施上一致地运行,极大地简化了开发和部署过程。
了解 Docker
在深入探讨安装过程之前,让我们先来了解一下 Docker 是什么以及它的工作原理。Docker 基于容器化的概念。
了解容器化
从用户的角度来看,容器类似于虚拟机,但它们更加轻量级和高效。与虚拟机不同,容器只需要应用程序代码、库、依赖项和配置文件,无需单独的客户操作系统、管理程序或仿真。此外,容器与主机共享相同的内核和资源,但彼此之间以及与主机保持隔离。
容器化使开发人员能够创建和运行可移植、可扩展且在不同平台和环境中保持一致的应用程序。例如,我们可以在笔记本电脑、云服务器或树莓派上运行相同的容器,而无需担心兼容性问题或性能开销。
使用 Docker 的好处
Docker 是最受欢迎和广泛使用的容器化工具之一。它提供了一个平台和一组工具,使创建、管理和运行容器变得容易。通过实现容器化,Docker 带来了以下几个好处:
可移植性:容器化应用程序可以在大多数基础设施上一致地运行。
隔离性:在容器中运行的应用程序与在同一主机上运行的其他容器隔离。
可扩展性:通过启动更多容器实例来水平扩展容器化应用程序。
快速部署:容器很轻,通常具有亚秒级的启动时间。
一致性:打包依赖项以避免环境之间的不一致,从而简化调试。
协作:通过 Docker Hub 等注册表共享 Docker 镜像。
最后,隔离的容器通过限制对底层系统的访问并防止应用程序冲突来增强安全性。
Docker 的常见场景
开发和部署微服务
通过容器化运行遗留应用程序,使其部署和管理现代化
持续集成和交付(CI/CD)
开发云原生应用程序
打包和共享应用程序
在 Windows 上安装 Docker
下载 Docker Desktop for Windows
打开 Web 浏览器,访问 Docker 官方网站:https://www.docker.com/products/docker-desktop。
在页面上,找到适用于 Windows 的 Docker Desktop 下载链接。根据你的 Windows 版本(64 位)选择正确的下载选项。
点击下载链接,开始下载安装程序。
下载完成后,找到安装程序文件(通常名为 Docker - Desktop - Installer.exe)并双击运行它。
在安装向导中,按照提示进行操作。你可能需要接受许可协议、选择安装位置等。
安装过程可能需要一些时间。完成后,系统可能会提示你重新启动计算机。建议按照提示重启,以确保所有更改生效。
重新启动计算机后,在开始菜单中找到 Docker Desktop 应用程序并启动它。
首次启动时,Docker Desktop 可能需要一些时间来初始化。你可以在系统托盘中看到 Docker 图标,当图标变为实心鲸鱼时,表示 Docker 已成功启动。
打开cmd命令提示符或 PowerShell。
运行
docker --version
命令检查 Docker 是否正确安装并运行,如果安装成功,你将看到安装的 Docker 版本信息(我电脑早安装了,所以版本不是最新版)。
在 Ubuntu 上安装Dokcer
官网安装说明:https://docs.docker.com/engine/install/ubuntu/,最低支持的ubunu版本为20.04,我这里用的是22.04版本。
更新系统
在安装 Docker 之前,确保系统是最新的。打开终端并运行以下命令:
sudo apt update
sudo apt upgrade
安装依赖包
安装一些必要的依赖包,用于添加 Docker 软件包存储库和通过 HTTPS 使用存储库:
sudo apt-get install ca-certificates curl gnupg
添加 Docker 官方 阿里云GPG 密钥
运行以下命令添加 Docker 官方 阿里云GPG 密钥:
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
添加阿里云Docker软件包存储库
根据你的 Ubuntu 版本,运行相应的命令添加 Docker 软件包存储库。例如,对于 Ubuntu 22.04
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
更新软件包列表
再次更新软件包列表,以包含新添加的 Docker 存储库:
sudo apt-get update
安装 Docker 套件
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动 Docker
systemctl start docker
运行 docker --version
命令检查 Docker 是否正确安装并运行,如果安装成功,你将看到安装的 Docker 版本信息。
常用配置
Windows配置
在 Docker Desktop for Windows 中,用户需要通过 Docker Desktop 应用程序的设置界面来间接修改其内容。具体操作是打开 Docker Desktop,点击主界面的设置按钮进入设置(Settings),在左侧菜单中选择 “Docker Engine”,这里的配置内容实际上会被转换为daemon.json配置文件的格式并应用到 Docker 守护进程中。
Linux配置
通常位于/etc/docker/目录下。这是大多数基于 Linux 的发行版(如 Ubuntu、Debian、Fedora 等)默认存放daemon.json文件的地方。如果该文件不存在,用户可以自行创建。
通用配置
镜像加速器配置
正如前文提到的,由于网络原因,从 Docker 官方镜像仓库拉取镜像可能速度较慢。配置镜像加速器是提高镜像拉取速度的有效方式。在daemon.json 或设置界面的 Docker Engine 中,通过 registry-mirrors 字段来配置镜像加速器地址列表。例如:
{
"registry - mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://9g5on9ik.mirror.aliyuncs.com",
"https://hub-mirror.c.163.com",
"https://dockerhub.icu",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}
存储驱动配置
Docker 支持多种存储驱动,如overlay2、aufs、devicemapper等。存储驱动决定了 Docker 如何管理镜像和容器的数据存储。在某些情况下,特定的存储驱动可能更适合系统的硬件和应用场景。通过daemon.json可以配置存储驱动。例如,要将存储驱动设置为overlay2,配置如下:
{
"storage-driver": "overlay2"
}
需要注意的是,不同的存储驱动有其各自的优缺点和适用场景。例如,overlay2在许多 Linux 系统上是性能较好且推荐使用的存储驱动,它具有高效的文件系统操作和内存使用效率;而devicemapper则在一些特定的企业级存储环境中有更好的表现。在选择存储驱动时,需要综合考虑系统的硬件配置、性能需求以及应用特点等因素。
日志驱动配置
Docker 容器运行时会产生日志,日志驱动决定了如何收集和存储这些日志。常见的日志驱动有json - file(默认)、syslog、journald等。通过daemon.json可以配置日志驱动及其相关参数。
{
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
代理配置
{
"proxies": {
"http-proxy": "http://IP:PORT",
"https-proxy": "http://IP:PORT",
"no-proxy": "localhost"
}
}
本地仓库配置
添加本地仓库的安全信任,避免push时出现https的不安全错误:Get "https://192.168.x.x:5000/v2/": http: server gave HTTP response to HTTPS client
{
"insecure-registries":["http://192.168.X.X:5000"]
}
最后修改完配置,Linux需要重新启动docker服务:
systemctl daemon-reload
systemctl restart docker