启动容器
使用已创建的镜像,你现在可以运行应用程序的容器版本。 通过 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论