美文网首页
4. Dockerfile

4. Dockerfile

作者: 写代码的向日葵 | 来源:发表于2021-03-19 00:34 被阅读0次

    一. Dockerfile指令

    指令 描述 指令 描述
    FROM 构建的新镜像是基于哪个镜像 例如:FROM centos:6 COPY 拷贝文件或目录到镜像,用法同上 例如:COPY ./start.sh /start.sh
    MAINTAINER 镜像维护者姓名或邮箱地址 例如: MAINTAINER zhangsan ENTRYPOINT 运行容器时执行的Shell命令例如:ENTRYPOINT [“/bin/bash", “-c", “/start.sh"] ENTRYPOINT /bin/bash -c ‘/start.sh’
    CMD 运行容器时执行的Shell命令 例如:CMD [“-c”, “/start.sh”] CMD ["/usr/sbin/sshd", "-D"] CMD /usr/sbin/sshd –D USER 为RUN、CMD和ENTRYPOINT执行命令指定运行用户 USER <user>[:<group>] or USER <UID>[:<GID>] 例如:USER zhannggsan
    EXPOSE 声明容器运行的服务端口 例如:EXPOSE 80 443 WORKDIR 为RUN、CMD、ENTRYPOINT、COPY和ADD设置工作目录 例如:WORKDIR /data
    ENV 设置容器内环境变量例如:ENV MYSQL_ROOT_PASSWORD 123456 HEALTHCHECK 健康检查HEALTHCHECK --interval=5m --timeout=3s \ CMD curl -f http://localhost/ || exit 1
    ADD 拷贝文件或目录到镜像,如果是URL或压缩包会自动下载或自动解 压ADD <src>... <dest>ADD[“<src>”,...“<dest>”]ADD https://xxx.com/html.tar.gz /var/www/htmlADD html.tar.gz /var/www/html ARG 在构建镜像时指定一些参数 例如:FROM centos:6 ARG user # ARG user=root USER $user.qq.com描述# docker build --build-arg user=lizhenliang Dockerfile .
    • RUN、CMD和ENTRYPOINT指令区别
    1. RUN在building时运行,可以写多条
    2. CMD和ENTRYPOINT在运行container时运行,只能写一条,如果写多条,最后一条生效。
    3. CMD在run时可以被COMMAND覆盖,ENTRYPOINT不会被COMMAND覆盖,但可以指定—entrypoint覆盖。

    二. Build镜像命令

    使用Dockerfile文件构建镜像
    Usage: docker build [OPTIONS] PATH | URL | - Options:
    -t, --tag list # 镜像名称
    -f, --file string # 指定Dockerfile文件位置
    示例: docker docker docker docker docker docker docker
    build . # 默认找当前目录以Dockerfile为命名的文件 build -t shykes/myapp .
    build -t shykes/myapp -f /path/Dockerfile /path build -t shykes/myapp - < Dockerfile
    build -t shykes/myapp - < context.tar.gz
    build -t shykes/myapp http://www.example.com/Dockerfile
    build -f shykes/myapp http://www.example.com/contex.tar.gz
    

    三. 构建PHP网站环境镜像

    FROM centos:6 MAINTAINER lizhenliang
    RUN yum install -y httpd php php-gd php-mysql mysql mysql-server ENV MYSQL_ROOT_PASSWORD 123456
    RUN echo "<?php phpinfo()?>" > /var/www/html/index.php
    ADD start.sh /start.sh
    RUN chmod +x /start.sh
    ADD https://cn.wordpress.org/wordpress-4.7.4-zh_CN.tar.gz /var/www/html
    COPY wp-config.php /var/www/html/wordpress
    VOLUME ["/var/lib/mysql"]
    CMD /start.sh
    EXPOSE 80 3306
    构建PHP网站环境镜像
    

    四. 构建JAVA网站环境镜像

    FROM centos:6
    MAINTAINER lizhenliang
    构建JAVA网站环境镜像
    ADD jdk-8u45-linux-x64.tar.gz /usr/local
    ENV JAVA_HOME /usr/local/jdk1.8.0_45
    ADD http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.0.45/bin/apache-
    tomcat-8.0.45.tar.gz /usr/local
    WORKDIR /usr/local/apache-tomcat-8.0.45 ENTRYPOINT ["bin/catalina.sh", "run"]
    EXPOSE 8080
    

    五. 构建支持SSH服务的镜像

    FROM centos:6
    MAINTAINER lizhenliang
    ENV ROOT_PASSWORD 123456
    RUN yum install -y openssh-server
    RUN echo $ROOT_PASSWORD |passwd --stdin root
    RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
    CMD ["/usr/sbin/sshd", "-D"]
    EXPOSE 22
    

    相关文章

      网友评论

          本文标题:4. Dockerfile

          本文链接:https://www.haomeiwen.com/subject/lemmcltx.html