这次不鸽了,五一假期冰河为你整理了这些Dockerfile基础知识,拿走不谢!!

简介: 早之前,不少小伙伴让我整理下Dockerfile相关的基础知识,由于平时工作很忙,业余时间也被安排的满满的。所以,这些事情搁置了很久。所以,这次,趁着五一假期,不鸽了,安排。。。

Dockerfile常用命令

  • FROM: 继承基础镜像
  • MAINTAINER:镜像制作作者信息
  • RUN: 用来执行shell命令
  • EXPOSE: 暴露端口号
  • CMD: 启动容器默认执行的命令,会被覆盖
  • ENTRYPOINT: 启动容器真正执行的命令,不会被覆盖
  • VOLUME:创建该挂载点
  • ENV: 配置环境变量
  • ADD: 复制文件到容器,一般拷贝文件,压缩包自动解压
  • COPY:复制文件到容器,一般可拷贝目录
  • WORKDIR:设置容器的工作目录
  • USER:容器使用的用户

接下来,列举几个Dockerfile的实例。

Dockerfile实例

1.使用RUN创建一个用户

Dockerfile文件内容如下所示。

FROM centos:6
MAINTAINER binghe
RUN useradd binghe

执行构建,如下所示。

docker build -t centos:user .

2.使用ENV定义环境变量并用CMD执行命令

Dockerfile文件内容如下所示。

FROM centos:6
MAINTAINER binghe
RUN useradd binghe
RUN mkdir binghe
ENV envir=test version=1.0
CMD echo "envir:$envir version:$version"

执行构建并启动测试:

#执行构建
docker build -t centos:evn-cmd .
#启动镜像验证EVN和CMD
docker run centos:env-cmd

3.使用ADD添加一个压缩包,使用WORKDIR改变工作目录

FROM nginx
MAINTAINER binghe
ADD ./index.tar.gz /usr/share/nginx/html/
WORKDIR /usr/share/nginx/html

4.使用COPY拷贝目录

使用COPY拷贝指定目录下的所有文件到容器,不包括本级目录。此时只会拷贝webroot下的所有文件,不会将webroot拷贝过去:

FROM nginx
MAINTAINER binghe
ADD ./index.tar.gz /usr/share/nginx/html/
WORKDIR /usr/share/nginx/html
COPY webroot/ .

5.设置启动容器的用户

设置启动容器的用户,在生产环境中一般不建议使用root用户启动容器,所以,可以根据公司业务场景自定义启动容器的用户:

FROM centos:6
MAINTAINER binghe
ADD ./index.tar.gz /usr/share/nginx/html/
WORKDIR /usr/share/nginx/html
COPY webroot/ .
RUN useradd -m tomcat -u 1001
USER 1001

6.使用VOLUME创建容器可挂载点

FROM centos:6
MAINTAINER binghe
VOLUME /data

挂载目录到/data,注意:对于宿主机路径,要写绝对路径:

docker run -ti --rm -v `pwd` /web:/data centos:volume bash
相关文章
|
Web App开发 大数据
吐血整理50个吊炸天的超实用网站
吐血整理50个吊炸天的超实用网站
|
弹性计算 Java C++
使用感想
阿里云使用感想
|
区块链
【总结】大学四年来,用过的一些网站整理(下)
简介:【总结】大学四年来,用过的一些网站整理(下)
【总结】大学四年来,用过的一些网站整理(下)
【总结】大学四年来,用过的一些网站整理(中)
简介:【总结】大学四年来,用过的一些网站整理(中)
【总结】大学四年来,用过的一些网站整理(中)
|
Java 计算机视觉 Spring
【总结】大学四年来,用过的一些网站整理(上)
简介:1、电脑在大学四年生涯中,刷机一次,由于第一次刷机,备份没有很完全,丢掉了一些用的次数比较少的网站。 2、序号并非排名 3、本文不是任何平台或软件的广告!!!
【总结】大学四年来,用过的一些网站整理(上)
|
存储 Java 开发工具
我肝了一个月,给你写出了这本Java开发手册。(二)
先来看一下本篇文章的思维导图吧,我会围绕下面这些内容进行讲解。内容很干,小伙伴们看完还希望不吝转发。(高清思维导图版本关注作者公众号 Java建设者 回复 Java666 获取,其他思维导图获取方式在文末)。
我肝了一个月,给你写出了这本Java开发手册。(二)
|
Java 编译器 Linux
我肝了一个月,给你写出了这本Java开发手册。(一)
先来看一下本篇文章的思维导图吧,我会围绕下面这些内容进行讲解。内容很干,小伙伴们看完还希望不吝转发。(高清思维导图版本关注作者公众号 Java建设者 回复 Java666 获取,其他思维导图获取方式在文末)。
我肝了一个月,给你写出了这本Java开发手册。(一)
|
存储 缓存 安全
我肝了一个月,给你写出了这本Java开发手册。(五)
先来看一下本篇文章的思维导图吧,我会围绕下面这些内容进行讲解。内容很干,小伙伴们看完还希望不吝转发。(高清思维导图版本关注作者公众号 Java建设者 回复 Java666 获取,其他思维导图获取方式在文末)。
我肝了一个月,给你写出了这本Java开发手册。(五)
|
安全 Java 程序员
我肝了一个月,给你写出了这本Java开发手册。(三)
先来看一下本篇文章的思维导图吧,我会围绕下面这些内容进行讲解。内容很干,小伙伴们看完还希望不吝转发。(高清思维导图版本关注作者公众号 Java建设者 回复 Java666 获取,其他思维导图获取方式在文末)。
我肝了一个月,给你写出了这本Java开发手册。(三)
|
Java 编译器 数据安全/隐私保护
我肝了一个月,给你写出了这本Java开发手册。(四)
先来看一下本篇文章的思维导图吧,我会围绕下面这些内容进行讲解。内容很干,小伙伴们看完还希望不吝转发。(高清思维导图版本关注作者公众号 Java建设者 回复 Java666 获取,其他思维导图获取方式在文末)。
我肝了一个月,给你写出了这本Java开发手册。(四)