1. docker 的 启动、关闭、状态查看
systemctl start docker
systemctl stop docker
systemctl status docker
2.查看镜像
docker images
执行该命令后,会列出本地已有的镜像信息,包括镜像的仓库名称、标签、镜像 ID、创建时间以及镜像大小等。
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 1234567890ab 2 weeks ago 133MB
ubuntu latest abcdefghijkl 3 days ago 72.9MB
3.容器的建立
1.确定要使用的镜像
可以从 Docker Hub 等镜像仓库中拉取所需的镜像。例如,要拉取一个名为 nginx
的镜像,可以使用以下命令:
docker pull nginx
这将从 Docker Hub 下载 nginx
镜像到本地。
2.使用 docker run
建立容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
例如,以下命令将创建一个基于 nginx
镜像的容器,并将容器的 8080 端口映射到宿主机的 80 端口:
docker run -p 80:8080 -d nginx
-p 80:8080
:表示将宿主机的 80 端口映射到容器的 8080 端口。这样,外部可以通过访问宿主机的 80 端口来访问容器内运行的nginx
服务。-d
:表示以守护式(后台)模式运行容器。- 可以使用其他选项来进一步配置容器,如:
--name
:为容器指定一个名称。-v
:将宿主机的目录挂载到容器中,实现数据持久化。-e
:设置容器内的环境变量。
4.容器的启动、停止、查看状态、删除
启动容器
语法:docker start [容器名称或容器 ID]
例如:docker start my_container
,这里 my_container
是容器的名称或 ID。
启动流程:Docker 会恢复被停止的容器的运行状态,重新分配必要的资源,如内存和 CPU,并启动容器内的进程。
停止容器
语法:docker stop [容器名称或容器 ID]
例如:docker stop my_container
。
停止流程:Docker 会向容器内的主进程发送一个停止信号(通常是 SIGTERM),让容器内的进程有机会进行清理和保存工作。如果在一段时间后(默认是 10 秒)容器内的进程没有停止,Docker 会发送一个强制停止信号(SIGKILL)来立即停止容器。
查看容器状态
1.使用 docker ps
命令查看正在运行的容器的状态。
语法:docker ps [OPTIONS]
常用选项:
-
-a
:显示所有容器,包括已停止的容器。 -
-q
:只显示容器 ID。
例如:docker ps -a
将显示所有容器的详细信息,包括容器 ID、镜像名称、启动命令、创建时间、状态等。
查看流程:Docker 会查询其内部的容器管理数据库,获取关于容器的信息,并以表格形式显示出来,让你可以快速了解容器的当前状态。
2.使用 docker inspect
命令可以获取更详细的容器信息,包括网络配置、存储卷挂载等。
语法:docker inspect [容器名称或容器 ID]
例如:docker inspect my_container
。
查看流程:Docker 会返回一个 JSON 格式的详细信息,你可以使用工具或脚本解析这个 JSON 数据,以获取特定的容器属性信息。
删除容器
1.停止容器(如果容器正在运行)
首先,确定要删除的容器是否正在运行。如果容器正在运行,需要先停止它。可以使用以下命令停止容器:
docker stop [容器名称或容器 ID]
2.删除单个容器
docker rm [容器名称或容器 ID]
三、删除多个容器
如果要同时删除多个容器,可以使用以下方法:
- 首先,使用
docker ps -a -q
命令获取所有容器的 ID。这个命令会列出所有容器的 ID,不包括其他信息,方便后续操作。 - 然后,可以使用
docker rm
命令结合管道操作符|
来删除这些容器。例如:docker ps -a -q | xargs docker rm
。这将删除所有已停止的容器。如果要删除正在运行的容器,可能需要添加-f
选项强制删除,但这可能会导致数据丢失,所以要谨慎使用。
在删除容器时要注意以下几点:
- 确保容器不再需要,因为删除后容器内的数据可能无法恢复。
- 如果容器正在运行,最好先停止它,然后再删除,以避免出现错误。
- 对于正在运行的容器,如果强制删除可能会导致数据丢失或其他不可预测的问题。
5. 进入容器
docker exec -it [容器名称或容器 ID] [要在容器中执行的命令]
如果只是想进入容器的 shell 环境而不执行特定命令,可以使用 /bin/bash
(如果容器基于 Linux 系统且有 bash)或 /bin/sh
。
docker exec -it nginx1 /bin/bash
这里 nginx1
是容器名称,执行这个命令后,你将进入容器的 bash 环境,可以在容器内执行各种命令,进行调试、查看文件等操作。