今天正好看到这一块了,记录一下,但愿能够帮助到你们。java
构建Dockerfilec++
先来看一个示例:redis
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------docker
#第一行必须基于某个镜像数据库
FROM java:8-jrecentos
#维护者信息
MAINTAINER dtelec developerapp
#镜像的操做指令ui
ADD ./target/icmes-schedule-service.jar /app/centos7
#容器启动时执行指令
CMD ["java", "-Xmx200m", "-jar", "/app/icmes-schedule-service.jar"]spa
#暴露出来对外的端口
EXPOSE 9800
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
格式:EXPOSE <port> [ <port> ...]
告诉Docker服务端暴露端口,在容器启动时须要经过 -p 作端口映射
格式:ENV <key> <value>
指定环境变量,会被RUN指令使用,并在容器运行时保存
格式:ADD <src> <dest>
复制指定的<src>到容器的<dest>中,<src>能够是Dockerfile所在的目录的一个相对路径;能够是URL,也能够是tar.gz(自动解压)
格式:COPY <src> <dest>
复制本地主机的 <src> ( 为 Dockerfile 所在目录的相对路径)到容器中的 <dest> (当使用本地目录为源目录时,推荐使用 COPY)
格式:ENTRYPOINT ["","",""]
配置容器启动后执行的命令,而且不可被 docker run 提供的参数覆盖。(每一个 Dockerfile 中只能有一个 ENTRYPOINT ,当指定多个时,只有最后一个起效)
格式:VOLUME ["/mnt"]
建立一个能够从本地主机或其余容器挂载的挂载点,通常用来存放数据库和须要保持的数据等
格式:USER daemon
指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。
格式:WORKDIR /path/to/workdir
为后续的 RUN 、 CMD 、 ENTRYPOINT 指令配置工做目录。(可使用多个 WORKDIR 指令,后续命令若是参数是相对路径, 则会基于以前命令指定的路径)
格式:ONBUILD [INSTRUCTION]
配置当所建立的镜像做为其它新建立镜像的基础镜像时,所执行的操做指令
例如构建本身的镜像:
编写dockerfile以下:
#基于centos7构建
FROM centos7
#维护者
MAINTAINER pray
#安装依赖 RUN yum -y install tar cpp binutiles glibc-kernheaders glibc-common glibc-devel gcc make gcc-c++ libstdc++-devel tcl
#建立安装目录RUN mkdir -p /redis/data && cd /redis#拷贝redis的安装包COPY ./redis-5.tar.gz /redis#解压RUN cd /redis && tar -xvf redis5.tar.gz && rm -rf redis5.tar.gz && cd redis5#编译、安装RUN cd /redis/redis5 && make && make install#复制配置文件到/redis中,而且修改iredis为后台运行RUN cp /redis/redis5/redis.conf /redis/ && echo "daemonize yes" >> redis.conf#设置数据挂载目录以及工做目录VOLUME /redis/dataWORKDIR /redis/data#容器启动后执行该命令ENTRYPOINT ["/user/local/bin/redis-server","/redis/redis.conf"]#设置对外的端口号 EXPOSE 6379构建命令docker build -t registry.cn-hangzhou.aliyuncs.com/for-docker/redis由于centos很大,因此我也没有执行玩dockerfile ,不能保证必定正确;今天就先记录到这把