Linux
是否可以在 docker 容器中永久安裝應用程序?
我正在使用 docker,但每次執行它時,我都應該為我的工作安裝一些重要的應用程序,這需要一些努力來使用 cat 編輯 sources.list,然後安裝 sudo 和 nano,然後每次執行 docker 時安裝其他東西。
有什麼方法可以保存 docker 容器並稍後重新登錄嗎?
我在 debian 10 中使用 docker 執行 ubuntu 16。
帶一個
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 複製它們。容器是一次性的東西…- 使用你自己的鏡像,即使沒有網路,容器啟動速度也會更快,因為你不需要重新安裝東西。
- 容器是一次性物品,很難備份或轉移。