docker教程(2)--Dockerfile

使用Dockerfile创建容器

  1. 创建目录:mkdir dockerfile_test && cd dockerfile_test

  2. 创建文件:vim index.html, 文件内容:

<html>
	<h1>Hello Dockerfile!</h1>
</html>	
  1. 创建Dockerfile文件: vim Dockerfile, 文件内容:
FROM UBUNTU
MAINTAINER wikid
RUN apt-get update
RUN apt-get install -y nginx
COPY index.html /var/www/html
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]
EXPOSE 80
  1. 根据Dockerfile创建容器:docker build -t wikid/hello_dockfile .

  2. 执行docker images,即可看到 wikid/hello_dockfile 这个容器

  3. 运行查看 docker容器:docker run -p 8080:80 -d wikid/hello_dockfile,打开浏览器访问localhost:8080,页面输出: Hello Dockerfile!

镜像分层

dockerfile的每一行都会产生一个新的层

Dockerfile 语法简介

语法DEMO用途
FROMFROM  scratchbase image,其中sratch是官方提供的一个最小化且干净的镜像。尽量使用官方的image作为base image,主要是为了安全。 默认是拉取最新的镜像最新的版本,也可以指定版本,如 FROM ubuntu:14.04
LABELLABEL  maintainer="auth@gmail.com"该镜像的描述说明信息,比如该镜像的维护者,当前版本号等metadata信息,类似于代码注释
RUNyum update && yum install vim执行命令,且每运行一次命令都会生成新的一层,所以为了避免无用分层,建议合并多条命令成一行。还有在书写方式上,为了美观,建议将负责的 RUN 赢反斜线换行。
CMDCMD echo “hello world!”设置容器启动后默认执行的命令和参数
ENTRYPINTENTRYPINT echo “hello world!”设置容器启动时运行的命令
WORKDIRAWORKDIR /root用来设置当前的工作目录,如果没有会自动创建目录,并进入该目录。尽量使用 WORDDIR,不要使用 RUN cd(创建新层);尽量使用绝对目录(清晰明了)。
ADDADD test.tar.gz /将本地文件添加到容器中。ADD 可以在添加文件的同时,对文件进行解压缩,而 COPY 不行,可以结合 WORKDIR 一起使用。
COPYCOPY hello /拷贝文件。大部分情况优先使用 COPY。如果是远程文件可使用 curl 和 wget
ENVENV NODE_ENV production指定环境变量,后续命令引用:yarn start:"$NODE_ENV",尽量使用 ENV,维护性好
EXPOSEEXPOSE 8080暴露端口
USER指定用户
VOLUME指定挂载点
RUN、CMD、ENTRYPOINT 对比
  1. 调用格式
// shell 格式
RUN apt-get install -y vim
CMD echo "hello docker"
ENTRYPOINT echo "hello docker"

// Exec 格式
RUN ["apt-get", "install", "-y", "vim"]
CMD ["/bin/echo", "hello docker"]
ENTRYPOINT ["/bin/echo", "hello docker"]
  1. CMD 命令
    (1)容器启动时默认执行的命令
    (2)如果docker run 指定了其他命令,CMD命令被忽略
    (3)如果定义了多个CMD,只有最后一个命令会输出
    在这里插入图片描述
  2. ENTRYPOINT
    (1)让容器以应用程序或者服务的形式运行(后台进程,如数据库等)
    (2)不会被忽略,一定会执行
    (3)最佳实践:写一个 shell 脚本作为 entrypoint
COPY dokcer-entrypoint.sh /usr/local/bin
ENTRYPOINT ["docker-entrypoint.sh"]

EXPOSE 27017
CMD ["mongod"]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值