Docker常用命令

目录

一、系统级别类命令

1.启动docker

2.停止Docker

3.重启Docker

4.查看状态

5.设置开机自启

6.取消开机自启

7.查看占据的空间

二、帮助类命令

1.查看Docker版本

2.查看Docker概要信息

3、查看Docker总体帮助文档

4、查看docker具体命令帮助文档

三、容器管理命令

1.列出运行中的容器

2.列出本地主机上的镜像

3.删除容器

[4.搜索Docker Hub中镜像](#4.搜索Docker Hub中镜像)

5.下载Docker镜像

[6. 创建并运行一个新的Docker容器](#6. 创建并运行一个新的Docker容器)

[6.1 运行交互式容器](#6.1 运行交互式容器)

[6.2 在后台运行容器](#6.2 在后台运行容器)

[6.3 映射端口](#6.3 映射端口)

[6.4 设置环境变量](#6.4 设置环境变量)

[6.5 挂载卷](#6.5 挂载卷)

[6.6 工作目录设置](#6.6 工作目录设置)

[6.7 容器重启策略](#6.7 容器重启策略)

[6.8 删除容器在退出时](#6.8 删除容器在退出时)

[6.9 重新进入的容器](#6.9 重新进入的容器)

[6.10 退出容器](#6.10 退出容器)

7.查看容器日志

[7.1 查看某个容器的日志](#7.1 查看某个容器的日志)

[7.2 实时日志(follow)](#7.2 实时日志(follow))

8.容器和宿主机文件拷贝

9.导入和导出容器

[9.1 导出](#9.1 导出)

[9.2 导入](#9.2 导入)

10.将容器生成新镜像


一、系统级别类命令

1.启动docker

bash 复制代码
systemctl start docker

2.停止Docker

bash 复制代码
systemctl stop docker

3.重启Docker

bash 复制代码
systemctl restart docker

4.查看状态

bash 复制代码
systemctl status docker

5.设置开机自启

bash 复制代码
systemctl enable docker

6.取消开机自启

bash 复制代码
systemctl disable docker

7.查看占据的空间

bash 复制代码
docker system df

二、帮助类命令

1.查看Docker版本

bash 复制代码
docker version

2.查看Docker概要信息

bash 复制代码
docker info

3、查看Docker总体帮助文档

bash 复制代码
docker --help

4、查看docker具体命令帮助文档

bash 复制代码
docker 具体命令 --help

三、容器管理命令

1.列出运行中的容器

bash 复制代码
docker ps

参数:

  • -a:列出所有容器,包括正在运行和已经停止的容器。
  • -q:只显示容器的 ID,适合用于脚本等场景。
  • -l可以显示最近一次创建的容器的详细信息。
  • --size:可以显示所有列,包括容器的大小信息。
  • --filter "status=running" :指定的条件筛选容器,status=running 只显示正在运行的容器。
  • -n :可以指定显示最后创建的几个容器,例如:
bash 复制代码
docker ps -n 1

`1` 表示显示最后创建的一个容器。

  • --format可以自定义输出格式, 例如:
bash 复制代码
docker ps --format "ID\t{{.ID}}\nName\t{{.Names}}"

列出容器ID和容器名称。

2.列出本地主机上的镜像

bash 复制代码
docker images

参数:

  • -a:列出所有镜像(含历史镜像)。
  • -q:只显示镜像的 ID。
  • -f:过滤
  • --format参数可以自定义输出格式,例如:
bash 复制代码
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
  • --filter指定的条件筛选镜像,dangling=false 表示只显示非虚悬的镜像。
bash 复制代码
docker images --filter "dangling=false"

3.删除容器

  • 用于删除 Docker 镜像
bash 复制代码
docker rmi <镜像ID>
  • 用于删除 Docker 容器
bash 复制代码
docker rm <镜像ID>

可以使用空格分隔,删除多个镜像:

bash 复制代码
docker rmi 镜像名称/ID

4.搜索Docker Hub中镜像

bash 复制代码
docker search <镜像名称>

默认只返回 25 个结果。

参数:

--limit:50 返回前 50 个相关的镜像

--filter:只显示官方镜像

bash 复制代码
docker search --filter "is-official=true" <镜像名称>

5.下载Docker镜像

bash 复制代码
docker pull <镜像名称>:<标签>

如果标签未填写默认为 latest (最新的镜像)

6. 创建并运行一个新的Docker容器

bash 复制代码
docker run <镜像名称>:<标签>

参数:

  • --name:为容器指定一个名称
  • -d:后台运行容器并返回容器ID,也即启动守护式容器
  • -i :以交互模式(interactive)运行容器,通常与-t同时使用
  • -t :为容器重新分配一个伪输入终端(tty),通常与-i同时使用。也即启动交互式容器(前台有伪终端,等待交互)
  • -e:为容器添加环境变量
  • -P:随机端口映射。将容器内暴露的所有端口映射到宿主机随机端口
  • -p:指定端口映射

6.1 运行交互式容器

bash 复制代码
docker run -it --name my-interactive-container ubuntu:latest

创建一个交互式的 Ubuntu 容器,并为其指定名称为 my-interactive-container

6.2 在后台运行容器

bash 复制代码
docker run -d --name my-background-container nginx:latest

在后台运行一个 Nginx 容器,并为其指定名称为 my-background-container

6.3 映射端口

bash 复制代码
docker run -d -p 8080:80 --name my-web-server nginx:latest

在后台运行一个 Nginx 容器,并将主机的 8080 端口映射到容器的 80 端口。

6.4 设置环境变量

bash 复制代码
docker run -e MYSQL_ROOT_PASSWORD=password -d --name my-mysql-container mysql:latest

在后台运行一个 MySQL 容器,并设置 MySQL root 用户密码为 password

6.5 挂载卷

bash 复制代码
docker run -v /host/data:/container/data -d --name my-data-container busybox:latest

在后台运行一个 Busybox 容器,并将主机的 /host/data 目录挂载到容器的 /container/data 目录。

6.6 工作目录设置

bash 复制代码
docker run -w /app -d --name my-app-container my-app-image:latest

在后台运行一个自定义镜像,并将容器的工作目录设置为 /app

6.7 容器重启策略

bash 复制代码
docker run -d --restart always --name my-always-restart-container nginx:latest

在后台运行一个 Nginx 容器,并设置容器总是在退出时重新启动。

6.8 删除容器在退出时

bash 复制代码
docker run --rm -it ubuntu:latest

创建一个交互式的 Ubuntu 容器,在容器退出时自动删除。

6.9 重新进入的容器

bash 复制代码
docker exec -it <容器> /bin/bash

-it 表示以交互式模式进入容器,/bin/bash 是要在容器内执行的 Shell。

6.10 退出容器

方式一:

在交互shell中exit即可退回宿主机,退出后,容器会停止!!!

bash 复制代码
docker logs <容器ID或容器名称>

方式二:

bash 复制代码
exit;

使用快捷键 Ctrl + P + Q,退出后容器依然正在运行。

7.查看容器日志

7.1 查看某个容器的日志

bash 复制代码
docker logs 容器ID||容器名

7.2 实时日志(follow)

docker logs <容器ID或容器名称>

参数:

  • -f: 可以实时查看容器的日志,类似于 tail -f 的效果。
  • **--timestamps:**在日志中显示时间戳。
  • **--tail N:**可以显示最新的N行日志,例如
bash 复制代码
docker logs --tail 10 my-container

显示最新的10行日志。

8.容器和宿主机文件拷贝

容器内文件拷贝到宿主机:

bash 复制代码
docker cp 容器ID:容器内路径 目的主机路径

宿主机文件拷贝到容器中:

bash 复制代码
docker cp 主机路径 容器ID:容器内路径

9.导入和导出容器

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

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

9.1 导出

bash 复制代码
docker export 容器ID > tar文件名

docker export abc > aaa.tar

9.2 导入

bash 复制代码
cat tar文件 | docker import - 自定义镜像用户/自定义镜像名:自定义镜像版本号

cat aaa.tar | docker import - test/mytest:1.0.1

10.将容器生成新镜像

用于创建一个新的镜像,该镜像是基于已经运行的容器的当前状态生成的。

bash 复制代码
docker commit <容器ID或容器名称> <新镜像名称>
bash 复制代码
docker commit -m="提交的描述信息" -a="作者" <容器ID或容器名称> <新镜像名称>:[tag]

-m 和 -a 可选。

docker 启动一个镜像容器后, 可以在里面执行一些命令操作,然后使用docker commit将新的这个容器快照生成一个镜像。

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

解决方案:在命令中加入参数 --privileged=true,用于赋予容器拥有主机 root 用户权限。


相关推荐
O&REO1 小时前
单机部署kubernetes环境下Overleaf-基于MicroK8s的Overleaf应用部署指南
云原生·容器·kubernetes
运维小文2 小时前
K8S资源限制之LimitRange
云原生·容器·kubernetes·k8s资源限制
登云时刻2 小时前
Kubernetes集群外连接redis集群和使用redis-shake工具迁移数据(二)
redis·容器·kubernetes
wuxingge11 小时前
k8s1.30.0高可用集群部署
云原生·容器·kubernetes
志凌海纳SmartX12 小时前
趋势洞察|AI 能否带动裸金属 K8s 强势崛起?
云原生·容器·kubernetes
锅总12 小时前
nacos与k8s service健康检查详解
云原生·容器·kubernetes
BUG弄潮儿13 小时前
k8s 集群安装
云原生·容器·kubernetes
意疏13 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker
墨鸦_Cormorant13 小时前
使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像
redis·nginx·docker
Code_Artist13 小时前
Docker镜像加速解决方案:配置HTTP代理,让Docker学会科学上网!
docker·云原生·容器