zoukankan      html  css  js  c++  java
  • Docker 入门:Dockerfile

    主要内容:

    • 什么是 Dockerfile
    • 查看 DockerHub 中镜像的 Dockerfile
    • Dockerfile 编写
    • Dockerfile 常用命令

    什么是 Dockerfile

    使用 Docker 经常需要基于已经有的镜像去定制新的镜像,Dockerfile 可以保存这种镜像定制的过程。编写好 Dockerfile 后,可以重复使用这个文件在不同的机器上构建同样的镜像。

    查看 DockerHub 中镜像的 Dockerfile

    可以在 DockerHub 中的任意一个镜像页面点击标签,查看 Dockerfile 文件,比如点击 nginx 的 latest 标签,看到 nginx 的 Dockerfile:

    Dockerfile 编写

    接下来,我可以在官方的 nginx 镜像基础上做定制。 默认的 nginx 页面打开是这样的:

    我希望达到的效果是页面显示:

    I have changed the nginx page.

    首先准备好要替换的 index.html 页面:

    <html>
      <head><title>hello</title></header>
      <body>I have changed the nginx page.</body>
    </html>

    编写 Dockerfile:

    # 从 nginx 镜像开始编写
    FROM nginx:latest

    # 指定容器的默认工作目录
    WORKDIR /usr/share/nginx/html

    # 复制本地文件到 docker 中
    COPY index.html index.html

    在 index.html 和 Dockerfile 同级目录执行构建指令:

    docker image build -t nginx_custom:latest .

    接下来,通过 nginx_custom 这个名字标签运行容器, 访问 8000 端口就可以看到定制后的效果了。

    docker container run -p 8000:80 nginx_custom:latest

    Dockerfile 常用命令

    FROM

    必须写,表示从哪个基镜像开始构建。

    FROM untuntu
    # 从 0 开始
    FROM scratch

    WORKDIR

    工作目录

    WORKDIR /usr/share
    # 相当于运行 cd /usr/share

    COPY / ADD

    添加本地文件。一般使用 COPY

    COPY localfile /dest/file

    ENV

    添加环境变量。

    ENV <key> <value>
    ENV <key>=<value> ...
    

    EXPOSE

    开放端口。容器可以监听的端口。 EXPOSE 80/udp , 协议可以不填。注意和运行程序的 -p 区分。

    VOLUME

    数据卷。

    RUN

    要运行的指令,可以是 shell 格式,也可以是 exec 格式。

    RUN yum install wget
    RUN ["yum""install""wget"]

    CMD

    一个 Dockerfile 中只出现一次,容器开启时运行的命令。比如启动一个 python 程序: python run.py。 格式也支持 shell 和 exec 格式。

    CMD python run.py
  • 相关阅读:
    数据分析必须掌握的统计学知识!
    数据分析常用指标大全,熟记!
    Java编程基础阶段笔记 day 07 面向对象编程(上)
    Java编程基础阶段笔记 day04 Java基础语法(下)
    Java编程基础阶段笔记 day06 二维数组
    Java编程基础阶段笔记 day05 数组
    Java编程基础阶段笔记 day04 Java基础语法(下)
    Java编程基础阶段笔记 day03 Java基本语法(中)
    啥?虚拟现实技术已经应用到自动化仓库? | 基于unity实现的自动化仓库模拟监控系统
    交互设计书单--西南交大课程推荐
  • 原文地址:https://www.cnblogs.com/heniu/p/12984587.html
Copyright © 2011-2022 走看看