原创

Docker常用命令

温馨提示:
本文最后更新于 2026年04月03日,已超过 71 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

启动docker

systemctl start docker

停止docker

systemctl stop docker

重启docker

systemctl restart docker

查看状态

systemctl status docker

设置自动开机

systemctl enable docker

帮助类

查看docker版本

docker version

查看docker概要信息

docker info

查看docker总体帮助文档

docker --help

查看docker具体帮助文档

docker 具体命令 --help

镜像命令

列出本地主机上的镜像

docker images
  • -a :列出所有镜像(含历史镜像)
  • -q:只显示镜像id
  • -f:过滤

在远程仓库搜索镜像

docker search 镜像名称

-f:过滤

--limit 数量:只展示前几项

下载镜像

docker pull 镜像名称[:tag]

不加 tag时,默认下载最新的镜像(即 tag 为 latest)

查看占据的空间

docker system df

删除镜像

docker rmi 镜像名称/ID

可以使用空格间隔 删除多个镜像

docker rmi 镜像1 镜像2 镜像3

删除全部镜像

docker rmi -f $(docker images -qa)

虚悬镜像

仓库名、标签都是<none>的镜像


容器命令

启动容器

docker run [options] IMAGE [command] [ARG...]

--name:为容器指定一个名称

-d:后台运行容器并返回容器ID,(守护式启动容器)

-i:以交互模式 运行容器,通常与-t同时使用

-t:为容器重新分配一个伪输入终端,通常与-i同时使用。即 启动交互式容器(前台有伪终端,等待交互)

-e:为容器添加环境变量

-P:随机端口映射。将容器内暴露的所有端口映射到宿主机随机端口

-p:指定映射端口

  • -p hostPort:containerPort:端口映射,例如-p 8080:80
  • -p ip:hostPort:containerPort:配置监听地址,例如 -p 10.0.0.1:8080:80
  • -p ip::containerPort:随机分配端口,例如 -p 10.0.0.1::80

  • -p hostPort1:containerPort1 -p hostPort2:containerPort2:指定多个端口映射,例如-p 8080:80 -p 8888:3306

退出交互模式

exitctrl+P+Q
容器是否停止停止容器依然运行

正在运行的容器

docker ps [options]

-a:列出当前所有正在运行的容器+历史上运行过的容器

-l:显示最近创建的容器

-n:显示最近n个创建的容器

-q:静默模式,只显示容器编号

容器启停

启动已经停止的容器

docker start 容器ID或容器名

重启容器

docker restart 容器ID或容器名

停止容器

docker stop 容器ID或容器名

强制停止容器

docker kill 容器ID或容器名

删除容器

删除已经停止的容器

docker rm 容器ID或容器名

强制删除正在运行的容器

docker rm -f 容器ID或容器名

一次删除多个容器实例

docker rm -f ${docker ps -a -q}

# 或者
docker ps -a -q | xargs docker rm

查看容器日志

docker logs 容器ID或容器名

查看容器内运行的进程

docker top 容器ID或容器名

查看容器内部细节

docker inspect 容器ID或容器名


进入正在运行的容器

docker exec -it 容器ID bashShell

重新进入

docker attach 容器ID

 docker exec 和 docker attach 区别:

● attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出会导致容器的停止
● exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出不会导致容器的停止

如果有多个终端,都对同一个容器执行了 docker attach,就会出现类似投屏显示的效果。一个终端中输入输出的内容,在其他终端上也会同步的显示。

容器和宿主机文件拷贝

容器到宿主机

docker cp 容器ID:容器内路径 目的主机路径

宿主机到容器

docker cp 主机路径 容器ID:容器内路径

导入和导出容器

export:导出容器的内容流作为一个.tar归档文件(对应 import命令)

import:从tar包中的内容创建一个新的文件系统再导入为镜像(对应export命令)

# 导出
# docker export 容器ID > tar文件名
docker export abc > aaa.tar

# 导入
# cat tar文件 | docker import - 自定义镜像用户/自定义镜像名:自定义镜像版本号
cat aaa.tar | docker import - test/mytest:1.0.1

容器生成新镜像

docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[tag]

注意:

Docker挂载主机目录,可能会出现报错:cannot open directory .: Perission denied


解决方案:在命令中加入参数 --privileged=true


CentOS7安全模块比之前系统版本加强,不安全的会先禁止,目录挂载的情况被默认为不安全的行为,在SELinux里面挂载目录被禁止掉了。如果要开启,一般使用 --privileged=true,扩大容器的权限解决挂载没有权限的问题。也即使用该参数,容器内的root才拥有真正的root权限,否则容器内的root只是外部的一个普通用户权限。






正文到此结束