Docker 模块化工具
Docker 从入门到实战:安装、部署、挂载与常用命令详解
在当今的软件开发与运维领域,Docker 已经成为不可或缺的工具。它通过容器化技术,实现了应用程序的快速部署、移植和扩展,极大地提高了开发和运维效率。本文将从 Docker 的基础简介开始,详细介绍其安装步骤、核心命令、数据挂载与端口映射,以及实际应用部署的全过程,帮助初学者快速上手并深入运用 Docker。
一、Docker 简介
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖打包成轻量级、可移植的容器,实现快速部署和跨环境运行。相比传统虚拟机,Docker 容器更加高效、轻量,启动速度更快。传统虚拟机需要模拟完整的操作系统,而容器则共享宿主机的内核,仅包含应用程序及其所需的依赖库,因此在资源占用、启动速度和移植性上具有显著优势。
二、Docker 安装指南
Docker 支持多种操作系统,包括 Windows、macOS 和 Linux。不同系统的安装方式略有差异,下面分别介绍。
1. Linux 系统安装(以 Ubuntu/Debian 为例)
Linux 系统对 Docker 的支持最为原生,安装步骤如下:
更新软件包索引:
sudo apt update安装依赖:
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common添加 Docker 官方 GPG 密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg添加 Docker 仓库:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null安装 Docker:
1 | sudo apt update |
启动 Docker 并设置开机自启:
sudo systemctl enable --now docker验证安装:
* 查看 Docker 版本:`docker --version`
* 运行测试镜像:`sudo docker run hello-world`,如果出现 “Hello from Docker!” 的消息,则表示安装成功。
2. Windows 系统安装
Windows 系统安装 Docker 需要满足一定的条件,首先你的 Windows 版本需要是 Windows 10 专业版、企业版或教育版(Build 16299 或更高),因为需要开启 Hyper-V 功能。如果是家庭版用户,可以安装 Docker Desktop for Windows(基于 WSL 2)。
安装步骤如下:
访问 Docker 官网(https://www.docker.com/products/docker-desktop),下载 Docker Desktop for Windows 安装包。
双击安装包,按照提示进行安装,勾选 “使用 WSL 2 而不是 Hyper-V”(如果是家庭版用户)。
安装完成后,启动 Docker,在任务栏中会出现 Docker 图标,当图标显示为绿色时,表示 Docker 启动成功。
3. macOS 系统安装
macOS 系统安装 Docker 相对简单,可通过以下方式:
下载安装包安装:前往 Docker 官网下载 Docker Desktop for Mac 安装包,将下载的.dmg 文件打开,把 Docker 图标拖拽到 Applications 文件夹,从应用程序中启动 Docker,首次启动可能需要输入密码授权,启动成功后在菜单栏会出现 Docker 图标。
使用 Homebrew 安装:
brew install --cask docker
三、Docker 核心命令
掌握 Docker 的核心命令是使用 Docker 的基础,下面详细介绍一些常用的命令。
1. 镜像管理
| 命令 | 说明 |
|---|---|
docker pull <镜像名> |
拉取镜像(如 docker pull nginx),如果不指定标签,默认拉取 latest 标签的镜像 |
docker images |
查看本地镜像,包括镜像名称、标签、ID、创建时间和大小 |
docker rmi <镜像ID或镜像名称:标签> |
删除镜像,例如删除 Ubuntu 18.04 镜像:docker rmi ubuntu:18.04。如果镜像正在被容器使用,需要先删除容器才能删除镜像 |
docker search <镜像名> |
搜索 Docker Hub 上的镜像,会显示镜像的名称、描述、星级等信息 |
docker build -t <镜像名> . |
构建镜像(需 Dockerfile),其中 -t 选项用于指定镜像的名称和标签,. 表示当前目录 |
2. 容器管理
| 命令 | 说明 |
|---|---|
docker run [选项] <镜像名称>:<标签> [命令] |
创建并启动容器,常用选项包括 -d(后台运行)、-i(交互模式)、-t(伪终端)、-p(端口映射)、-v(挂载卷)等。例如后台运行容器:docker run -d --name <容器名> <镜像> |
docker ps |
查看运行中的容器 |
docker ps -a |
查看所有容器(包括已停止的) |
docker stop <容器ID或容器名称> |
停止容器,例如停止某个容器:docker stop 123456 |
docker start <容器ID或容器名称> |
启动已停止的容器 |
docker restart <容器ID或容器名称> |
重启容器 |
docker rm <容器ID或容器名称> |
删除容器,删除容器前需要先停止容器。如果要强制删除正在运行的容器,可以使用 -f 选项:docker rm -f <容器ID或容器名称> |
docker logs <容器ID或容器名称> |
查看容器的运行日志,使用 -f 选项可以实时查看日志:docker logs -f <容器ID或容器名称> |
docker exec -it <容器ID或容器名称> /bin/bash |
进入容器终端,与容器进行交互 |
3. 其他常用命令
查看 Docker 信息:
docker info,该命令会显示 Docker 的详细信息,包括容器数量、镜像数量、存储驱动等。查看容器详细信息:
docker inspect <容器ID或容器名称>,该命令会返回容器的详细配置信息,包括网络设置、挂载点等。查看 Docker 网络:
docker network ls创建自定义网络:
docker network create my-net使用 docker-compose.yml 启动服务:
docker-compose up -d查看容器资源占用:
docker stats清理无用镜像、容器、网络:
docker system prune,该命令会删除所有停止的容器、未被使用的网络、悬空镜像等,释放磁盘空间。
四、数据挂载与端口映射
1. 数据挂载
为了防止容器被删除后数据丢失,需要对容器的数据进行持久化。Docker 提供了数据卷挂载(Volume)等方式。
数据卷挂载(Volume):将主机目录挂载到容器,实现数据持久化。
命令格式:docker run -d --name <容器名> -v /宿主机目录:/容器目录 <镜像>
示例:docker run -d --name my-nginx -v /home/user/nginx:/usr/share/nginx/html nginx,其中 /home/user/nginx 是宿主机目录,/usr/share/nginx/html 是容器目录,宿主机目录的文件会同步到容器目录,容器内的修改也会反映到宿主机。
除了绑定宿主机目录,还可以使用 Docker 管理的卷(Volume),卷是 Docker 管理的宿主机文件系统的一部分,位于 /var/lib/docker/volumes/ 目录下。创建卷的命令:docker volume create myvolume,使用卷的命令:docker run -d -v myvolume:/data --name mycontainer ubuntu:18.04。
2. 端口映射
端口映射用于将容器内的服务端口暴露到宿主机,实现外部网络访问。
命令格式:docker run -d --name <容器名> -p <宿主机端口>:<容器端口> <镜像>
示例:docker run -d --name nginx -p 8080:80 nginx,其中 8080 是宿主机端口,80 是容器端口,通过访问宿主机的 8080 端口即可访问容器内 80 端口提供的服务。
五、Docker 部署实战
1. 部署 Nginx
拉取镜像:
docker pull nginx运行容器(挂载本地目录 + 端口映射):
docker run -d --name my-nginx -p 80:80 -v /home/user/nginx:/usr/share/nginx/html nginx验证部署:访问
http://localhost即可看到 Nginx 默认页面,如果宿主机目录/home/user/nginx中有自定义的 index.html 文件,会显示该文件内容。
2. 部署 MySQL
拉取 MySQL 镜像:
docker pull mysql:8.0运行 MySQL 容器(设置密码 + 数据持久化):
docker run -d --name mysql-db -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /home/user/mysql:/var/lib/mysql mysql:8.0
* `MYSQL_ROOT_PASSWORD=123456` 用于设置 root 密码。
* `/home/user/mysql` 是宿主机存储 MySQL 数据的目录,确保数据在容器删除后不丢失。
- 验证部署:可以使用 MySQL 客户端工具连接宿主机的 3306 端口,输入用户名 root 和密码 123456,如果连接成功,则表示部署成功。
3. 部署 Node.js 应用
- 准备应用代码:创建一个简单的 Node.js 应用,文件名为 app.js:
1 | const http = require('http'); |
- 编写 Dockerfile:
1 | FROM node:14 |
构建镜像:在 Dockerfile 所在目录执行
docker build -t mynodeapp:v1 .命令。运行容器:
docker run -d -p 3000:3000 --name mynodecontainer mynodeapp:v1验证部署:在浏览器中访问
http://localhost:3000,如果看到 “Hello, Docker!” 的消息,则表示应用部署成功。
六、总结
Docker 优势
轻量:容器共享宿主机内核,资源占用少。
快速:启动速度快,相比虚拟机可节省大量时间。
跨平台:可在不同操作系统上运行,保证应用环境一致性。
易于部署:通过镜像打包应用及依赖,一键部署。
核心功能
镜像管理:
docker pull、docker images等命令用于镜像的获取、查看和删除。容器管理:
docker run、docker ps、docker exec等命令用于容器的创建、查看、进入等操作。数据持久化:通过
-v挂载数据卷,确保容器数据不丢失。端口映射:通过
-p映射端口,实现外部对容器服务的访问。
实战应用
通过本文介绍的方法,可快速部署 Nginx、MySQL、Node.js 等服务,大大简化了应用的部署流程。
掌握这些知识后,你可以轻松使用 Docker 进行开发、测试和生产部署! 🚀
延伸阅读
- 本文作者:
腾飞
- 本文链接:
https://www.tengfei.eu.org/article/4e502d86.html
- 版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!