第二部分:定制自己镜像 修改docker镜像,上传到docker hub仓库为己用

首先,让我们回顾一下Docker镜像的基本概念。Docker镜像是一个包含了应用程序以及其所有依赖项的独立文件系统。它是从 Docker 容器创建的模板,可以用来启动新的容器实例。镜像具有轻量、可移植和可重复部署的特点,这使得它们成为构建和分发应用程序的理想选择。

那我们为什么要去定制 修改镜像?

定制自己的镜像,通过修改现有的 Docker 镜像,并将其上传到 Docker Hub,您可以轻松地创建适合自己特定需求的定制化环境。这种自定义镜像的能力使您能够快速部署和共享应用程序、工具和服务,无论是个人项目还是团队协作,都能大大提高效率。

修改镜像之前,您需要了解 Dockerfile 的概念。Dockerfile 是一个文本文件,其中包含了一系列的指令,用于描述如何构建一个 Docker 镜像。您可以使用各种指令来安装软件包、复制文件、设置环境变量等。编写一个正确的 Dockerfile 是定制镜像的关键步骤之一。

在 Dockerfile 中完成镜像的修改后,接下来就是构建镜像。通过运行 docker build 命令,并指定 Dockerfile 的路径,Docker 引擎将根据 Dockerfile 的指令来构建新的镜像。这个过程可能需要一些时间,具体时间取决于镜像的大小和操作的复杂性。

一旦构建完成,您可以使用 docker run 命令来启动基于您修改后的镜像的容器。这将创建一个实例化的容器,其中包含了您所需的所有环境和应用程序。您可以在容器中进行测试和验证,确保镜像的修改满足您的预期。

最后就是上传工作了,您可以将其上传到 Docker Hub,与其他人共享。

好的,废话有点多,开始了

我们还是引用前面的独角数卡为例,感谢stille大神提供了源代码:

项目地址:https://github.com/stilleshan/dockerfiles/tree/main/dujiaoka

步骤如下:

1.把代码全部下载到本地

2.打开终端,新建一个项目,命名du

代码如下:


sudo -i

mkdir du                     #在root目录下新建了一个du文件夹

chmod -R 777 /root/du        #赋予该目录全部权限

cd /root/du                   #定位到目录


3.文件管理器进入root/du目录,将开发者的代码全部复制进该目录,输入下面代码查看一下:


vi Dockerfile                 #编辑文件

可以试着先了解一下里面的内容,然后先按esc 再按shift加: 最后按wq 回车为保存退出

4.构建镜像,直接输入下面的命令


docker build -t 你的用户名/你的仓库名:标签 .

注意: -t 参数是给镜像命名并打标签,用户名 仓库名 标签 需要自己修改

因为是示范,用户名是你自己docker hub上的用户名,仓库名是du,标签默认是latest,后面还有一个点

5.构建镜像要一点时间,耐心等一下,看见成功字样就可以了,输入下面命令,查看镜像


docker images

6.如果构建后的镜像没有对应我们的仓库名,可以使用另一个命令docker tag来完成


docker build -t 你的用户名/du:标签 .

docker tag du:v1 你的用户名/du:标签

7.使用docker login 登陆到远程仓库,再执行docker push即可


docker login    #登录到仓库

docker push 你的用户名/du:标签      #推送镜像

8.等待推送完成,一切就都大功告成了。后面就可以自己测试镜像了。

上面是一种方法,下面再提供另外的一种思路

以下仅供测试:

1.启动一个新的容器,使用docker run命令,并指定要修改的镜像名称和版本号,


docker images           #命令找到镜像ID

docker run -it 镜像id bash

docker run -it 镜像id sh

2.查看文件,并试着编辑文件,这里我们就以查找默认模版的powered by字样为例


ls resources/views/unicorn/layouts/           #查看

vi resources/views/unicorn/layouts/_footer.blade.php   #编辑

3.修改后退出编辑器,再退出容器


exit         #退出

4.保存修改后,我们就创建新的镜像。


docker ps -a        #命令找到容器ID

docker commit 容器id 你的用户名/新的镜像名称

注意:是容器ID,不是镜像ID,不要搞混淆。新的镜像名称,是你要创建的新镜像的名称。

5.测试新的镜像。使用 docker run命令来启动新的镜像,并测试修改是否生效。


docker images    #找到新的镜像id

docker run -it 镜像id bash    #启动

6.接着再次推送即可。

结束语录:

本文中,为了方便,直接拷贝了原作者的源代码。若是想定制修改它人镜像, 最重要的是找到Dockerfile配置文件,通过修改里面的信息得到自己个性化的镜像。

好了,克隆镜像和修改镜像这两部分算是讲完了,朋友们可以按照我的方法试着去修改一下。多多动手,学着学着就会了。