Docker 学习(四) 容器常用命令

本文详细介绍了Docker容器的各种操作命令,包括启动、停止、重启、进入、删除、导出和导入容器的方法,以及如何查看容器日志。通过具体示例,帮助读者掌握Docker容器的管理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建并启动容器

格式:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

docker run 的选项可以有很多这里就不一一列举出来了。下面仅仅列举出部分常用参数:

选项缩写说明
–detach-d后台运行容器,并打印容器ID
–publish-all-P随机映射所有端口
–publish-p指定 端口映射,该选项有一下四种格式:
ip : hostPort : containerPort
ip :: containerPort
hostPort:containerPort
containerPort
–network指定网络模式,该选项有以下四种可选参数。
–network=bridge : 默认选项,表示连接到默认的网桥。
–network=host : 容器使用宿主机的网络。
--network=container:Name_or_ID : 告诉 Docker 让新建的容器使用已有容器的网络配置。
--network=none : 不配置该容器的网络,用户可自定义网络配置
–name设置容器名称,如果不指定则docker会随机指定一个容器名称

示例1:

docker run java /bin/echo 'Hello World'

示例2:

docker run -d --name name -p 91:80 nginx

这样就可以启动一个Nginx容器。访问 http://Docker 宿主机 IP:91/,会看到如下图所示界面:

在这里插入图片描述

需要注意的是,使用Docker Run 命令创建容器时,会先检查本地是否存在指定镜像。如果本地不存在该名称的镜像,Docker 会自动从 Docker Hub 下载镜像并启动一个 Docker 容器。

列出容器

在这里插入图片描述

格式:

docker ps [OPTIONS]
选项缩写说明
–all-a列出全部容器,包括未运行的容器。默认值展示运行的容器
–filter-f根据条件过滤显示的内容
–format通过Go语言模板文件展示镜像
–last-n显示最近创建的 n 个容器(包含所有状态)
–latest-l显示最近创建的容器(包含所有状态)
–no-trunc不截断输出
–quiet-q静默模式,只展示容器的ID
–size-s显示总文件大小

示例:

docker ps

该命令会展示正在运行的容器,输出结果如下:

在这里插入图片描述

字段说明
CONTAINER ID容器ID
IMAGE镜像名称
COMMAND表示启动容器时运行的命令,类似与开机启动项
STATUS容器运行的状态。Up 表示运行中,Exited 表示已停止
PORTS表示对外的端口号
NAMES容器名称。该名称默认由 Docker 自动生成,也可使用docker run命令的 -name 选择指定。

停止容器

在这里插入图片描述

格式:

docker stop [OPTIONS] CONTAINER [CONTAINER...]
选项缩写描述
–time-t强行停止容器的等待时间,单位s,默认是10秒。意思是如果在10秒内不能停止容器则使用强制停止容器的命令

示例:

docker stop 9adde0091f5d

9adde0091f5d 是容器ID ,也可以使用 docker stop 容器名称 来停止容器

强制停止容器

在这里插入图片描述

格式:

docker kill [OPTIONS] CONTAINER [CONTAINER...]
选项缩写说明
–signal-s向容器发送一个信号,默认是“KILL” ,这里可以发送自定义内容

示例:

docker kill 9adde0091f5d

启动已停止的容器

docker run 是新建并启动, docker start 是启动已停止的容器。

在这里插入图片描述

格式:

docker start [OPTIONS] CONTAINER [CONTAINER...]
选项缩写说明
–attach-a连接 STDOUT/STDERR 并转发信号
–detach-keys覆盖断开容器的关键顺序
–interactive-i连接容器的 STDIN

示例:

docker start 9adde0091f5d

重启容器

在这里插入图片描述

格式:

docker restart [OPTIONS] CONTAINER [CONTAINER...]
选项缩写说明
–time-t强制关闭容器的等待时间,单位s,默认10s

示例:

 docker restart 9adde0091f5d

该命令实际上就是先执行 docker stop 然后执行 docker start

进入容器

进入容器内部。

  • 使用docker attach 命令进入容器。例如:
docker attach 3b307f41cbbb

不过我使用这个命令从来没有进入过… 。如果在尝试这个命令的时候卡住了,使用快捷键 Ctrl+C 来退出

  • 使用 nsenter 进入容器。首先需要找到容器第一个进程的PID .可以通过以下命令获取。
docker inspect --format "{{.State.Pid}}" 3b307f41cbbb

有关nsenter的相关内容,都是以Linux 为例的。由于我是在Windows平台上,所以没有深入了解

  • 使用 docker exec 命令进入容器。这种方式我最常用也是最简单的方式。示例:
docker exec -it 3b307f41cbbb /bin/bash

在这里插入图片描述

输入exit即可退出容器

删除容器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-08XahErr-1572915663753)(2586B9C5543D4E21A66CE32DE4047CC5)]
格式:

docker rm [OPTIONS] CONTAINER [CONTAINER...]
选项缩写说明
–force-f通过SIGKILL信号强制删除正在运行中的容器
–link-l删除容器间的网络连接
–volumes-v不仅删除容器(如果容器有使用卷,卷也会进行相应的删除)

有关-v参数和构建镜像有关。后面会有相对详细的说明

示例:

 docker rm 3b307f41cbbb

该命令只能删除已经停止运行的容器,如果想要删除正在运行的容器,可以使用 -f 参数。或者是先 docker stop 再删除。

示例2:
删除全部容器

 docker rm -f $(docker ps -a -q)

导出容器

在这里插入图片描述

格式:

docker export [OPTIONS] CONTAINER
选项缩写说明
–output-o将内容写到文件而非标准输出

示例:

# 将 hardcore_dhawan 容器导出成 latest.tar 文件。其中hardcore_dhawan是容器名称
 docker export hardcore_dhawan > latest.tar
 docker export -o "latest.tar" hardcore_dhawan

导入容器

在这里插入图片描述

格式:

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
选项缩写说明
–change-c将Dockerfile 指令应用到创建的镜像
–message-m为导入的镜像设置提交时的文字说明

示例:

# 从latest.tar文件中导入并创建nginx镜像,设置标签为test
docker import latest.tar nginx:test

save load export import 区别

  • save 命令是用来导出镜像的。导出的镜像文件文件会保存该镜像的所有历史记录。所以导出的文件比 export 导出的大

  • export 命令是导出容器的,导出的文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照。

  • load 将文件导入为镜像,无法指定镜像的名称

  • import 将文件导入为镜像,可以重新指定镜像文件的名称和标签

从功能上讲,export相当于commit +save,先将容器commit成镜像,再save成文件

查看日志

docker logs --help 

示例:

# 查看名称为containerName的容器,最近30分钟的日志
docker logs --since 30m containerName

参考:

http://www.dataguru.cn/thread-650512-1-1.html
https://www.jianshu.com/p/8d834513e468
https://www.cnblogs.com/Cherry-Linux/p/8025777.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值