我正在使用 docker,但每次运行它时,我都应该为我的工作安装一些重要的应用程序,这需要一些努力来使用 cat 编辑sources.list,然后安装 sudo 和 nano,然后每次运行 docker 时安装其他东西。
有没有办法保存docker容器并稍后重新登录?
我在 debian 10 中运行 ubuntu 16 和 docker。
答案1
与一个Dockerfile
这是“正常”方式。基本上,您创建一个文件(通常名为Dockerfile
),其中包含:
# The image we will start with:
FROM ubuntu:16.04
# Install packages, by running a command
RUN apt update && apt install package1 package2
# You can also copy you own script/config files
COPY startup.sh /startup.sh
然后“编译”图像(假设包含 Dockerfile 和脚本的目录是当前目录):
docker build -t my_image .
然后你使用你的图像:
docker run my_image
Dockerfiles 的完整语法是这里
这种方法的好处:
- Dockerfile 是工作容器的“配方”,无需做旁注等...这就是您获得文档化且可维护的容器的方式。
- 您可以轻松升级到新版本的基础镜像
- 您只需传输 docker 文件和复制到容器的几个文件即可共享映像或将其传输到另一台计算机。
和docker commit
您还可以从当前容器内容创建图像:
docker commit <containerId> <imageName>
问题是,如果图像有效,你并不真正知道里面有什么,而且不容易传输(这是一个相当大的文件)
笔记:
- 在更改 USER 之前,您是容器中的 root,因此通常不需要
sudo
- 您也不需要
nano
,在容器外部编辑文件并使用 Dockerfile 复制它们。容器是一次性的东西... - 使用您自己的映像,即使没有网络,容器的启动速度也会快得多,因为您不需要重新安装东西。
- 容器是一次性物品,很难备份或转移。