当前位置: 首页 > 面试题库 >

如何扩展现有的Docker容器?

公孙黎昕
2023-03-14
问题内容

可在https://hub.docker.com/r/tensorflow/tensorflow/上使用tensorflow
docker容器,以使用其他库扩展此容器,例如requests我知道两个选项。

  1. 运行容器并运行 pip install requests
  2. 附加pip install requestsdockerFile构建此容器的

还有其他选择吗?类似于tensorflow/tensorflow从dockerFile 创建容器,然后requests在该容器上安装。

阅读如何扩展现有的docker映像为此,创建具有这些内容的dockerFile?:

FROM tensorflow/tensorflow
RUN pip install requests

问题答案:

您的原始断言是正确的,创建一个新的Dockerfile:

FROM tensorflow/tensorflow
RUN pip install requests

现在构建它(请注意名称应为小写):

docker build -t me/mytensorflow .

运行:

docker run -it me/mytensorflow

在其中执行一个shell(docker ps -ql为我们提供要运行的最后一个容器的ID):

docker exec -it `docker ps -ql` /bin/bash

从中获取日志:

docker logs `docker ps -ql`

扩展其他映像的能力是使docker真正强大的原因,此外,您还可以查看其Dockerfile:

https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/docker

并从那里开始而不扩展其docker映像,这是在生产环境中使用docker的人们的最佳实践,因此您知道所有内容都是在内部构建的,而不是由某些黑客将其偷偷潜入您的基础架构中而来的。干杯!
和快乐的建筑



 类似资料:
  • 问题内容: 我使用的是官方的Elasticsearch Docker映像, 而不是设置自己的elasticsearch实例。效果很好,直到我想要扩展它为止。我想在该ElasticSearch实例中安装奇迹以获取更多信息。 现在dockerfile / elasticsearch会自动运行ElasticSearch并将命令设置为不起作用,也不会附加到容器或尝试通过SSH访问它,也不会使用来安装ssh

  • 问题内容: 所以我最近发现了这个很棒的工具,它说 Docker是一个开源项目,可以从任何应用程序轻松创建轻便,可移植,自给自足的容器。开发人员在笔记本电脑上构建和测试的容器可以在生产环境中大规模运行在VM,裸机,OpenStack集群,公共云等上。 假设我有一个运行Nginx的docker映像,一个网站连接到外部数据库。如何在生产中缩放容器? 问题答案: 首先,感谢那些多年来对这个答案的支持。 请

  • 我想创建一个Docker映像,它充当一个可执行文件,用户将其作为环境变量传递一个令牌。该可执行文件包含用户应该通过dockers CMD传递的子命令(想想通过Env进行身份验证的git)。但是,Docker不会将CMD附加到入口点。我的Dockerfile的相关部分如下所示: 我希望 被处决。但是,如上所述,只有被执行,而CMD被忽略--无论我是在启动期间重写它还是在DockerFile中设置它。

  • 我想安装扩展,因为在我的容器中执行composer-install命令时出错: 系统中缺少请求的PHP扩展超文本传输协议*。安装或启用PHP的超文本传输协议扩展。 我的Dockerfile: 我在我的。 我试过: 运行docker-php-ext-安装-j$(nproc)opachepdo_mysqlintl xml肥皂ext-超文本传输协议 我有一个错误: 步骤7/10:运行docker-php

  • 我正试图用三个额外的日期(时间戳)字段扩展扩展扩展名(新闻),并希望在(新闻)的fluidtemplate中调用这些字段。 我已经连线到目前为止,我可以看到我的后端额外的字段,而无需选择一个外部类型-我已经相应地修改了ext_tables.php,并可以保存数据。 现在,我试图在我的新闻流模板中使用这些字段,在我的Partials/List/Item中使用以下代码。html-{newsItem.d

  • 问题内容: 我想创建一个充当可执行文件的Docker映像,用户为其传递令牌作为环境变量。可执行文件具有用户应通过dockers CMD传递的子命令(认为git通过Env进行身份验证)。但是,Docker不会将CMD附加到入口点。我的Dockerfile的相关部分如下所示: 因此,如果执行此容器时没有任何CMD覆盖并且作为MY_TOKEN变量,我希望 被执行。如果用户使用覆盖启动容器,例如 我希望