Docker构建镜像的两种方式实现

 更新时间:2021年09月27日 15:37:42   作者:我在北国不背锅  
从 docker 镜像仓库中下载的镜像不能满足我们的需求时,可以通过以下两种方式对镜像进行更改。本文就详细的介绍了这两种方法,感兴趣的可以了解一下

从 docker 镜像仓库中下载的镜像不能满足我们的需求时,可以通过以下两种方式对镜像进行更改。

  • 从已有镜像更新镜像
  • 从零开始构建镜像

从已有镜像更新镜像:

更新镜像之前,我们需要使用镜像来创建一个容器。

在这里插入图片描述

进入容器:

docker run -t -i db2b37ec6181 /bin/bash

在运行的容器内使用 apt-get update 命令进行更新。在完成操作之后,输入 exit 命令来退出这个容器。
此时 ID 为 0aab061e6f5a的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit 来提交容器副本。

在这里插入图片描述

[root@localhost .ssh]# docker commit -m="has update" -a="zyn" 0aab061e6f5a mysql:v2
sha256:3dda266fd05963e816f22e3dec2584589977e040f7202e0421b0151290e4f54b

以上命令各个参数说明:

-m: 提交的描述信息
-a: 指定镜像作者
0aab061e6f5a:容器 ID
mysql:v2: 指定要创建的目标镜像名

我们可以使用 docker images 命令来查看我们的新镜像 mysql:v2:

在这里插入图片描述

从零开始构建镜像:

使用命令 docker build , 从零开始来创建一个新的镜像。为此,需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

例如我们将一个jar包构建出docker镜像:

首先创建Dockerfile文件:

FROM java:8
MAINTAINER zyn
COPY jenkins.war /usr/local/jenkins.war
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/usr/local/jenkins.war","--httpPort=8080"]

以上命令各个参数说明:

java:8就是刚下载的基础镜像
MAINTAINER是作者
COPY是把本地的jar拷贝到镜像中
EXPOSE声明镜像开放的接口
ENTRYPOINT 是指定在docker run时的命令参数,类似的还是RUN和CMD命令

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

然后将jar放到与Dockerfile同级目录下:

在这里插入图片描述

最后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像:

注意:Dockerfile后面的点指的是把当前目录作为上下文目录,创建镜像时,会把上下文目录的文件拷贝到镜像中,也就是把jar包拷贝到镜像中

[root@localhost zyn]# docker build -t my_jenkins:1.0 -f Dockerfile .
Sending build context to Docker daemon  67.29MB
Step 1/5 : FROM java:8
8: Pulling from library/java
5040bd298390: Pull complete
fce5728aad85: Pull complete
76610ec20bf5: Pull complete
60170fec2151: Pull complete
e98f73de8f0d: Pull complete
11f7af24ed9c: Pull complete
49e2d6393f32: Pull complete
bb9cdec9c7f3: Pull complete
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Downloaded newer image for java:8
 ---> d23bdf5b1b1b
Step 2/5 : MAINTAINER zyn
 ---> Running in d8027d9002f4
Removing intermediate container d8027d9002f4
 ---> cdd9362868cb
Step 3/5 : COPY jenkins.war /usr/local/jenkins.war
 ---> 3a276d766222
Step 4/5 : EXPOSE 8080
 ---> Running in 99cf28fb33a8
Removing intermediate container 99cf28fb33a8
 ---> de89b785c80d
Step 5/5 : ENTRYPOINT ["java", "-jar", "/usr/local/jenkins.war","--httpPort=8080"]
 ---> Running in c3a7e16eaa11
Removing intermediate container c3a7e16eaa11
 ---> 5107b1256f01
Successfully built 5107b1256f01
Successfully tagged my_jenkins:1.0

在这里插入图片描述

启动以上的docker镜像:

[root@localhost zyn]# docker run -itd --name jenkins -p 18080:8080 my_jenkins:1.0
5e185bb8e4866b8018f0b3bb7a4845360d3d4efc5bd2509d84fe118929fe52b3

在这里插入图片描述

到此这篇关于Docker构建镜像的两种方式实现的文章就介绍到这了,更多相关Docker构建镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker安装Wordpress速度过慢的问题解决方法

    docker安装Wordpress速度过慢的问题解决方法

    Docker是一种开源的容器化平台,可以帮助开发者将应用程序及其依赖项打包成一个独立的容器,,WordPress是一个流行的开源内容管理系统(CMS),用于创建和管理网站,本文给大家介绍了docker安装Wordpress速度过慢的问题解决方法,需要的朋友可以参考下
    2024-05-05
  • SpringCloud与Docker的集成原理解析

    SpringCloud与Docker的集成原理解析

    Docker的核心原理是通过将应用程序及其所有依赖项封装到独立的容器中,实现了跨平台、一致性和可移植性,这篇文章主要介绍了SpringCloud-Docker原理解析,需要的朋友可以参考下
    2024-02-02
  • Docker mysql+nacos单机部署的实现步骤

    Docker mysql+nacos单机部署的实现步骤

    本文主要介绍了Docker mysql+nacos单机部署的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • 详解用Docker快速搭建一个博客网站

    详解用Docker快速搭建一个博客网站

    本文主要介绍了用Docker快速搭建一个博客网站,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Docker中 container 和 image 的命名

    Docker中 container 和 image 的命名

    这篇文章主要介绍了Docker中container和image的命名,文章基于Docker的相关资料展开对container和image的命名介绍,需要的小伙伴可以参考一下
    2022-04-04
  • 查看Docker容器的IP地址的四种方法

    查看Docker容器的IP地址的四种方法

    本文主要介绍了查看Docker容器的IP地址的四种方法,包括docker inspect命令、结合网络名称、在容器内执行命令、docker network inspect命令这四种,具有一定的参考价值,感兴趣的可以了解一下
    2025-02-02
  • 对Docker-java项目进行jvm调优-内存方式

    对Docker-java项目进行jvm调优-内存方式

    本文详细介绍了如何进入Docker容器并分析Java进程的内存使用情况,通过使用jps和jstat工具,可以查看java进程列表及内存池容量,讨论了设置JVM参数-Xmx和-Xms相等的重要性,以避免堆内存的频繁调整,此外,还探讨了FullGC触发条件和元空间的配置
    2024-09-09
  • Docker 容器全部停止的几种方法实现

    Docker 容器全部停止的几种方法实现

    我们需要停止所有的容器时,可以使用一些命令来实现,本文主要介绍了Docker 容器全部停止的几种方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • docker-compose:未找到命令的检查步骤和修复

    docker-compose:未找到命令的检查步骤和修复

    最近在使用docker时,有不少人遇到了一个问题,在容器中找不到docker命令,这个问题可能会导致一些困惑和疑惑,这篇文章主要介绍了docker-compose:未找到命令的检查步骤和修复的相关资料,需要的朋友可以参考下
    2024-08-08
  • docker如何安装doris

    docker如何安装doris

    文章介绍了使用Docker安装Apache Doris的两种方法:通过Docker Compose部署和手动部署,前者通过创建`docker-compose.yml`文件并运行命令来启动集群,后者则需要手动拉取镜像、启动容器、复制安装包并解压、配置并启动服务
    2025-02-02

最新评论