小知识:Docker构建镜像的两种方式实现

目录 从已有镜像更新镜像: 从零开始构建镜像

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

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

从已有镜像更新镜像:

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

%小知识:Docker构建镜像的两种方式实现-猿站网-插图

进入容器:

docker run -t -i db2b37ec6181 /bin/bash

在运行的容器内使用 apt-get update 命令进行更新。在完成操作之后,输入 exit 命令来退出这个容器。

此时 ID 为 0aab061e6f5a的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit 来提交容器副本。

%小知识:Docker构建镜像的两种方式实现-1猿站网-插图

[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构建镜像的两种方式实现-2猿站网-插图

从零开始构建镜像:

使用命令 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同级目录下:

%小知识:Docker构建镜像的两种方式实现-3猿站网-插图

最后,我们使用 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构建镜像的两种方式实现-4猿站网-插图

启动以上的docker镜像:

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

%小知识:Docker构建镜像的两种方式实现-5猿站网-插图

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

原文链接:https://blog.csdn.net/weixin_44455388/article/details/114401767

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Intellij IDEA快速实现Docker镜像部署的方法步骤

2023-3-15 14:22:41

建站知识

小知识:如何判断服务器是否被攻击了?

2023-3-15 14:37:43

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索