Dockerfile 创建第一个镜像,docker

在上一篇 《运行第一个docker容器》中我说过docker build 指令是一个相对

其他指令比较复杂的指令,这里呢就跟大家一起来分享一下该指令。

docker build指令是用来创建一个镜像的指令,


但是创建镜像需要一个文件叫做Dockerfile(文件名只能是这个)


其实使用docker build 指令复杂不是指它自己

而是指 Dockerfile 文件编写相对很复杂


编写Dockerfile文件会用到如下指令中的一个或多个(用户自己根据情况进行选择)

FROM:指定容器启动时要用的基础镜像,

如:FROM ubuntu,指定基础镜像是ubuntu;

CMD:指定容器启动时要运行的指令或者命令,

如:CMD [ "/bin/bash" ];

RUN:容器启动时要运行的指令,

如:RUN apt-get -y update;

ADD:构建镜像时把宿主机的当前工作目录中的文件或目录复制到镜像中,

它会把文件提取出来复制到镜像中,

如:ADD a.tar.gz /home,

在构建镜像时就会把 a.tar.gz 解压后把里面的文件复制到 镜像中的/home目录中;

COPY :构建镜像时把文件或目录只复制到镜像中,不会做其他的操作,

如:COPY a.tar.gz /home ,把a.tar.gz压缩包复制到 /home目录中;

WORKDIR:利用该镜像创建一个容器时会在容器中设置一个工作目录,

如:WORKDIR  /home 就是把 /home当作该容器的工作目录;

ENV:在构建镜像时为容器设置环境变量,

如:ENV JAVA_HOME=/home/jdk ;

VOLUME:向利用该镜像创建的容器中添加卷,

如:VOLUME ["/home/project"];

EXPOSE:暴露的端口;

如:EXPOSE 22

以上的指令是在编写Dockerfile文件时用的,并且都要大写


编写 Dockerfile(文件名) 列子如下:

FROM ubuntu:14.04
MAINTAINER ldy "2660304934@qq.com"
RUN apt-get -yqq update
RUN apt-get -y install openjdk-7-jre
ADD apache-tomcat-8.5.4.tar.gz /home/
ENV TOMCAT_HOME=/home/apache-tomcat-8.5.4/bin
EXPOSE 8080

列子中的apache-tomcat-8.5.4.tar.gz要和Dockerfile在同一个目录中(即构建镜像时用的工作目录)

构建镜像:

[root@ldypc tomcat]# pwd
/home/tomcat

可以知道我的工作目录是:/home/tomcat

[root@ldypc tomcat]# ls
Dockerfile  apache-tomcat-8.5.4.tar.gz

[root@ldypc tomcat]# docker build -t newdocker/tomcat . (注意:最后面有一个“ .”)

Dockerfile和 apache-tomcat-8.5.4.tar.gz都在该目录中

newdocker是镜像仓库,tomcat是镜像名(保存Dockerfile文件的目录名)



docker指令:http://blog.csdn.net/smallpizza/article/details/53114397

docker commit创建镜像:http://blog.csdn.net/smallpizza/article/details/53521003

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将多个 Docker 镜像合并为一个镜像可以使用 Docker 的多阶段构建功能,这个功能可以让你在同一个 Dockerfile 文件中定义多个构建阶段,并将之前阶段构建的文件复制到下一个阶段。 操作步骤如下: 1. 创建一个 Dockerfile 文件,例如: ``` FROM image1 AS builder1 # 在第一个阶段构建镜像 RUN ... FROM image2 AS builder2 # 在第二个阶段构建镜像 RUN ... FROM alpine # 在最终阶段构建镜像 COPY --from=builder1 /path/to/file /path/to/destination COPY --from=builder2 /path/to/file /path/to/destination ... ``` 在这个 Dockerfile 文件中,我们定义了三个构建阶段。第一个和第二个阶段分别构建不同的镜像,最终阶段则将之前阶段构建的文件复制到最终的镜像中。 在 `FROM` 指令中,我们使用了 `AS` 关键字来给每个阶段命名,这样我们就可以在后面的 `COPY` 指令中使用 `--from` 参数来指定要复制的文件来自哪个阶段。 2. 使用 `docker build` 命令构建新的镜像,例如: ``` docker build -t my_new_image . ``` 这个命令会使用当前目录下的 Dockerfile 文件构建新的镜像,并将其命名为 `my_new_image`。 现在,你可以使用新的镜像名称和标签启动新的容器,例如: ``` docker run --name my_new_container my_new_image ``` 需要注意的是,多阶段构建功能可以让你在同一个 Dockerfile 文件中定义多个构建阶段,并将之前阶段构建的文件复制到下一个阶段,这样可以减少镜像的大小,提高镜像的安全性和可维护性。建议使用多阶段构建功能来构建 Docker 镜像

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值