制作dockerfile文件使用的命令

dockerfile制作镜像步骤和手动制作一个样, 区别在于dockerfile中使用命令代替手动操作

# 描述性的信息
FROM centos:targe(或FROM centos@序列号)    ----> 指定基于哪个镜像

RUN cd
/data/xx && mkdir xx.file ----> run后执行bash相关命令, 例: RUN ["mysqld","--initialize-insecure","--user=mysql","...."] ---->执行非bash命令的写法
EXPOSE
22 ----> 用于暴露端口, 多个端口时写多行即可. EXPOSE 80 COPY 文件名 /目录名 ----> 拷贝dockerfile同级文件到镜像的指定目录, 如文件名处是个目录, 则会把该目录下所有文件都cp到指定目录
ADD file.tar.gz
/目录名 ----> 拷贝dkf同级文件到镜像目录, 并可自动解压.tar压缩的文件, 如果目录不存在其也会自动创建(add也可用于普通无压缩文件) ADD url /目录名 ----> 也能从网络下载文件放到指定目录, 但不会自动处理压缩文件
VOLUME [
"目录1", "目录2"] ----> 制作镜像时不执行, 生成容器时自动关联目录1和2, 不能用来关联宿主机和容器
WORKDIR
----> 镜像中的专用cd命令, 全局唯一, 跳到某个目录后就会一直在该目录, 常使用相对路径跳转, 不好用, 不如用run命令执行cd好使 ENV ---->用于在dockfile中i当以变量, a="目录" 调用语法: ${a}或$a
CMD [
"/usr/sbin/ssh","-D"] ----> 该命令在制作镜像的时候不会执行, 而是在使用镜像启动容器时才执行 例: CMD ["/bin/bash","bash脚本路径"]
ENTRYPOINT
----> 作用及用法同上面的cmd, 但是如果在起容器时, 命令后指定要执行的命令则会覆盖cmd的任务, 而使用entrypoint指定则不会被覆盖 如: docker run -d 容器id /bin/bash ----> 则/bin/bash任务会覆盖cmd的任务 注: entrypoint高级用法能用来传参数, 具体用法不详
# 使用dockerfile生成镜像 docker image build
-t "镜像名" dockerfile路径

 dockerfile文件格式架构:

# 描述性的信息
FROM xxxx

RUN xxxx

EXPOSE 22
EXPOSE 80

CMD ["/bin/bash", "脚本路径"]
原文地址:https://www.cnblogs.com/quzq/p/13472169.html