一、保存容器為鏡像
在本小節中,我們將介紹如何將一個已經運行的容器保存為一個新的鏡像。
首先,我們需要使用docker ps
命令查找到該容器的容器ID,如下所示:
$ docker ps
CONTAINER ID IMAGE ...
20b843646ebc nginx ...
然後,我們可以使用docker commit
命令將該容器保存為一個新的鏡像。例如,如果我們想要將該容器保存為nginx:latest
,可以執行以下命令:
$ docker commit 20b843646ebc nginx:latest
這將創造一個新的鏡像nginx:latest
,後續使用時可以像使用其它鏡像一樣使用它。
二、使用Dockerfile創建鏡像
在本小節中,我們將學習如何通過Dockerfile創建鏡像。
首先,在你的工作目錄中創建一個Dockerfile文件:
$ mkdir myimage
$ cd myimage
$ touch Dockerfile
接著,使用文本編輯器打開Dockerfile文件,添加以下內容:
FROM nginx
COPY index.html /usr/share/nginx/html
這個Dockerfile的第一行指定了使用Nginx作為基礎鏡像,第二行將當前目錄下的index.html
文件複製到Nginx的默認HTML目錄中。
最後,使用以下命令在當前目錄中構建鏡像:
$ docker build -t myimage:latest .
這將創建一個名為myimage:latest
的新鏡像。
三、多階段構建
在開發鏡像時,有時候我們需要在同一鏡像中完成多個步驟的構建,但最終只需要保留其中的幾個步驟。這個時候,我們可以使用多階段構建來達到這個目的。
以下是多階段構建的示例Dockerfile:
FROM golang:alpine AS build
WORKDIR /app
COPY . .
RUN go build -o myapp
FROM alpine
WORKDIR /app
COPY --from=build /app/myapp .
CMD ["./myapp"]
在這個Dockerfile中,我們使用golang:alpine
鏡像作為第一個階段,並在其中編譯了一個myapp
可執行文件。接著,使用alpine
作為第二個階段,並從第一個階段中複製myapp
文件到這個階段中,最後運行該文件。
這個Dockerfile的運行結果就是只包含了/app/myapp
文件的alpine
鏡像。
四、將容器導出為文件
除了可以將容器保存為新的鏡像之外,你還可以將容器導出為一個單獨的文件。這個功能對於備份或數據恢復非常有用。
使用以下命令將容器導出為文件:
$ docker export 20b843646ebc > mycontainer.tar
這個命令將導出20b843646ebc
容器的文件系統,並將其打包為一個名為mycontainer.tar
的文件。
五、將文件導入為鏡像
如果你已經導出了一個容器的文件系統,並且想要將其作為鏡像進行使用,可以使用以下命令:
$ cat mycontainer.tar | docker import - myimage:latest
這將創建一個名為myimage:latest
的新鏡像,其內容與剛剛導出的容器的文件系統相同。
六、清理Docker資源
在使用Docker過程中,我們需要經常清理不再需要的Docker資源,包括已停止的容器、未使用的鏡像和卷等等。以下是幾個常用的清理命令:
$ docker container prune
$ docker image prune
$ docker volume prune
$ docker network prune
$ docker system prune
這些命令將刪除對應的Docker資源,並釋放相應的磁碟空間。
原創文章,作者:MJDVL,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/368219.html