Dockerfile

vim dockerfile
#新建dockfile文件:内容如下

FROM centos
VOLUME ["/createFile1", "/createFile2"]
CMD echo "finish, --------success"
CMD /bin/bash
#执行dockfile文件
docker build -f dockfiel -t lalala/centos .

执行成功后使用docker images效果如下

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
lalala/centos       latest              5e9fa3c7b181        47 seconds ago      98.2MB

#run镜像
docker run -it --name centos-01 lalala/centos

#在镜像的根目录下使用ls可以看到
#createFile1 和 createFile2 文件夹
#进入createFile1
echo 'hello world' > a.txt

#退出当前容器

–volumes-from

新建两个容器

docker run -it --name centos-c01 --volumes-from centos-01 lalala/centos

docker run -it --name centos-c02 --volumes-from centos-01 lalal/centos

再次进入到createFile01 可以看到里a.txt的内容

可以使用docker inspect命令查看具体的卷使用情况

删除centos-01
docker rm -f centos-01

再次进入centos-c01, centos-c02 发现两个目录还在,数据共享也没问题

Dockerfile内容基础知识

  • 每条保留指令都必须为答谢字母,而且后面要跟随至少一个参数
  • 指令按照从上到下,顺序执行
  • #表示注释
  • 每条指令都会创建一个新的镜像层,并且对镜像进行提交
FROM        基础镜像,当前镜像是基于哪个镜像的  
MAINTAINER  镜像维护者的姓名邮箱地址  
RUN         容器构建时需要运行的命令  
EXPOSE      当前容器对外暴露的端口  
WORKDIR     指定在创建容器后,终端默认登陆的进来的工作目录  
ENV         设置环境变量 ENV MY_PATH /bin/bash
ADD         将宿主机目录下的文件拷贝到镜像并自动处理RUL和解压tar压缩包
COPY        类似于ADD,但不会解压
VOLUME      容器数据卷,用于数据保存和持久化工作
CMD         指定一个容器启动时要运行的命令,Dockerfile可以有多个CMD命令,只有最后一个生效,CMD会被docker run之后的参数替换
ENTRYPOINT  指定一个容器启动时要运行的命令,----emmm不太清楚,docker run 后面命令不会覆盖,是追加
ONBUILD     当构建一个被继承的Dockerfile时运行命令,父镜像在被子镜像继承后父镜像的onbuild被触发
FROM centos
MAINTAINER xk<2607780909@qq.com>
ENV MYPATH  /tmp
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80
CMD echo $MYPATH
CMD echo "success"
CMD /bin/bash

再次运行

docker build -f fileName -t createName .

tomcat的Dockerfile文件最后面有
CMD ["catalina.sh", "run"]

执行命令:
docker run -it -P tomcat ls -l

RUN 会被 后面的命令替换掉

ENTRYPOINT 追加命令

ONBUILD RUN echo '父镜像'
如果有子镜像继承这个镜像,则会运行这句命令

Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。例如:

FROM centos
RUN yum install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
以上执行会创建 3 层镜像。可简化为以下格式:
FROM centos
RUN yum install wget \
    && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
    && tar -xvf redis.tar.gz
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值