返回介绍

启动容器

发布于 2025-01-02 21:54:00 字数 2137 浏览 0 评论 0 收藏 0

使用已创建的镜像,你现在可以运行应用程序的容器版本。 通过 docker run 命令,通常再搭配大量的参数,就可以完成容器的启动。 我将首先向你展示一个基本的例子:

$ docker run --name microblog -d -p 8000:5000 --rm microblog:latest
021da2e1e0d390320248abf97dfbbe7b27c70fefed113d5a41bb67a68522e91c

--name 选项为新容器提供了一个名称。 -d 选项告诉 Docker 在后台运行容器。 如果没有 -d ,容器将作为前台应用程序运行,从而阻塞你的命令提示符。 -p 选项将容器端口映射到主机端口。 第一个端口是主机上的端口,右边的端口是容器内的端口。 上面的例子暴露了主机端口 8000,其对应容器中的端口 5000,因此即使内部容器使用 5000,你也将在宿主机上访问端口 8000 来访问应用程序。 一旦容器停止, --rm 选项将使其自动被删除。 虽然这不是必需的,但完成或中断的容器通常不再需要,因此可以自动删除。 最后一个参数是容器使用的容器镜像名称和标签。 运行上述命令后,可以在 http://localhost:8000 上访问该应用程序。

docker run 的输出是分配给新容器的 ID。 这是一个很长的十六进制字符串,在随后的命令中你可以使用它来引用容器。 实际上,只有前几个字符是必需的,足以保证 ID 的唯一性。

如果你想看看哪些容器正在运行,你可以使用 docker ps 命令:

$ docker ps
CONTAINER ID  IMAGE             COMMAND      PORTS                   NAMES
021da2e1e0d3  microblog:latest  "./boot.sh"  0.0.0.0:8000->5000/tcp  microblog

你可以看到,其实 docker ps 命令显示的是缩短了的容器 ID。 如果你现在想停止容器,你可以使用 docker stop

$ docker stop 021da2e1e0d3
021da2e1e0d3

回顾一下,应用程序配置中有许多来自环境变量的选项。 例如,Flask 密钥,数据库 URL 和电子邮件服务器选项都是从环境变量中导入的。 在上面的 docker run 例子中,我没有考虑这些,因此所有这些配置选项都将使用默认值。

在更实际的例子中,你将在容器内设置这些环境变量。 你在前面的章节看到, Dockerfile 中的 ENV 命令设置了环境变量,对于将变为静态的变量来说,这是一个方便的选项。 但是,对于依赖于安装的变量,将它们作为构建过程的一部分并不方便,因为你希望容器镜像具有良好的可移植性。 如果你想将应用程序作为容器镜像提供给另一个人,你希望该人员能够按原样使用它,而不必使用不同的变量重新构建它。

所以构建时的环境变量可能很有用,但是也需要有可以通过 docker run 命令设置的运行时环境变量,对于这些变量,可以使用 -e 选项来设置。 以下示例设置了密钥和 gmail 帐户:

$ docker run --name microblog -d -p 8000:5000 --rm -e SECRET_KEY=my-secret-key \
    -e MAIL_SERVER=smtp.googlemail.com -e MAIL_PORT=587 -e MAIL_USE_TLS=true \
    -e MAIL_USERNAME=<your-gmail-username> -e MAIL_PASSWORD=<your-gmail-password> \
    microblog:latest

由于具有许多环境变量定义, docker run 命令行非常长的情况并不罕见。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文