Docker构建镜像的两种方式实现
目录
- 从已有镜像更新镜像:
- 从零开始构建镜像:
- 从已有镜像更新镜像
- 从零开始构建镜像
从已有镜像更新镜像: 更新镜像之前,我们需要使用镜像来创建一个容器。
文章图片
进入容器:
docker run -t -i db2b37ec6181 /bin/bash
【Docker构建镜像的两种方式实现】在运行的容器内使用 apt-get update 命令进行更新。在完成操作之后,输入 exit 命令来退出这个容器。
此时 ID 为 0aab061e6f5a的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit 来提交容器副本。
文章图片
[root@localhost .ssh]# docker commit -m="has update" -a="zyn" 0aab061e6f5a mysql:v2sha256:3dda266fd05963e816f22e3dec2584589977e040f7202e0421b0151290e4f54b
以上命令各个参数说明:
-m: 提交的描述信息我们可以使用 docker images 命令来查看我们的新镜像 mysql:v2:
-a: 指定镜像作者
0aab061e6f5a:容器 ID
mysql:v2: 指定要创建的目标镜像名
文章图片
从零开始构建镜像: 使用命令 docker build , 从零开始来创建一个新的镜像。为此,需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。
例如我们将一个jar包构建出docker镜像:
首先创建Dockerfile文件:
FROM java:8MAINTAINER zynCOPY jenkins.war /usr/local/jenkins.warEXPOSE 8080ENTRYPOINT ["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 daemon67.29MBStep 1/5 : FROM java:88: Pulling from library/java5040bd298390: Pull completefce5728aad85: Pull complete76610ec20bf5: Pull complete60170fec2151: Pull completee98f73de8f0d: Pull complete11f7af24ed9c: Pull complete49e2d6393f32: Pull completebb9cdec9c7f3: Pull completeDigest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9dStatus: Downloaded newer image for java:8 ---> d23bdf5b1b1bStep 2/5 : MAINTAINER zyn ---> Running in d8027d9002f4Removing intermediate container d8027d9002f4 ---> cdd9362868cbStep 3/5 : COPY jenkins.war /usr/local/jenkins.war ---> 3a276d766222Step 4/5 : EXPOSE 8080 ---> Running in 99cf28fb33a8Removing intermediate container 99cf28fb33a8 ---> de89b785c80dStep 5/5 : ENTRYPOINT ["java", "-jar", "/usr/local/jenkins.war","--httpPort=8080"] ---> Running in c3a7e16eaa11Removing intermediate container c3a7e16eaa11 ---> 5107b1256f01Successfully built 5107b1256f01Successfully tagged my_jenkins:1.0
文章图片
启动以上的docker镜像:
[root@localhost zyn]# docker run -itd --name jenkins -p 18080:8080 my_jenkins:1.05e185bb8e4866b8018f0b3bb7a4845360d3d4efc5bd2509d84fe118929fe52b3
文章图片
到此这篇关于Docker构建镜像的两种方式实现的文章就介绍到这了,更多相关Docker构建镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 教你用NodeJs构建属于自己的前端脚手工具
- docker中mysql开启日志的实现步骤
- Docker搭建MySQL5.7主从复制的实现
- Koa-generator|Koa-generator 使用nunjucks构建项目
- vue|vue 简单入门
- Docker基础(2)|Docker基础(2) 实践篇
- docker-compose|docker-compose 常用yaml 文件 配置
- kubernetes|docker-compose yaml编写
- python|docker-compose命令及yaml文件
- docker|k8s搭建EFK日志管理系统