运行第一个 Docker 容器

zr - 2024-02-04 22:52:41 - 所属文档:Docker 快速入门文档

执行 docker run 命令

打开命令行工具,执行以下命令

docker run -d -p 8000:80 docker/getting-started

等这条命令执行成功之后,docker 已经为我们启动了一个新的容器,在容器的 80 端口上运行着一个 getting-started Web 服务,并将本机上的 8000 端口映射到容器中的 80 端口。

因此,现在可以直接在本机访问 http://localhost:8000 即可访问到容器中 80 端口上启动的 getting-started Web 服务了。

至此,我们已经启动了第一个 Docker 容器。先学会如何使用、先观察到效果,是循序渐进学习的重点;至于什么是容器,什么是镜像将在后续慢慢展开介绍。

部分参数说明:

  • docker/getting-started - 使用的镜像名称

  • -p 8000:80 - 将本机上的 8000 端口映射到容器中的 80 端口

  • -d - 让容器保持在后台运行,返回容器 ID

    备注:类似 -d 和 -p 这种单个字符的参数可以进行合并,所以上一条命令可以简写为:
    docker run -dp 8000:80 docker/getting-started

Docker Dashboard

刚才提到的容器和镜像,在哪里可以看到它们?

方法 1:通过执行 Docker 提供的 cli 命令查看

  • docker container ls - 查看正在运行的容器
  • docker images - 查看有哪些镜像

方法 2:通过 Docker 提供的可视化界面 Docker Dashboard 查看

Docker Dashboard menu

Docker Dashboard 不止可以快速查看机器上运行的容器和拥有的镜像。还可以快速访问容器日志、轻松管理容器的生命周期(启动、停止,删除等...)更多功能可以参考官方文档 Mac 版本Windows 版本
如果现在你已经打开了 Docker Dashboard,将会看到本教程的 getting-started 容器正在运行中。容器名称默认是随机创建的(如下图显示的 agitated_chaplygin)你自己看到到很可跟下图显示的不一致:

Tutorial container running in Docker Dashboard

当然,也可以自己指定容器的名称,只需在运行容器时增加 --name 参数,主动指定容器名称即可,如:
docker run -d -p 8000:80 --name container-name docker/getting-started

什么是容器?

简而言之,容器只是在你计算机上的另一个进程,但是这个进程与主机上的所有其他进程是相互隔离的。这种隔离利用了 Linux 上已经存在很长时间的功能:内核名称空间和 cgroup。Docker 致力于使这些功能更容易实现、更便于使用。

什么是镜像?

容器运行时使用的是隔离的文件系统。这个自定义的文件系统就是由 镜像 提供。由于镜像包含容器的文件系统,因此它必须包含运行应用程序所需的所有内容:所有依赖项、配置、脚本、二进制文件等。该镜像还包含容器的其他配置,例如环境变量、要运行的默认命令以及其他元数据。后续将会更深入的研究镜像,诸如镜像的分层,构建镜像的最佳实践等主题。

原始资料:Get Started