各位正在“啃”技术的小伙伴们! 👋

是不是觉得 Docker 和 Shell 听起来高大上,但又有点不知从何下手? 没关系!今天,我将化身你的“技术向导”,带你轻松玩转 Docker 命令和 Shell 面试的那些事儿!

想象一下,你不再是那个只会“点点点”的小白,而是能够熟练运用命令行,让你的项目“跑起来”的酷炫大神! 😎

准备好迎接这场“技术冒险”了吗? 如果觉得内容对你有帮助,别忘了给我一个“鼓励”:点赞👍、关注➕、分享↗️!这对我来说就是最大的动力! 💪


🐳 第一站:Docker 命令速查表——你的“瑞士军刀”!

Docker 就像一个神奇的“集装箱”,能把你的应用和环境打包,走到哪儿都能“拎包入住”。想要玩转它,这些命令绝对是你手中的“瑞士军刀”!

📦 玩转镜像 (Image)

镜像,可以理解成一个“应用快照”或“安装包”,里面包含了运行你的应用所需的一切。

  1. 查看本地有哪些“安装包”? (docker images)

    bash复制代码 收起

    docker images

    复制

    就像你在电脑里看有哪些软件安装包一样,这个命令会列出你本地所有下载过的镜像。

  2. “扔掉”不用的“安装包”? (docker rmi)

    bash复制代码 收起

    docker rmi <镜像ID或名称>

    复制

    别把旧的、用不上的镜像留在那里占地方啦!用 rmi (remove image) 把它“清理”掉。记得要用镜像的 ID 或名称哦!

  3. 从“官方仓库”下载“安装包”? (docker pull)

    bash复制代码 收起

    docker pull <镜像名>:<版本号>

    复制

    比如 docker pull ubuntu:latest 就是从 Docker Hub (官方仓库) 下载最新的 Ubuntu 镜像。

  4. 把自己做的“安装包”分享出去? (docker push)

    bash复制代码 收起

    docker push <你的Docker Hub用户名>/<镜像名>:<版本号>

    复制

    这个命令有点像把你的软件上传到应用商店,让别人也能下载使用。

  5. “扫码登录”到官方仓库? (docker login)

    bash复制代码 收起

    docker login <仓库地址>

    复制

    在上传或拉取一些私有仓库的镜像时,需要先登录验证身份。

🏃 玩转容器 (Container)

容器,就是由镜像“启动”起来的、正在运行的“集装箱”。

  1. 看看现在有哪些“集装箱”在跑? (docker ps)

    bash复制代码 收起

    docker ps
    # 想看所有,包括“停运”的?加上 -a!
    docker ps -a

    复制

    ps 就像“进程列表”,docker ps 告诉你现在哪些容器在工作。加上 -a (all) 就能看到所有容器,无论在运行还是停止状态。

  2. “叫醒”一个“停运”的集装箱? (docker start)

    bash复制代码 收起

    docker start <容器ID或名称>

    复制

    之前停止的那个应用,想让它重新跑起来? 用 start 命令!

  3. “让”正在跑的集装箱“歇一会儿”? (docker stop)

    bash复制代码 收起

    docker stop <容器ID或名称>

    复制

    像关机一样,让正在运行的容器优雅地停止。

  4. “叫醒”再“睡下”? (docker restart)

    bash复制代码 收起

    docker restart <容器ID或名称>

    复制

    相当于先 stopstart,有时候会用它来“刷新”容器。

  5. 围观集装箱里的“日常”? (docker logs)

    bash复制代码 收起

    docker logs -f --tail=100 <容器ID或名称>

    复制

    -f 就像“实时直播”,--tail=100 表示只看最新的 100 行日志。看看容器里跑的是否正常,有没有报错。

  6. 把集装箱里的“宝贝”搬出来? (docker cp)

    bash复制代码 收起

    docker cp <容器ID>:<容器内路径> <本地目录>

    复制

    比如,想把容器里 /app/logs 目录下的日志文件拷到你本地的 ~/my_logs 文件夹里,就可以这样做。

  7. “钻进”集装箱里看看? (docker exec)

    bash复制代码 收起

    docker exec -it <容器ID> bash

    复制

    -it 是让你能交互式地进入容器。bash 是进入容器后使用的命令行环境。就像“进入”一个独立的 Linux 系统一样!

📦➡️📦 镜像与容器的“打包”与“还原”

有时候,你需要把本地的镜像保存成文件,或者把别人的镜像文件加载到本地。

  1. 把“安装包”打包成“大礼包”? (docker save)

    bash复制代码 收起

    docker save -o <输出文件名.tar> <镜像名>:<版本号>

    复制

    比如,把 tomcat:9.0 镜像打包成 tomcat.tar 文件。

  2. 把“大礼包”解压,加载到本地? (docker load)

    bash复制代码 收起

    docker load -i <镜像文件名.tar>

    复制

    把之前打包好的 tomcat.tar 文件加载进来,就又有了 tomcat:9.0 镜像。

🚀 第一次“启动”一个应用(镜像)? (docker run)

这是启动容器最常用的命令!

bash复制代码 收起

# 最简单的启动方式,以守护进程模式运行 (-d)
docker run -d <镜像名>

# 举个栗子:启动一个 Nginx 容器
docker run -d -p 80:80 nginx
# -d: 后台运行 (detached)
# -p 80:80: 把本地的 80 端口映射到容器的 80 端口

复制

🧹 “清扫”不用的集装箱? (docker rm)

bash复制代码 收起

docker rm <容器ID或名称>
# 如果容器还在运行,想强制删除?加上 -f
docker rm -f <容器ID或名称>

复制

rm (remove) 就是删除容器。-f (force) 就是强制删除。


💡 第二站:Shell 面试题——“命令行沟通术”!

Shell,你可以理解成你和操作系统之间的一位“翻译官”,你用 Shell 命令和它“对话”。面试的时候,下面这些问题经常会出现!

  1. “What is Shell?” (Shell 是什么?)

    小白的回答: “Shell 就是一个命令行工具,我用它来给电脑发指令,让它帮我做事。”
    进阶的回答: “Shell 是一种命令行解释器,它是用户与操作系统之间的接口。它负责解析我们输入的命令,并把它们翻译成操作系统能理解的语言去执行。”

  2. “Shell 有哪些类型?” (都有谁呀?)

    常见的有:

    • Bash (Bourne Again Shell): 最常用、最强大的 Shell,Linux 系统上默认的。
    • sh (Bourne Shell): Bash 的前身,比较基础。
    • csh (C Shell): 语法有点像 C 语言。
    • 还有 Zsh、Ksh 等等。
  3. “如何在 Shell 脚本里拿到‘传家宝’(命令行参数)?”

    在 Shell 脚本里,你可以这样拿到命令行的参数:

    • $1: 第一个参数
    • $2: 第二个参数
    • $#: 参数的个数

    举个例子:
    假如你写了个脚本 myscript.sh,运行方式是 ./myscript.sh hello world

    • echo $1 会输出 hello
    • echo $2 会输出 world
    • echo $# 会输出 2
  4. “Shell 脚本里,怎么创建‘独一无二’的东西?” (创建硬链接和软链接)

    这题有点点深度,但也很重要!

    • 硬链接 (Hard Link): 就像给一个文件起了另一个名字。它们指向同一个文件在磁盘上的实际位置。删除其中一个名字,文件还在。

      bash复制代码 收起

      ln <原文件> <新文件名>

      复制

    • 软链接 (Symbolic Link / Soft Link): 就像一个“快捷方式”。它只是一个指向原文件的“指示”。删除原文件,这个“快捷方式”就失效了。

      bash复制代码 收起

      ln -s <原文件或目录> <新链接名>

      复制


🌟 总结:成为命令行“小达人”!

掌握了这些 Docker 命令和 Shell 面试知识,你就可以自信地在命令行里“遨游”了!

  • Docker: 让你轻松打包、部署和管理你的应用,告别“环境配置噩梦”。
  • Shell: 让你能和操作系统“顺畅沟通”,写出更高效的脚本,解决各种问题。

最重要的一点: 熟能生巧!多敲命令,多写脚本,遇到问题多查阅资料。你会发现,命令行并没有那么“可怕”,反而充满了乐趣!

还有什么 Docker 或 Shell 的“小秘密”想分享?或者有哪个命令让你“抓耳挠腮”?评论区等你!让我们一起在技术的海洋里乘风破浪! 👇


希望这篇博客文章既风趣幽默,又内容充实,能够帮助小白们更好地理解 Docker 命令和 Shell 面试的基础知识! 😊

更多推荐