云计算百科
云计算领域专业知识百科平台

第二阶段:玩转容器 (基础命令篇)

太棒了!既然你已经准备好了,我们就来运行 Docker 世界的“开门仪式”。

就像学编程都要打印 Hello World 一样,Docker 也有一个专门用来测试的镜像,名字就叫 hello-world。


2.1 Hello World

请在你的终端 (Terminal/CMD/PowerShell) 中输入下面这行神圣的命令,然后按回车:

docker run hello-world

你会看到什么?

如果一切顺利,屏幕上会刷出一堆英文,其中最核心的是这一句:

Hello from Docker!
This message shows that your installation appears to be working correctly.

🎉 恭喜!你刚刚成功运行了你的第一个 Docker 容器!


刚刚发生了什么?(底层解析)

虽然只敲了一行命令,但 Docker 在后台默默帮你做了 4 件事(请对照之前学的“三剑客”概念):

  • 寻找镜像:Docker 客户端检查你的电脑里有没有 hello-world 这个镜像。
    • 结果: 第一次运行,肯定没有 (Unable to find image… locally)。
  • 下载镜像 (Pull):既然本地没有,Docker 就自动去 Docker Hub(仓库)把你下载了下来。
    • 屏幕提示: Pulling from library/hello-world…
  • 启动容器 (Run):下载完后,Docker 基于这个镜像创建了一个容器并启动了它。
  • 执行并退出:这个容器里的程序很简单,它的唯一作用就是打印出那段 “Hello from Docker!” 的文字,打印完之后,程序结束,容器也就自动停止了。

  • 验证一下

    你可以输入下面这个命令,查看刚才下载的镜像是否还在电脑里:

    docker images

    你应该能看到 hello-world 在列表中,大小只有十几 KB。


    这个时候你可能会问:“这个容器运行完就退出了,那如果我想运行一个一直在后台跑的服务(比如网站)该怎么办?”


    好的,进入 2.2!这一节非常实用。

    刚才的 hello-world 跑完就“死”了(退出),但实际工作中,我们的 Web 服务(比如网站、数据库)是需要一直运行的。

    为了演示,我们换一个更厉害的镜像:Nginx(一个著名的 Web 服务器)。

    请打开终端,准备好跟我一起敲命令!


    2.2 容器的生命周期管理

    我们要学习如何让容器:后台运行、查看状态、停止、启动、删除。

    1. 启动一个“长生不老”的容器

    输入以下命令:

    docker run -d –name my-nginx nginx

    命令解析(重点):

    • docker run:创建并启动容器。
    • -d (Detached):后台运行模式。这意味着容器启动后会默默在后台工作,不会占用你的终端窗口(不像 hello-world 那样占屏)。
    • –name my-nginx:给这个容器起个名字叫 my-nginx。如果不写,Docker 会随机给它起个怪名字(比如 angry_einstein),很不方便管理。
    • nginx:镜像的名字。

    注:第一次运行 Docker 会先从仓库下载 Nginx 镜像,稍等片刻。

    2. 查看正在运行的容器 (ps)

    怎么知道它是不是真的在跑?输入:

    docker ps

    你会看到类似这样的列表:

    • CONTAINER ID:容器的身份证号(随机乱码)。
    • IMAGE:用的哪个镜像 (nginx)。
    • STATUS:状态。如果看到 Up x seconds,说明它正在健康运行!
    • NAMES:你刚才起的 my-nginx。
    3. 停止容器 (stop)

    玩够了,想让它休息一下。输入:

    docker stop my-nginx

    这时候你再输 docker ps,你会发现列表是空的。
    不用慌,容器没丢,只是关机了。

    4. 查看所有容器(包括关机的)

    输入:

    docker ps -a

    (注意多了个 -a,意思是 all)

    你会看到 my-nginx 还在,但是状态变成了 Exited(已退出)。

    5. 再次启动 (start) & 重启 (restart)
    • 开机:docker start my-nginx
    • 重启(比如修改了配置想刷新):docker restart my-nginx
    6. 删除容器 (rm)

    如果不想要这个容器了,想把它扔进垃圾桶。

    尝试直接删除:

    docker rm my-nginx

    报错了吗? 应该会提示:You cannot remove a running container…
    规则:Docker 为了保护你,不能直接删除正在运行的容器。

    正确的删除姿势:

  • 先停止:docker stop my-nginx
  • 再删除:docker rm my-nginx
  • (暴力法:如果不想要停止,强行删除可以用 docker rm -f my-nginx,-f 代表 force)

  • 小结

    这一节你掌握了 Docker 的“遥控器”:

    • docker run -d:后台启动
    • docker ps:看正在跑的
    • docker ps -a:看所有的(包括挂掉的)
    • docker stop/start:关机/开机
    • docker rm:删除容器(尸体)

    实操任务:
    请完整走一遍上面的流程:启动 -> 查看 -> 停止 -> 删除。
    当你的 docker ps -a 列表里干干净净,没有 my-nginx 的时候,我们来看看怎么看容器里面发生了什么(比如查看报错日志)。


    很好,进入 2.3!

    这一节非常关键。很多初学者最大的困惑就是:“容器在后台跑,我怎么知道它有没有报错?我怎么进去修改文件?”

    为了演示,我们需要先把刚才删掉的 my-nginx 重新复活。请先运行:

    docker run -d –name my-nginx nginx


    2.3 与容器交互

    1. 查看日志 (Logs) —— 它是监控摄像头

    当容器在后台 (-d) 运行时,你看不见它的输出。如果程序崩了,或者你想看谁访问了你的网站,就要查日志。

    命令:

    docker logs my-nginx

    你会看到屏幕上打印出了一些信息(如果你还没访问过它,可能信息很少)。

    高级用法:实时监控 (-f)
    就像 Linux 的 tail -f 一样,你可以实时盯着日志看:

    docker logs -f my-nginx

    (此时光标会停在那里闪烁,如果有新日志会立刻跳出来。按 Ctrl + C 可以退出监控模式。)

    2. 进入容器内部 (Exec) —— 它是任意门

    这是 Docker 最酷的功能之一。虽然容器是一个封闭的盒子,但你可以随时“穿梭”进去。

    命令(背下来):

    docker exec -it my-nginx bash

    命令解析:

    • exec:执行命令。
    • -it:这是两个参数 -i (交互式) 和 -t (伪终端) 的缩写。简单说,加上它,你才能像用 SSH 登录服务器一样在里面敲命令。
    • bash:这是你想在容器里运行的程序。这里我们运行 bash (或者 sh),也就是启动一个命令行终端。

    当你回车后:
    你会发现命令行的提示符变了!变成了类似 root@8a2b3c4d5e6f:/# 的样子。
    恭喜,你现在已经身处容器内部了! 😲

    在里面随便逛逛:
    你可以输入 Linux 命令看看:

    • ls:看看文件目录。
    • cat /etc/nginx/nginx.conf:看看 Nginx 的配置文件。
    • ps:看看里面的进程(你会发现里面非常干净,可能只有 Nginx 在跑)。

    怎么出来?
    输入:

    exit

    你就回到了你原本的电脑终端。


    ⚠️ 一个常见的坑

    有些为了极致精简的镜像(比如 alpine 版本),里面可能没有 bash。
    如果你输入上面命令报错 executable file not found,请尝试把 bash 换成 sh:

    docker exec -it my-nginx sh


    第二阶段总结 (玩转容器)

    你现在已经学会了:

  • 下载并运行容器 (run)。
  • 管理它的生死 (stop/start/rm)。
  • 查看它的日记 (logs)。
  • 钻进它的肚子里 (exec)。
  • 这已经覆盖了 Docker 日常使用 80% 的场景了!


    接下来我们要进入更有挑战性但也更有趣的阶段——我们不再用别人写好的镜像,我们要自己写代码,并把它打包成镜像!

    准备好了吗?我们开始学习 Dockerfile。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 第二阶段:玩转容器 (基础命令篇)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!