日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

修改docker官方鏡像內部內容并重新build鏡像

作者:大王我親自來巡山 更新時間: 2022-07-12 編程語言

應用場景

在某些情況下,我們可能需要修改官方的docker鏡像,不過,首先需要搞明白,鏡像:image 和容器:container 的區別:
鏡像image:類似于java中的類
容器container:類似于java中的對象
因此,我們往往從docker hub下載官方鏡像,然后,把鏡像部署到服務器,然后,我們真正用到該服務的時候,往往是根據該鏡像生成一個容器,然后運行容器。和java中類和對象的概念很像,鏡像就是類,根據類生成對象后,真正使用的是對象,對應docker就是容器。

修改官方docker鏡像

首先,明白了前面關于鏡像和容器的概念,我們就會明白,我們需要修改的是鏡像,如果我們只是在容器運行時做改動,則不會影響到鏡像。
下面就以我的一個例子來詳細說一下:
我的需求是更新matomo鏡像中的Apache http server版本
1. 下載鏡像
首先,下載鏡像,可以從docker hub或者從自己的服務器下載。我本來想著,既然更新的是matomo中的Apache http server版本,那我直接把matomo更新到最新不就好了?可惜,結果不如我所想,最新的matomo中,Apache仍然版本過低,所以,只能修改官方鏡像了
2. 啟動容器
查找所有鏡像:

docker images

找到你需要修改的鏡像,保存下鏡像id
然后,進入你要修改的鏡像(其實就是運行該鏡像的容器):

docker run -it ‘鏡像id’ /bin/sh

此時,你會進入容器內部的shell命令行,其實就是一個微型的Linux系統,然后就可以用Linux命令操作該容器,我在這里是升級了Apache版本:
你可以在這里做你需要的改動

apt-get update //獲取更新信息
apt-get upgrade //更新版本

3. 生成新鏡像
修改后,先執行exit退出容器
然后查找剛才運行的容器信息:

docker ps -a

用docker commit命令從容器打包成鏡像:
其中,備注和作者其實不重要,隨便寫,容器id就是你在上一步查找容器信息時獲取的容器id,找你剛才修改的容器,鏡像repository就是你打包生成的新鏡像的repository

docker commit -m “備注” -a “作者” 容器id 鏡像repository

最后,再次docker images就能看到你剛剛生成的新鏡像了
最后加個小功能,如何修改鏡像的tag:

docker tag IMAGEID(鏡像id) REPOSITORY:TAG(倉庫:標簽)

原文鏈接:https://blog.csdn.net/weixin_43923436/article/details/122689152

欄目分類
最近更新