Docker 基础之 Docker 是什么
Docker 是一种开源的容器化平台,简单来讲,它能把软件应用及其运行所需的所有组件,如操作系统、库文件、依赖项等,打包封装到一个独立的单元,也就是容器中。这个容器就像是一个 “软件集装箱”,无论在何种环境下运行,都能保证应用以相同的方式执行,不受外界环境差异的影响。
想象一下,你开发了一个 Web 应用,在自己的开发环境中运行得好好的,但部署到测试环境或者生产环境时,却因为环境配置的细微差别而出现各种问题,比如依赖的库版本不一致等。Docker 就解决了这个难题,它把应用及其所有依赖都封装在容器里,不管是在本地开发、测试服务器,还是生产服务器上运行,这个容器里的应用都能稳定地工作,就像在一个与世隔绝但功能齐全的小世界里运行一样。
Docker 的核心概念有镜像(Image)、容器(Container)和仓库(Repository)。镜像是一个只读的模板,包含了创建容器所需的所有文件系统和配置,它定义了容器的初始状态。
比如说,你可以有一个基于 Ubuntu 系统的镜像,里面预装了 Python 环境和你的应用代码。容器则是镜像的运行实例,从镜像创建而来,可以启动、停止和删除。仓库则是用来存储和管理镜像的地方,就像一个软件仓库,你可以从公共仓库(如 Docker Hub)下载镜像,也可以把自己创建的镜像上传到私有仓库。
Docker 安装教程
安装前准备
对于 Linux 系统,首先要确认内核版本,因为 Docker 对内核有一定要求,例如 Ubuntu 系统,建议内核版本在 3.10 以上。同时,确保系统已经安装了必要的依赖包,像一些基础的开发工具包等。
Linux 系统安装
以 Ubuntu 为例,安装 Docker 相对比较简单。打开终端,首先更新系统软件包列表,使用命令:sudo apt update
然后安装 Docker 的官方 GPG 密钥,确保软件来源的可靠性,命令如下:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker - archive - keyring.gpg 接着,添加 Docker 软件源到系统,根据你的 Ubuntu 版本选择合适的命令,比如对于 20.04 版本:
echo "deb [arch=amd64 signed - by=/usr/share/keyrings/docker - archive - keyring.gpg] https://download.docker.com/linux/ubuntu focal stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 再次更新软件包列表,以包含新添加的 Docker 软件源:
sudo apt update 最后,安装 Docker 引擎:
sudo apt install docker - ce docker - ce - cli containerd.io 安装完成后,可以通过以下命令检查 Docker 是否安装成功:
sudo docker run hello - world 如果看到一系列输出信息,说明 Docker 已经成功安装并能正常运行。
Windows 系统安装
在 Windows 上安装 Docker,首先要确保你的 Windows 版本是 Windows 10 64 位专业版、企业版或教育版,且开启了 Hyper - V 功能。
前往 Docker 官网(https://www.docker.com/products/docker - desktop)下载 Docker Desktop 安装程序。下载完成后,双击安装程序,按照安装向导的提示进行操作,过程中可能需要重启计算机。
安装完成后,在开始菜单中找到 Docker Desktop 并启动它。启动后,系统托盘会出现 Docker 图标,表明 Docker 已经在后台运行。同样,可以在命令提示符或 PowerShell 中运行
docker run hello - world 来验证安装。
MacOS 系统安装
对于 MacOS,同样需要从 Docker 官网下载 Docker Desktop for Mac 安装包。下载完成后,将安装包拖移到 “Applications” 文件夹中,然后打开 Docker Desktop。
Docker Desktop 会自动进行初始化设置,设置完成后,就可以在终端中运行
docker run hello - world 来检查是否安装成功。
Docker Compose 教程
什么是 Docker Compose
Docker Compose 是一个用于定义和运行多个 Docker 容器应用的工具。当你的应用由多个相互关联的服务组成,比如一个 Web 应用,可能需要一个后端数据库服务和一个前端服务器服务,使用 Docker Compose 可以通过一个配置文件来管理这些服务的启动、停止和重启等操作,极大地简化了多容器应用的部署和管理。
安装 Docker Compose
在 Linux 系统上,可以通过以下命令安装 Docker Compose。首先,根据你的系统架构下载对应的二进制文件,以 64 位系统为例:sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker - compose - $(uname - s)-$(uname - m)" -o /usr/local/bin/docker - compose 这里的版本号 1.29.2 可以根据实际最新版本进行替换。下载完成后,赋予可执行权限:
sudo chmod +x /usr/local/bin/docker - compose 在 Windows 和 MacOS 系统上,安装 Docker Desktop 时会自动安装 Docker Compose,无需额外操作。
Docker Compose 文件编写
version: '3'
services:
web:
build:.
ports:
- "5000:5000"
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydatabase
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword
在这个示例中,version指定了 Compose 文件的版本。services下定义了两个服务,web服务用于运行 Flask 应用,. 表示当前目录为构建上下文,ports将容器内的 5000 端口映射到主机的 5000 端口,depends_on表示web服务依赖于db服务。db服务使用了 MySQL 官方镜像,并设置了一些环境变量来配置数据库。
使用 Docker Compose
编写好 Compose 文件后,在包含该文件的目录下,使用以下命令启动应用:docker - compose up - d -d参数表示在后台运行容器。如果需要停止应用,可以使用:
docker - compose down
还可以使用docker - compose ps查看当前运行的服务状态,docker - compose logs查看服务的日志输出。
Docker 常用命令
镜像相关命令
拉取镜像:从仓库中下载镜像,例如拉取 Ubuntu 镜像:docker pull ubuntu 列出镜像:查看本地已有的镜像列表:
docker images 删除镜像:删除本地的镜像,假设要删除名为myimage的镜像:
docker rmi myimage 容器相关命令
创建并运行容器:从镜像创建并启动一个容器,例如运行一个交互式的 Ubuntu 容器:docker run -it ubuntu bash 这里-i表示保持标准输入打开,-t表示分配一个伪终端,bash表示在容器内执行的命令。
列出容器:查看当前正在运行的容器,使用docker ps,如果要查看所有容器(包括已停止的),使用docker ps -a。
停止容器:停止正在运行的容器,假设容器 ID 为container_id:
docker stop container_id 启动已停止的容器:启动一个已经停止的容器,例如:
docker start container_id 删除容器:删除一个或多个容器,使用docker rm container_id,如果要删除所有已停止的容器,可以使用
docker rm $(docker ps -a -q) 其他常用命令
进入容器:进入正在运行的容器内部,假设容器 ID 为container_id,使用:
docker exec -it container_id bash 这在需要对容器内的环境进行调试或操作时非常有用。
查看容器日志:查看容器的日志输出,帮助排查问题,例如:
docker logs container_id Docker 和虚拟机区别
架构原理区别
而 Docker 则是基于容器技术,它共享宿主机的操作系统内核,容器内只包含应用及其依赖,不包含完整的操作系统。可以把 Docker 容器看作是在宿主机操作系统上运行的一个个独立进程,它们通过 Namespace 和 Cgroups 技术实现资源隔离和限制。
资源占用区别
虚拟机由于每个实例都包含完整的操作系统,所以资源占用较大。每个虚拟机都需要分配一定的 CPU、内存、硬盘空间等资源,即使应用本身对资源需求不大,也需要为虚拟机的操作系统预留资源。例如,启动一个 Windows 虚拟机,即使里面只运行一个简单的文本编辑器,也可能需要几百兆的内存。Docker 容器因为共享宿主机内核,资源占用相对较小。容器只需要分配应用运行所需的资源,对于一些轻量级应用,可能只需要几十兆的内存就能运行。这使得在同一台物理机上可以运行更多的 Docker 容器,提高了资源利用率。
启动速度区别
Docker 容器的启动速度则非常快,因为它不需要加载操作系统,只需要启动应用及其依赖,通常几秒钟就能完成启动。这对于需要快速部署和扩展应用的场景非常有利,比如在进行自动化测试或者应对突发流量时,可以迅速启动多个 Docker 容器来满足需求。
应用场景区别
虚拟机适用于需要完全隔离不同操作系统环境的场景,比如在一台物理机上同时运行 Windows 和 Linux 应用,或者运行一些对操作系统版本有严格要求的遗留应用。
Docker 更适合微服务架构、持续集成和持续交付(CI/CD)等场景。在微服务架构中,每个微服务可以独立封装在一个 Docker 容器中,方便管理和部署。在 CI/CD 流程中,Docker 可以确保应用在不同环境中的一致性,提高部署效率和可靠性。
对于一些 Docker 用户和 VPS 用户,如果在使用 Docker 过程中需要一个稳定且配置灵活的服务器环境,同时希望支付方式更加多样化,不妨考虑USDT购买服务器 。这个 USDT 服务器服务商提供了多种类型的服务器,其配置能够满足不同规模的 Docker 应用需求。无论是学生进行 Docker 相关的学习实践,还是程序员、运维人员用于开发和测试,都能找到合适的选择。而且,它支持 USDT 支付,为持有 USDT 的用户提供了便捷的支付途径,在一定程度上也能满足一些用户对于数字货币支付的偏好。
在使用 Docker 的过程中,虽然它带来了诸多便利,但也需要我们充分了解其特点和可能面临的问题,合理利用各种资源,选择适合自己需求的服务器方案,才能更好地发挥 Docker 的优势,实现高效的开发、部署和运维。希望本文能帮助各位读者对 Docker 有更深入的理解和认识,在技术的道路上不断前行。