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
Docker 入门:Dockerfile的更多相关文章
- Docker入门-Dockerfile的使用
使用Dockerfile定制镜像 镜像的定制实际上就是定制每一层所添加的配置.文件.我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,这个脚本就是Dockerfile. Dockerfile ...
- docker入门-Dockerfile入门
1.dockerfile 构建基础命令 2. 构建镜像命令 Usage: docker image build [OPTIONS] PATH | URL | -Options:-t, --tag li ...
- (转)Docker入门——Dockerfile详解
转:https://www.cnblogs.com/sorex/p/6481407.html 基本示例 FROM MAINTAINER LABEL RUN ADD COPY CMD ENTRYPOIN ...
- Docker入门教程(三)Dockerfile
Docker入门教程(三)Dockerfile [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第三篇,介绍了Dockerfile的语法,DockerOn ...
- Docker入门之七Dockerfile
Dockerfile是一个文本格式的配置文本,可以使用它来创建自定义的镜像.首先我们可以先看一个dockerfile是什么样子.这里可以有一个网站不错:http://dockerfile.github ...
- Docker入门系列之三:如何将dockerfile制作好的镜像发布到Docker hub上
这个系列的前两篇文章,我们已经把我们的应用成功地在Docker里通过nginx运行了起来,并且用dockerfile里制作好了一个镜像. Docker入门系列之一:在一个Docker容器里运行指定的w ...
- Docker入门教程(六)另外的15个Docker命令
Docker入门教程(六)另外的15个Docker命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章 ...
- Docker入门教程(四)Docker Registry
Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...
- Docker入门教程(一)介绍
http://dockone.io/article/101 Docker入门教程(一)介绍 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第一篇,介绍了 ...
- Docker入门命令
Edit Docker入门命令 # 安装镜像sudo docker pull ubuntu:12.04# 镜像列表sudo docker images# 运行镜像sudo docker run -t ...
随机推荐
- 编程语言50年来的变化,我用50种编程语言告诉你“Hello world”怎么写!
当我们学习一门新的语言时,"Hello, World!"通常是我们所写的第一个程序. 因此,所有程序员在职业生涯中至少完成了"Hello, World!"程序员 ...
- jmeter的正则表达式编辑器
位置:在后置处理器里面,表示在请求结束或者返回响应结果时发挥作用. 作用:允许用户从服务器的响应中通过使用perl的正则表达式提取值.该元素会作用在指定范围取样器,用正则表达式提取所需值,生成模板字符 ...
- tomcat多个springboot项目启动失败
多个springboot项目打包成war包并放到tomcat下运行时出错了错误信息: Caused by: org.springframework.jmx.export.UnableToRegiste ...
- Word转pdf,再转图片插入PDF
WORD转PDF所需jar包: https://yangtaotao.lanzous.com/ice1jlc PDF转图片所需jar包: https://yangtaotao.lanzous.com/ ...
- node常用插件使用
1.nodemon 用于热更新,随时监控文件的变化 安装npm i -g nodemon 使用nodemon index.js 2.nvm nvm用于nodejs版本管理,我们在开发过程中,不同的项目 ...
- Java TCP案例网络聊天室
收获:1,加深了对多线程的一边一边的理解,可以将行为写成不同的类然后多线程 2,IO流的复习! 3,多线程中一边读取一边操作时容器最好(CopyOnWriteArrayList); 4,Tcp流程的熟 ...
- buuctf-pwn刷题-axb_2019_heap
版权声明:本文为CSDN博主「L.o.W」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/weixin_441 ...
- HTML学习——day1
HTML是一种用于创建网页的标准标记语 注意:对于中文网页需要使用<meta charset=''utf-8''>声明编码,否则会出现乱码. HTML标签 <标签>内容< ...
- RobotFramework Selenium2Library 关键字详解
*** Settings *** Library Selenium2Library *** Keywords *** Checkbox应该不被选择 [Arguments] ${locator} Che ...
- webpack使用babel
几个月没用webpack都忘了好多了. webpack构建前端,使用时除了entry/output,就是plugins和module.loaders,还有本地测试的devServer. npm ins ...