首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Docker容器中交互安装软件

在Docker容器中交互安装软件
EN

Stack Overflow用户
提问于 2021-03-05 11:02:53
回答 1查看 333关注 0票数 1

我想为我的科学计算项目创建一个Docker容器。对于这个项目,我需要尝试一些依赖项,所以如果我访问容器的shell并安装各种包,然后选择其中的一些包,这将是非常有效的。此外,我希望不同的人复制我的工作,并了解我是如何设置环境的。所以,如果可能的话,我想创建一个类似于复制同一容器的配方的文件。我是否应该手写一个文本文件,列出我在最后选择的依赖项,或者Docker中是否有一个工具可以在创建容器后自动记录在容器中安装了哪些包?

EN

回答 1

Stack Overflow用户

发布于 2021-03-05 12:26:01

我不知道有任何Docker工具可以保存您自动安装的依赖项列表。为了更容易地重现您的容器,您应该遵循@lastr2d2的建议:记录您安装的包,并将其转换为Dockerfile文件中的RUN apt-get install -y package1 package2 ...行。您还可以使用apt list --installed列出已安装的包,尽管您还会获得许多其他未手动安装的包。

另一种方法是使用docker commit保存正在运行的容器的状态,并将图像推送到Docker Hub。commit命令将创建容器当前状态的Docker镜像。These docs提供了有关此命令的详细信息。

重要说明:如果您选择这样做,请阅读有关使用docker commit的警告。在this answer中,作者指出你根本不应该使用docker commit ,因为容器不是完全可重现的。

如果您已经阅读了此警告,但仍希望使用docker commit,下面是一个示例:

代码语言:javascript
复制
# run the container to install packages
$ docker run -it --name container-to-commit ubuntu:20.04 /bin/bash

## inside Docker terminal session
# install packages here
$ apt-get update
$ apt-get install gcc ...

要保存容器,您需要让它保持运行,并在另一个终端中运行docker commit CONTAINER_ID。例如:

代码语言:javascript
复制
$ docker ps
CONTAINER ID   IMAGE            COMMAND     CREATED          STATUS          PORTS     NAMES
a26092c038ab   ubuntu:20.04   "/bin/bash"   56 seconds ago   Up 55 seconds             container-to-commit

# commit the image with the label "username/container-name"
# username should be your Docker Hub username if you choose to distribute on Docker Hub
$ docker commit a26092c038ab username/container-name:v1

$ docker images
REPOSITORY                   TAG       IMAGE ID       CREATED         SIZE
username/container-name       v1     4752ae644acf   5 seconds ago     523MB
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66486163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档