Dockerfile编写记录

# Dockerfile 

近期帮朋友制作了Docker镜像以方便使用,在制作的过程中经历了兼容问题,镜像size臃肿,镜像内多服务问题,下面开始码实例。

FROM euleros

WORKDIR /opt

ADD opencv-4.1.0.tar.gz /opt

RUN rpm --rpmbuilddb && \
 yum install openssh-server make cmake nginx vlc -y && \
 mkdir -p /opt/opencv-4.1.0/build && \
 cd /opt/opencv-4.1.0/build && \
 cmake .. && \
 make && make install && \
 yum clean all && \
 rm -rf /var/cache/yum/*

COPY run.sh /opt/

EXPOSE 22 80 8080

EXTRYPOINT ["/opt/run.sh"]


上述文件讲解:

因为dockerfile中每一个指令都会在docker镜像中添加一层,它就像一个存储文件一样,这样看起来比较易于扩展,把每一层添上一个功能,最大到127层。

FROM euleros   # 该指令位于dokcerfile文件的首行, 是告诉我们是基于哪个镜像的基础上做的扩展。

WORKDIR /opt  # 该指令定义当前用户登录使用的工作目录位置,后续所有操作都在这个目录

ADD opencv-4.1.0.tar.gz /opt   #复制文件进入容器有2种COPY和ADD,copy比较清晰就是复制,add命令相对功能就多一些可以对压缩包进行解压缩的操作

RUN rpm --rpmbuilddb && \
 yum install openssh-server make cmake nginx vlc -y && \
 mkdir -p /opt/opencv-4.1.0/build && \
 cd /opt/opencv-4.1.0/build && \
 cmake .. && \
 make && make install && \
 yum clean all && \
 rm -rf /var/cache/yum/* 

# RUN 命令 ,每条操作命令都用"&&“与符号进行间隔,这样所有操作的都被封装到一层里头,这样我们的存储空间就相对会小一点

EXPOSE 22 80 8080 # 该命令,提示暴露给外部链接访问使用的端口,用以提示在配置的时候如果操作。

ENTRYPOINT ["/opt/run.sh"]  # 该命令,是容器启动运行的核心命令,指出了当前容器中运行的入口,当然它还有另一个命令CMD,但是推荐ENTRYPOINT,它可以通过docker run 命令在最后面加上相关参数,让容器内可以接收到。

# 关于run.sh脚本,里头编辑了nginx和ssh的启动命令.

#!/bin/bash
/usr/sbin/nginx
/usr/sbin/sshd -D

#注意,上述文件中最后一个指定需要不能运行中断,是一个不能结束的命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值