🦈 摘要
授之以鱼,不如授之以渔。
作为一个后端开发/运维工程师,我们会遇到安装形如MySQL、Redis、MongoDB、Rocket等开发环境的工作内容,Docker容器化是一个方便、高效的实现方式,网络中充斥着形形色色的教程文章,如:Docker安装MySQL类似内容,但是很多文章只是告诉你根据它的命令执行,会安装成功指定的环境,本身并不会告诉你为什么执行这个命令、这个命令有什么意义,由于版本更新、用户误操作等因素导致踩坑,占用宝贵的开发、学习时间,避免大家因为以上问题导致的浪费无意义时间,这是我写这篇文章的意义。
本文介绍了Docker常用命令的使用,包括容器管理和数据卷的操作。通过深入理解这些命令,您可以更好地管理和使用Docker容器,实现数据持久化、容器交互和数据共享等功能。本文将对每个命令进行详细说明,并给出示例以及使用建议,为您提供一个全面的Docker命令使用手册。
🐳 1. 创建和管理容器
1.1 创建容器
docker run <image_name>
- 示例:
docker run ubuntu
- 使用建议:
-
- <image_name>为所需镜像名称,可以是官方仓库的公共镜像或自定义的镜像。
- 可以添加适当的参数来配置容器,如-d后台运行、-p指定端口映射等。
1.2 列出正在运行的容器
docker ps
- 使用建议:
-
- docker ps -a 列出所有容器(包括停止的)。
1.3 启动、停止和重启容器
docker start <container_id/name>
docker stop <container_id/name>
docker restart <container_id/name>
- 示例:
docker start my_container
docker stop my_container
docker restart my_container
- 使用建议:
-
- <container_id/name>可以是容器的ID或名称。
1.4 进入容器
docker exec -it <container_id/name> <command>
- docker exec:运行一个命令在指定容器中。
- -it:表示交互式操作,可以让用户在容器内进行命令行交互。
- my_container:指定容器名称或 ID。
- /bin/bash:命令参数,表示要在容器中运行的命令。
- 示例:
docker exec -it my_container /bin/bash
- 使用建议:
-
- 可以是容器中的任何命令,例如bash、sh等。
🐬 2.日志查询
2.1查看指定容器的日志
- docker logs <container_name | container_id>:查看指定容器的日志信息。可以通过容器名称或者容器 ID 来获取需要查询的容器。
2.2以流的方式查看日志
- docker logs -f <container_name | container_id>:以实时流式方式查看容器的日志信息,类似于 tail -f 命令。
- docker logs --tail= <container_name | container_id>:查看容器最近的 number 条日志。
- docker logs --since="" <container_name | container_id>:查看自指定时间点以来容器的所有日志信息。时间戳格式为:"yyyy-mm-ddThh:mm:ss" 或者 "yyyy-mm-dd".
- docker logs --until="" <container_name | container_id>:查看自指定时间点之前的容器所有日志信息。
- docker-compose logs <service_name>:查看指定服务(service)的所有容器日志信息。特别是在使用 Docker Compose 部署服务时,这是一个非常有用的命令。
2.3以过滤的方式查询日志
docker logs -f --tail N <container_name | container_id> | grep "search"
-
- N:查询日志的行数
- <container_name | container_id>:容器名称或容器id
- search:待查询的关键字
- 示例
docker logs -f --tail 10 42370f2552f4 | grep "2023"
🦭 3. 数据卷管理
3.1 创建数据卷
docker volume create <volume_name>
- 示例:
docker volume create my_volume
3.2 列出所有数据卷
docker volume ls
- 示例:
docker volume ls
3.3 查看数据卷详细信息
docker volume inspect <volume_name>
- 示例:
docker volume inspect my_volume
3.4 删除数据卷
docker volume rm <volume_name>
- 示例:
docker volume rm my_volume
🐋 4. 容器与数据卷的交互
4.1 在容器中使用数据卷
docker run -v <volume_name>:<container_path> <image_name>
- 示例:
docker run -v my_volume:/app/data my_image
- 使用建议:
-
- 将宿主机中的 /opt/apps 目录挂载到容器中的 /app 目录,使得容器内的应用程序可以访问宿主机中的文件。以做到在宿主机中方便修改容器配置的能力。
4.2 挂载宿主机目录到容器
docker run -v <host_path>:<container_path> <image_name>
- 示例:
docker run -v /host/data:/app/data my_image
本文内容持续更新中...
参考链接:
- Docker官方文档:docs.docker.com/
- Docker数据卷文档:docs.docker.com/storage/vol…
(注意:本文仅限于Docker常用命令的使用,具体操作可能因版本差异而有所不同,请根据实际情况进行调整和验证。)
写在最后
感谢您读到这里,如果觉得文章写的还不错或有任何疑问,可以添加我微信,我随时为您解答。