docker鏡像打包

以 .NET CORE 3.0重新打包加入gdiplus爲例

鏡像打包

1 查找鏡像

1 從dockerhub拉取指定鏡像

docker pull [images]:[version]

此處,我用dockerfile拉取的,我的命令

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim

2 查看鏡像信息列表

docker images

鏡像是靜態的,得到鏡像id,880d85db3775

2 修改容器

1 將鏡像運行起來
後臺啓動docker,並指定宿主機端口和docker映射端口。

docker run -p 8000:80 -tdi --privileged [imageID] [command]
-i:以交互模式運行容器,通常與 -t 同時使用;
-d:後臺運行容器,並返回容器ID;
-t:爲容器重新分配一個僞輸入終端,通常與 -i 同時使用;
--privileged 容器將擁有訪問主機所有設備的權限

通常情況下 [command] 填下 /bin/bash 即可。

特殊情況下,如需要在centos鏡像中使用systemctl,則應添加--privileged 並設置[command ]爲 init。

我的命令

docker run -p 9699:80 -tdi --privileged 880d85db3775 /bin/bash

2 查看運行中的所有容器,得到容器id爲

docker ps -a

3 當鏡像通過run 啓動後,便會載入到一個動態的container(容器)中運行,此時若需要進入終端交互模式:

sudo docker exec -it [containerID] /bin/bash

交互模式中,使用 ctrl+p+q 退出交互 保持運行,使用 exit命令退出並停止容器。

我的命令,在docker內安裝gdiplus,安裝後退出交互

sudo docker exec -it 12b89974bc2b /bin/bash
apt-get update && apt-get install -y libgdiplus libc6-dev && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll

4 在容器非交互模式下,通過命令來啓動/停止已部署的容器服務。

docker start/stop

5 刪除容器

docker rm [containerID]

6 刪除鏡像

docker rmi [imageID]

7 將宿主機內的指定文件傳輸至容器內部的指定地址

docker cp [YourHostFilePath] [containerID]:[DockerPath]

3 製作新鏡像

1 將修改後的容器重新打包成鏡像

docker commit [containerID] [ImageName]:[Version]

我的命令,打包後並查看

docker commit 12b89974bc2b wscore3:v1
docker images

將容器保存爲新的鏡像,並添加提交人信息和說明信息。

docker commit -a "ws" -m "wscore3v1" 12b89974bc2b wscore3:v1

參數說明
-a :提交的鏡像作者;
-c :使用Dockerfile指令來創建鏡像;
-m :提交時的說明文字;
-p :在commit時,將容器暫停。

3 提交鏡像到雲倉庫

docker push [ImageID] [repertory_address]

參考

Docker常用命令大全
.NET Core 圖片操作在 Linux/Docker 下的坑

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章