深入了解 Docker 容器操作命令:掌握容器化管理的关键

Docker 已经成为现代应用程序开发和部署的行业标准。它借助容器化技术,提供了一种轻量、可移植和可扩展的方式来构建、发布和运行应用程序。然而,最近我在工作中发现,一些家人们对 Docker 容器的操作命令还不太熟悉。因此,本文旨在深入介绍 Docker 容器操作的各个方面,包括对每个命令及其参数的详细解释。希望通过这篇文章,我们可以一起探讨和学习,进一步提高对 Docker 的理解和应用能力。

docker-container.jpg

创建容器

创建容器有两种方式docker rundocker creat

  1. docker run

docker run 命令首先会在 Docker 主机上查找指定的容器镜像。如果镜像不存在,Docker 将从 Docker Hub 或其他镜像仓库下载它。一旦找到或下载了镜像,Docker 将根据该镜像创建一个新的容器实例。一旦容器创建完成,docker run 命令将会启动容器。

docker run 命令的基本语法如下:

css 复制代码
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • OPTIONS:可选参数,用于配置容器的各种属性。
  • IMAGE:必需参数,指定要运行的容器镜像。
  • COMMAND:可选参数,覆盖容器中定义的默认命令。
  • ARG...:可选参数,传递给容器中的命令的参数。

下面是一些常见的 docker run 参数和选项:

  • -i 或 --interactive:以交互模式运行容器,允许用户输入。
  • -t 或 --tty:分配伪终端 (pseudo-TTY),通常与 -i 一起使用以支持交互性。
  • -d 或 --detach:以后台模式运行容器,不占用当前终端。
  • --name:为容器指定一个名称。
  • --rm:容器停止后自动删除容器。
  • -e 或 --env:设置环境变量。
  • -p 或 --publish:将容器端口映射到主机端口。
  • -v 或 --volume:挂载主机文件或目录到容器中。
  • --network:指定容器连接的网络。
  • --link:连接到另一个容器。
  • --entrypoint:覆盖容器中定义的默认入口点。
  • --restart: Docker 容器的重启策略的选项。

例如,要以交互式终端模式运行一个名为 xj_pandora 的容器,使用xj/pandora:1. 镜像,可以运行以下命令:

ini 复制代码
docker run -itd -p 8899:8899  --name xj_pandora -e PUID=0 -e PGID=0 -e PANDORA_SERVER=0.0.0.0:8899 -e PANDORA_CLOUD=cloud -e TZ=Asia/Shanghai  --restart=always  xj/pandora:1.0
  1. docker creat docker create 命令不是一个常用的命令,而且它通常与其他命令一起使用。docker create 的主要作用是创建一个新的容器,但并不启动该容器。它返回容器的唯一标识符(容器ID),然后你可以使用其他命令来进一步配置和启动这个容器。

以下是 docker create 命令的基本语法和选项:

css 复制代码
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
  • OPTIONS:可选参数,用于配置容器的各种属性。
  • IMAGE:必需参数,指定要使用的容器镜像。
  • COMMAND:可选参数,覆盖容器中定义的默认命令。
  • ARG...:可选参数,传递给容器中的命令的参数。

它的参数和选项和docker run 大同小异

启动、停止和删除容器

  • 启动容器

已创建的容器可以使用 docker start 命令启动:

bash 复制代码
docker start container_name/container_id

docker restart 命令重启容器

bash 复制代码
docker restart container_name/container_id
  • 停止容器

停止容器使用 docker stop 命令::

arduino 复制代码
docker stop container_name/container_id
  • 删除容器

使用 docker rm 命令可以删除一个或多个停止的容器:

bash 复制代码
docker rm container_name/container_id

查看容器

要查看当前运行的容器,可以使用 docker ps 命令:

复制代码
 docker ps

如果要查看所有容器,包括已停止的容器,可以使用 docker ps -a 命令:

css 复制代码
 docker ps -a 

_20230925230526.jpg

进入容器

基本语法:

css 复制代码
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
  • OPTIONS:可选参数,用于配置执行命令的方式。
  • CONTAINER:必需参数,指定要执行命令的容器名称或容器ID。
  • COMMAND:要在容器内执行的命令。
  • ARG...:命令的参数,可以包含多个。

以下是一些常见的 docker exec 参数和选项:

  • -i 或 --interactive:以交互模式运行命令,通常与 -t 一起使用以支持交互性。
  • -t 或 --tty:分配伪终端 (pseudo-TTY),通常与 -i 一起使用。
  • --user:指定执行命令的用户或用户ID。
  • --env:设置环境变量。
  • --workdir:指定执行命令的工作目录。
  • --privileged:以特权模式执行命令,具有更高的权限。

要进入运行中的容器并执行命令,可以使用 docker exec 命令。例如,要进入一个名为 xj_pandora 的容器并启动 Bash 终端:

bash 复制代码
 docker exec -it cdf3be3e078a  /bin/bash

_20230925231329.jpg

拷贝文件

使用 docker cp 命令可以将文件复制到容器内部或从容器内部复制文件到主机。

复制容器中的文件到宿主机:

bash 复制代码
docker cp cdf3be3e078a:/opt/app/requirements.txt  .

_20230925231904.jpg

复制宿主机中的文件到容器:

bash 复制代码
docker cp ./test.txt  cdf3be3e078a:/opt/app/

_20230925232122.jpg

导出和导入容器

你可以使用 docker export 命令将容器导出为一个文件,然后使用 docker import 命令将文件导入为一个新的镜像。这对于分享容器快照或迁移容器非常有用。

arduino 复制代码
docker export -o xj_container.tar xj_container_name
docker import xj_container.tar xj_new_image

查看容器日志

docker logs 命令用于查看 Docker 容器的日志输出。它允许你查看容器内运行的应用程序的标准输出(stdout)和标准错误输出(stderr)。以下是 docker logs 命令的基本语法和详细解释:

css 复制代码
docker logs [OPTIONS] CONTAINER
  • OPTIONS:可选参数,用于配置日志输出的方式。
  • CONTAINER:必需参数,指定要查看日志的容器名称或容器ID。

以下是一些常见的 docker logs 参数和选项:

  • -f 或 --follow:实时跟踪容器日志的输出,类似于 tail -f 命令。
  • --since:仅显示在指定的时间之后生成的日志。
  • --until:仅显示在指定的时间之前生成的日志。
  • --timestamps:显示日志条目的时间戳。
  • --tail:仅显示最后几行日志,默认为所有日志。
  • --details:显示更多的详细日志信息,如容器的标准错误输出。

例如实时输出容器pandora-pandora-1 的日志:

复制代码
docker logs -f pandora-pandora-1

_20230925232855.jpg

总结

Docker 容器操作命令是容器化应用程序开发和管理的关键工具。通过深入了解这些命令的语法和用途,你可以更好地管理和监控容器,确保你的应用程序能够顺利运行。无论是创建容器、查看日志、监控资源使用还是进入容器内部,这些命令都为容器化管理提供了强大的支持。希望本文对你在 Docker 容器操作方面提供了有用的信息和指导。

相关推荐
noravinsc42 分钟前
django中用 InforSuite RDS 替代memcache
后端·python·django
喝醉的小喵1 小时前
【mysql】并发 Insert 的死锁问题 第二弹
数据库·后端·mysql·死锁
kaixin_learn_qt_ing2 小时前
Golang
开发语言·后端·golang
炒空心菜菜2 小时前
MapReduce 实现 WordCount
java·开发语言·ide·后端·spark·eclipse·mapreduce
wowocpp5 小时前
spring boot Controller 和 RestController 的区别
java·spring boot·后端
后青春期的诗go5 小时前
基于Rust语言的Rocket框架和Sqlx库开发WebAPI项目记录(二)
开发语言·后端·rust·rocket框架
freellf5 小时前
go语言学习进阶
后端·学习·golang
全栈派森7 小时前
云存储最佳实践
后端·python·程序人生·flask
CircleMouse7 小时前
基于 RedisTemplate 的分页缓存设计
java·开发语言·后端·spring·缓存
獨枭8 小时前
使用 163 邮箱实现 Spring Boot 邮箱验证码登录
java·spring boot·后端