DockerFile命令以及demo

DockerFile打包运行命令

Dockerfile文件的标准命名就是“Dockerfile”,也不用后缀名,否则构建时找不到文件

docker build -t [镜像名称] [Dockerfile位置]

eg:

// 在当前目录下寻找Dockerfile文件并构建名为wkcto_jdk1.8.0_121的镜像
docker build -t wkcto_jdk1.8.0_121 .  

DockerFile组成部分

基础镜像信息

FROM

格式为 FROM <image> 或 FROM <image>:<tag>
Dockerfile 文件的第一条指令必须为 FROM 指令。并且,如果在同一个 Dockerfile 中创建多个镜像时,可以使用多个 FROM 指令(每个镜像一次)

维护者信息(可有可无)

MAINTAINER

格式为 MAINTAINER <name>,指定维护者信息;

镜像操作指令

ENV

格式为 ENV <key> <value> 指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持;

ADD

格式为 ADD <src> <dest>;
复制指定的<src>到容器中的<dest>;

EXPOSE

格式为 EXPOSE <port> [<port>…]
告诉 Docker 服务端容器暴露的端口号,供互联系统使用,在启动容器时需要通过 -p 映射端口,Docker 主机会自动分配一个端口转发到指定的端口;

RUN

格式为 RUN <command>
RUN 指令将在当前镜像基础上执行指定命令,并提交为新的镜像,当命令较长时可以使用 \ 来换行;

容器启动时执行命令

CMD

指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。
如果指定了多条命令,只有最后一条会被执行。
如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。

举例

自定义JDK镜像

// 基础镜像是centos:latest 
FROM centos:latest 
// 作者是wkcto
MAINTAINER wkcto
// 将当前目录下的jdk-8u121-linux-x64.tar.gz 上传到容器的/usr/local文件夹下
ADD jdk-8u121-linux-x64.tar.gz /usr/local 
// 设置JAVA_HOME环境变量为/usr/local/jdk1.8.0_121
ENV JAVA_HOME /usr/local/jdk1.8.0_121
// 设置CLASSPATH环境变量为$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
// 设置PATH环境变量为$PATH:$JAVA_HOME/bin
ENV PATH $PATH:$JAVA_HOME/bin
// 启动容器运行“java -version”指令
CMD java -version

自定义Tomcat镜像

FROM wkcto_jdk1.8.0_121 
MAINTAINER wkcto
ADD apache-tomcat-8.5.24.tar.gz /usr/local/
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.24
ENV PATH $PATH:$CATALINA_HOME/lib:$CATALINA_HOME/bin 
// 暴露出8080端口 
// ==启动镜像记得 -p映射物理机端口==
EXPOSE 8080
// 运行tomcat
CMD /usr/local/apache-tomcat-8.5.24/bin/catalina.sh run

自定义Mysql镜像

FROM centos:centos6 
MAINTAINER wkcto
// 运行某某命令
RUN yum install mysql-server mysql -y 
// && 表示命令拼接,and的意思;\表示命令太长换行
RUN /etc/init.d/mysqld start &&\
	// %设置所有外部ip可连并设置root账号具有全部权限
	mysql -e "grant all privileges on *.* to 'root'@'%' identified by '123456' WITH GRANT OPTION ;"&&\
	mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by '123456' WITH GRANT OPTION ;"&&\
	mysql -uroot -p123456 -e "show databases;" 
EXPOSE 3306
CMD /usr/bin/mysqld_safe

自定义redis镜像

FROM centos:latest 
MAINTAINER wkcto
RUN yum install epel-release -y &&\
	 yum install redis -y && yum install net-tools -y 
EXPOSE 6379
// –protected-mode no是关闭redis的保护模式
CMD /usr/bin/redis-server –protected-mode no
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值