Linux 与 Docker 常用命令

Linux 与 Docker 常用命令

这部分是后端/运维/云原生高频必问内容,按**「模块分类+重点标注+核心参数」**整理,剔除冷门命令,只保留常考、工作常用的核心指令,同时补充高频组合用法和问答考点,方便你直接背诵和实操。

一、Linux 常用命令(核心)

Linux 命令考察基础操作+高频组合+场景实操 ,重点集中在文件操作、权限、进程、查找、系统信息、压缩解压 6大模块,以下标注★★★的是必考 ,★★是高频考。

1. 基础导航/文件操作(★★★,第一道必问)

核心考察是否会基础的目录切换和文件操作 ,常问rm -rf的含义/风险、ls常用参数。

|-------|----------|--------------------------------------------------------------|
| 命令 | 核心用法 | 常考参数/说明 |
| cd | 切换目录 | cd /(根目录)、cd ..(上一级)、cd ~(家目录)、cd -(上一次目录) |
| pwd | 查看当前绝对路径 | 无参数,纯基础必问 |
| ls | 查看目录文件 | ls -l(详单,简写ll)、ls -a(显示隐藏文件)、ls -lh(人性化显示大小) |
| mkdir | 创建目录 | mkdir -p /a/b/c(递归创建多级目录,★★★必考) |
| rm | 删除文件/目录 | rm -f(强制删除不提示)、rm -rf 目录(递归强制删除,★★★必考,重点说风险:rm -rf /会删系统根目录) |
| cp | 复制文件/目录 | cp -r 源目录 目标目录(递归复制目录,★★★) |
| mv | 移动/重命名 | mv 旧名 新名(重命名)、mv 源 目标路径(移动),无递归参数,直接用 |
| touch | 创建空文件 | touch test.txt,基础操作 |

2. 文件查看/编辑(★★★,高频考)

考察查看文件的不同场景用法 ,常问cat/more/less/tail的区别,tail -f是必考。

|-----------|--------------|-------------------------------------------------------------|
| 命令 | 核心用法 | 常考说明 |
| cat | 查看小文件全部内容 | cat test.txt,适合小文件,大文件会刷屏 |
| more/less | 分页查看大文件 | more(只能向下翻)、less(上下翻,按q退出,★★更常用) |
| head | 查看文件前N行 | head -10 test.txt(前10行,默认前10行) |
| tail | 查看文件后N行/实时日志 | tail -10 test.txt(后10行)、tail -f 日志文件(实时监控日志,★★★必考,工作/核心) |
| vim | 编辑文件 | 基础流程:vim test.txt→按i编辑→按Esc→输入:wq保存退出/:q!强制退出(★★★必考,会让口述流程) |

3. 查找/过滤(★★★,核心难点)

考察管道| +查找命令 的组合用法,grep/find是重中之重,常考组合命令。

|-------|--------------------|----------------------------------------------------------------------------------------|
| 命令 | 核心用法 | 常考参数/组合 |
| grep | 过滤文本内容(按关键词查) | grep "关键词" 文件名、grep -i(忽略大小写)、grep -v(反向过滤,排除关键词)、grep -n(显示行号)<br>★★★必考组合:`ps -ef |
| find | 按文件名/大小/时间查找文件 | find 查找路径 -name "文件名"(★★★必考,如find /root -name "*.txt")、find / -size +100M(查大于100M的文件) |
| which | 查找命令的安装路径 | which java、which docker,基础高频 |

4. 权限管理(★★★,必考核心)

考察权限数字含义 和chmod/chown用法,是Linux部分最易考的考点之一 ,会直接问755/644的含义。

先记必考的权限基础:

Linux文件权限分所有者(u)/所属组(g)/其他(o) ,每个角色有读(r=4)/写(w=2)/执行(x=1) 权限,数字权限=各角色权限值相加(★★★必考):

  • 755:所有者rwx(4+2+1)、所属组r-x(4+0+1)、其他r-x → 文件夹默认权限
  • 644:所有者rw-(4+2+0)、所属组r--(4+0+0)、其他r-- → 文件默认权限
  • 777:所有角色都rwx(常问:为什么不建议用?答:权限过大,有安全风险)

核心权限命令:

|-------|---------------------|--------------------------------------------------------------|
| 命令 | 核心用法 | 常考 |
| chmod | 修改文件/目录权限 | chmod 755 test.sh(数字权限,★★★必考)、chmod u+x test.sh(给所有者加执行权限) |
| chown | 修改文件/目录的所有者/所属组 | chown -R 用户名:组名 目录(★★★必考,-R递归修改,如chown -R root:root /docker) |
| ll | 查看权限详情 | 等价于ls -l,会让通过ll结果分析文件权限 |

5. 进程管理(★★★,必考)

考察查看进程、杀死进程 的组合用法,是工作/的高频操作,常和grep组合考。

|---------|------------------------|----------------------------------------------------------------------------------|
| 命令 | 核心用法 | 常考组合/说明 |
| ps | 查看进程 | ps -ef(查看所有进程,★★★必考)、ps aux(更详细的进程信息)<br>★★★必考组合:`ps -ef |
| top | 实时监控进程(类似Windows任务管理器) | 按q退出,会问:如何看CPU/内存占用最高的进程?(答:top界面默认按CPU排序,按M按内存排序) |
| kill | 杀死进程 | kill 进程ID(正常杀死)、kill -9 进程ID(强制杀死,★★★必考,适用于进程卡死的情况) |
| netstat | 查看端口占用(网络进程) | netstat -tlnp(★★★必考,参数含义:t-TCP、l-监听、n-数字显示端口、p-显示进程ID)<br>必考组合:`netstat -tlnp |
| ss | 替代netstat的端口查看命令 | `ss -tlnp |

6. 系统信息/磁盘管理(★★,高频考)

考察查看系统资源使用情况 ,常问df/du/free的区别。

|--------|--------------------|-------------------------------------------------------------|
| 命令 | 核心用法 | 常考参数 |
| df | 查看磁盘分区的剩余空间 | df -h(★★★必考,人性化显示大小,如df -h /查看根分区) |
| du | 查看文件/目录的实际占用空间 | du -sh 目录(★★★必考,s-汇总大小,h-人性化,如du -sh /root) |
| free | 查看内存/交换分区使用情况 | free -h(★★★必考,显示总内存/已用/可用) |
| uname | 查看系统内核/版本信息 | uname -r(查看内核版本,如3.10.0-1160.el7.x86_64)、uname -a(查看所有系统信息) |
| whoami | 查看当前登录用户 | 基础操作,常和权限结合考 |

7. 压缩/解压(★★★,必考)

Linux中tar是唯一核心压缩解压命令,只考这个,重点记参数组合。

|-----|----------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 命令 | 核心用法 | 常考组合(★★★必考) |
| tar | 压缩/解压.tar/.tar.gz/.tar.bz2 | 压缩 :tar -zcvf 压缩包名.tar.gz 源文件/目录(z-gz压缩、c-创建、v-显示过程、f-指定包名) 解压 :tar -zxvf 压缩包名.tar.gz -C 目标目录(x-解压、C-指定解压路径,不加则解压到当前目录) 解压.bz2:把z换成j,即tar -jxvf 包名.tar.bz2 |

8. 其他高频命令

|------------------------|------------|-----------------------------------------------------------------------|
| 命令 | 核心用法 | 考点 |
| ` | ` | 管道符 |
| >/>> | 重定向 | >(覆盖写入,如ls -l > test.txt)、>>(追加写入,★★★必考,如echo "内容" >> test.txt) |
| sudo | 以管理员权限执行命令 | sudo rm -rf 目录,会问:sudo和su的区别?(答:sudo临时提权,su切换到root用户,sudo更安全) |
| reboot/init 6 | 重启系统 | 基础操作 |
| shutdown -h now/init 0 | 关机 | 基础操作 |

二、Docker 常用命令(核心,云原生必问)

Docker 考察镜像/容器的核心操作+参数含义+场景实操 ,重点集中在镜像操作、容器操作、数据卷、网络 4大模块,同时Dockerfile构建镜像、Docker Compose 是进阶必考,以下标注★★★的是必考核心。

前置:Docker 基础(必问)

  • 镜像(image):容器的模板,只读,一个镜像可以创建多个容器
  • 容器(container):镜像的运行实例,可启动/停止/删除
  • 核心原则:容器一次性(数据不存容器内,存数据卷/宿主机)

1. 镜像操作(★★★,必考)

考察镜像的拉取、查看、删除、构建、打标 ,docker build/pull/rmi/tag是核心,常问Dockerfile构建镜像的命令。

|---------------------|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------|
| 命令 | 核心用法 | 常考参数/说明 |
| docker version/info | 查看Docker版本/系统信息 | 基础操作,验证Docker是否安装成功 |
| docker pull | 拉取镜像 | docker pull 镜像名:标签(★★★必考,标签是版本,如docker pull nginx:1.24,不加标签默认拉latest(最新版),会问:为什么不建议用latest?答:版本不固定,易导致环境不一致) |
| docker images | 查看本地所有镜像 | docker images -a(查看所有镜像,包括中间层)、docker images -q(只显示镜像ID) |
| docker rmi | 删除镜像 | docker rmi 镜像ID/镜像名:标签、docker rmi -f 镜像ID(强制删除,★★★必考,镜像被容器引用时需先删容器)<br>必考组合:docker rmi $(docker images -q)(删除所有本地镜像) |
| docker build | 通过Dockerfile构建镜像 | docker build -t 镜像名:标签 -f Dockerfile路径 构建上下文(★★★必考,-t:打标,-f:指定Dockerfile(默认当前目录的Dockerfile),如docker build -t mynginx:1.0 .(.是构建上下文为当前目录)) |
| docker tag | 给镜像打新标签(重命名/改版本) | docker tag 原镜像ID/名:标签 新镜像名:新标签(★★★必考,如docker tag nginx:1.24 myharbor/nginx:1.24,用于推送到私有仓库) |
| docker push | 推送镜像到仓库(阿里云/Harbor) | docker push 镜像名:标签(需先登录仓库:docker login 仓库地址) |

2. 容器操作(★★★,最核心,占Docker考点80%)

考察容器的创建、启动、查看、进入、停止、删除、日志查看 ,docker run/ps/exec/stop/rm/logs是重中之重,docker run 的核心参数是必考难点,会让口述参数含义。

先记 docker run 核心参数(★★★必考,按重要性排序)

docker run [参数] 镜像名:标签,参数是核心,必须背会含义:

  • -d:后台运行容器(★★★必考,守护进程模式,不加则前台运行,关闭终端容器就停)
  • --name:给容器起自定义名字(避免默认随机名,如--name mynginx)
  • -p:宿主机端口:容器端口(端口映射,★★★必考,如-p 80:80,宿主机80端口映射到容器80端口,外部才能访问容器)
  • -v:数据卷/宿主机路径:容器内路径(数据挂载,★★★必考,如-v /host/data:/container/data,将宿主机/host/data挂载到容器内,实现数据持久化)
  • --restart=always:容器随Docker服务启动而自动重启(★★★必考,生产环境必备)
  • -it:交互式运行容器(结合/bin/bash进入容器,如docker run -it centos /bin/bash)
  • --rm:容器停止后自动删除(适合临时测试容器)

核心容器命令

|---------------------------|---------------------|----------------------------------------------------------------------------------------------------------------------|
| 命令 | 核心用法 | 常考组合/说明 |
| docker run | 创建并启动容器 | 必考示例:docker run -d --name mynginx -p 80:80 --restart=always -v /host/nginx/conf:/etc/nginx nginx:1.24(会让分析这个命令的每个参数) |
| docker ps | 查看容器 | docker ps(查看运行中 的容器,★★★必考)、docker ps -a(查看所有容器,包括停止的)、docker ps -q(只显示运行中容器ID) |
| docker exec | 进入运行中的容器(★★★必考) | docker exec -it 容器ID/容器名 /bin/bash(★★★唯一推荐的进入方式,会问:为什么不用docker attach?答:attach退出容器会导致容器停止,exec不会,更安全) |
| docker start/stop/restart | 启动/停止/重启容器 | docker start 容器ID/名、docker stop 容器ID/名(正常停止)、docker restart 容器ID/名 |
| docker rm | 删除容器 | docker rm 容器ID/名、docker rm -f 容器ID/名(强制删除运行中的容器,★★★必考)<br>必考组合:docker rm -f $(docker ps -aq)(删除所有容器,包括运行中的) |
| docker logs | 查看容器日志 | docker logs 容器ID/名、docker logs -f 容器ID/名(实时查看日志,★★★必考,和Linux的tail -f同理)、docker logs --tail 100 容器ID(查看最后100行日志) |
| docker inspect | 查看容器/镜像的详细信息 | docker inspect 容器ID/镜像ID(★★★必考,查看端口、挂载、网络、IP等信息,会问:如何查看容器的IP地址?答:`docker inspect 容器ID |
| docker cp | 宿主机和容器之间复制文件 | docker cp 宿主机文件 容器ID:容器内路径(如docker cp test.txt mynginx:/tmp)、docker cp 容器ID:容器内文件 宿主机路径,基础高频 |

3. 数据卷操作(★★★,必考,数据持久化核心)

Docker 数据卷是独立于容器的存储卷 ,用于持久化容器数据(容器删除后数据不丢),常问:容器挂载的两种方式(数据卷vs宿主机路径)的区别?

|-----------------------|--------------|----------------------------------------------------|
| 命令 | 核心用法 | 常考说明 |
| docker volume create | 创建数据卷 | docker volume create myvol |
| docker volume ls | 查看所有数据卷 | 基础操作 |
| docker volume inspect | 查看数据卷详细信息 | docker volume inspect myvol(★★★必考,查看数据卷的宿主机实际存储路径) |
| docker volume rm | 删除数据卷 | docker volume rm 数据卷名 |
| docker volume prune | 删除未被使用的所有数据卷 | 生产环境慎用,高频 |

4. 网络操作(★★,高频)

Docker 默认网络模式:bridge(桥接,默认)、host(主机网络)、none(无网络),常问bridge和host的区别

|---------------------------|--------------|-------------------------------------------------------------------------|
| 命令 | 核心用法 | 常考说明 |
| docker network ls | 查看所有Docker网络 | 基础操作 |
| docker network create | 创建自定义网络 | docker network create --driver bridge mynet(自定义桥接网络,容器加入同一网络可通过容器名互相访问) |
| docker network connect | 将容器加入指定网络 | docker network connect mynet mynginx |
| docker network disconnect | 将容器移出指定网络 | docker network disconnect mynet mynginx |
| docker network rm | 删除网络 | docker network rm 网络名 |

5. 清理/其他高频命令(★★,常考)

|--------------|----------------------|---------------------------------------------------------------|
| 命令 | 核心用法 | 必考说明 |
| docker prune | 清理无用的镜像、容器、数据卷、网络 | docker system prune -a(★★★必考,清理所有未被使用的资源,包括未被引用的镜像,生产环境执行前确认) |
| docker stats | 实时监控容器的CPU/内存/磁盘IO占用 | 类似Linux的top,高频 |

6. Docker Compose 常用命令(★★★,进阶必考)

Docker Compose 用于编排多个容器 (如nginx+mysql+redis),中云原生方向必问,核心命令简单,重点记up/down。

|-----------------------------------|----------------|---------------------------------------------------------|
| 命令 | 核心用法 | 常考参数 |
| docker-compose -v | 查看Compose版本 | 基础操作 |
| docker-compose up | 启动所有容器 | docker-compose up -d(★★★必考,后台启动,基于docker-compose.yml文件) |
| docker-compose down | 停止并删除所有容器、网络 | 会保留数据卷,常问:如何删除数据卷?答:docker-compose down -v |
| docker-compose ps | 查看Compose管理的容器 | 基础操作 |
| docker-compose logs | 查看所有/指定容器日志 | docker-compose logs -f 服务名(实时查看某个服务的日志,★★★必考) |
| docker-compose restart/start/stop | 重启/启动/停止服务 | docker-compose restart nginx(重启nginx服务) |

三、常考「组合命令+高频问答」(背会直接答)

(一)Linux 高频组合命令(★★★必考)

  1. 查找java进程并强制杀死:ps -ef | grep java | grep -v grep | awk '{print $2}' | xargs kill -9
  2. 实时监控nginx日志:tail -f /usr/local/nginx/logs/access.log
  3. 查8080端口占用并杀死对应进程:netstat -tlnp | grep 8080 | awk '{print $7}' | cut -d/ -f1 | xargs kill -9
  4. 查找/root目录下所有txt文件并删除:find /root -name "*.txt" -exec rm -rf {} ;
  5. 把nginx进程信息追加写入到process.txt:ps -ef | grep nginx >> process.txt

(二)Docker 高频问答(★★★必考,背会答案)

docker run 和 docker create 的区别?

答:docker create 只创建容器(未启动),docker run = create + start(创建并启动)。

docker exec 和 docker attach 的区别?

答:exec 进入运行中的容器,退出容器(exit)不会导致容器停止,推荐使用;attach 进入容器后,退出会导致容器停止,适合临时调试。

为什么要做容器数据持久化?如何实现?

答:容器是一次性的,删除后数据会丢失,所以需要持久化;实现方式:① 数据卷(docker volume);② 宿主机路径挂载(-v 宿主机路径:容器内路径)。

docker 镜像的分层原理?

答:镜像采用分层只读文件系统,每一个命令都会创建一个新的层,层可以共享,减少镜像体积(如多个镜像共用基础CentOS层),最后一层是容器的可写层(容器运行时的修改都在这层,镜像本身只读)。

Dockerfile 中 FROM、RUN、COPY、ADD、CMD、ENTRYPOINT 的作用?

答:① FROM:指定基础镜像(必选,如FROM centos:7);② RUN:构建镜像时执行的命令(如安装软件);③ COPY/ADD:将宿主机文件复制到镜像内(ADD比COPY多了解压功能);④ CMD/ENTRYPOINT:容器启动时执行的命令(CMD可被docker run参数覆盖,ENTRYPOINT不可覆盖,更适合固定启动命令)。

docker 常用的网络模式有哪些?区别是什么?

答:① bridge:默认模式,容器有独立IP,通过宿主机端口映射访问外部;② host:容器共享宿主机的网络命名空间,无独立IP,宿主机端口直接被容器使用,性能更高;③ none:容器无网络,只能本地操作;④ container:容器共享另一个容器的网络。

四、总结

  1. Linux 重点抓文件操作、权限、进程、grep/find、tar、组合命令,这些是第一道必问,口述流程+参数即可;
  2. Docker 核心是镜像拉取/构建、容器run的参数、exec进入容器、日志查看、数据卷 ,docker run的参数必须背会并能分析;
相关推荐
博语小屋3 小时前
I/O 多路转接之epoll
运维·服务器·数据库
sky wide3 小时前
[特殊字符] Docker Swarm 集群搭建指南
java·docker·容器
新钛云服3 小时前
如何构建一套自动化的阿里云费用报告系统
运维·阿里云·自动化·云计算
allway24 小时前
Debian Regular Expressions
运维·debian·scala
文静小土豆4 小时前
Linux 进程终止指南:理解 kill 与 kill -9 的核心区别与正确用法
linux·运维·服务器
不懒不懒4 小时前
安装python3.9.7和pycharm-community-2022.3.2.exe以及linux
linux·ide·python·pycharm
IMPYLH4 小时前
Linux 的 df 命令
linux·运维·服务器
lzhdim4 小时前
SQL 入门 7:SQL 聚合与分组:函数、GROUP BY 与 ROLLUP
java·服务器·数据库·sql·mysql
wefg14 小时前
【Linux】会话、终端、前后台进程
linux·运维·服务器