Docker:服务容器
为什么需要容器?
容器对于现代应用程序部署和管理至关重要,因为它们提供:
效率:与虚拟机相比,容器消耗的资源更少。
一致性:确保应用程序在不同环境中的行为相同。
可移植性:简化开发、测试和生产环境之间的应用程序迁移。
可扩展性:可轻松扩展应用程序以满足需求。
什么是容器镜像?
容器镜像是一个轻量级的独立包,其中包含运行应用程序所需的一切:
代码
运行时
系统工具
图书馆
要点:
容器是容器镜像的运行实例。
您可以从同一映像运行多个容器,从而实现水平扩展和环境复制。
Docker 中央存储库:Docker Hub
Docker Hub 是存储容器镜像的中央存储库。开发人员可以:
下载预先构建的图像。
发布自定义图像。
管理私有和公共容器镜像。
在 Docker 中启动 Nginx Web 服务器
启动 Nginx Web 服务器:
要运行开源 Nginx Web 服务器:
docker container run --publish <host_port:container_port> <image_name>
例子:
docker container run --publish 8080:80 nginx
停止容器前台进程:
使用键盘快捷键:
Ctrl + C
在后台启动容器(分离模式):
在后台运行容器:
docker container run --publish <host_port:container_port> --detach <image_name>
例子:
docker container run --publish 8080:80 --detach nginx
列出和管理容器
列出正在运行的容器:
现代命令:
docker container ls
旧方法:
docker ps
列出所有容器(正在运行和已停止):
docker container ls -a
停止正在运行的容器:
docker container stop <container_id>
run和start命令 之间的区别
run:
总是启动一个新容器。
start:
启动已停止的现有容器。
命名容器
为容器分配特定名称:
docker container run --publish 80:80 --detach --name <name> <image_name>
例子:
docker container run --publish 80:80 --detach --name my-nginx nginx
查看容器中的日志和进程
查看特定容器的日志:
docker container logs <container_name>/<container_id>
查看容器内正在运行的进程:
docker container top <container_id>
删除未使用的容器
通过指定 ID 来删除未使用的容器:
docker container rm <space_separated_container_ids>
容器与虚拟机
| 特征 | 容器 | 虚拟机 (VM) |
|---|---|---|
| 虚拟化层 | 操作系统 (OS) | 硬件 |
| 资源分配 | 轻巧便携 | 资源密集型 |
| 可移植性 | 高度便携 | 便携性有限 |
重点摘要:
容器虚拟化操作系统,而虚拟机虚拟化硬件。
容器是现代可扩展应用程序的理想选择。
资源管理和监控
查看容器的资源消耗情况:
docker stats [container_name or container_id]
获取有关容器的详细信息:
docker inspect [container_name or container_id]
交互式容器
以交互模式启动容器:
docker run -it [image_name or image_id] [command]
选项:
-i:即使未连接,也保持 STDIN 开放。-t:分配伪终端(TTY)。
例子:
docker run -it ubuntu bash
在正在运行的容器中运行命令
在正在运行的容器内执行命令:
docker exec [options] [container_name or container_id] [command]
参数:
[options]:附加选项(例如,-it用于交互模式)。[container_name or container_id]:正在运行的容器的名称或ID。[command]:在容器内执行的命令。
例子:
docker exec -it my-nginx bash

