Dockerfile

Dockerfile 基础.

Posted by Rootclay on 2017-03-08

build context,一个自定义的文件夹,里面放置Dockerfile和一些需要的文件。比如:

Dockerfile…这个是必须的
sources.list…自己在官方社区找的ubuntu的源

1
2
3
4
5
.
├── baseimage
│ ├── Dockerfile
│ ├── README.md
│ ├── sources.list

制作image有两种方法:


从现有容器通过commit命令创建

  1. dockerfile中不方便的操作可以在容器中操作然后提交

  2. 没有批量启动容器的需要

  3. 自己学、习练习,不需要移植

利用Dockerfile构建

  1. 方便,灵活,可移植

  2. 适合部署大量的镜像和容器



Dockerfile基础

  1. '#'表示注释,一般Dockerfile第一行注释容器的基本信息和版本。
  2. Dockerfile以命令:参数为基本构建语句,命令全部大写,后面的参数视命令而定
  3. FROM,必须是第一个命令项,表示我的镜像是以哪个镜像为基础构建的
  4. LABEL,用键值对的方式来指定image的元数据
  5. ADD,在构建时向Docker daemon传递文件ADD sources.list /etc/apt/
  6. RUN,接操作和命令sudo apt-get install -y vim等
  7. CMD,构建成功的镜像第一次启动时默认启动的命令,CMD只有1条,一般默认在Dockerfile的最后,如果有多个CMD,只有最后一个起作用,CMD会被docker run …后面的命令覆盖
    CMD ["/bin/bash"]
  8. ENV,设置环境变量ENV REFRESHED_AT 2015-05-18
  9. 构建Dockerfile中常使用的镜像:mysql:5.6 , php:apache , php:5.6-apache
  10. 关于php的扩展安装官方解决方法:RUN docker-php-ext-install pdo_mysql(mysqli)



构建命令

  1. cd baseimage(构建上下文文件夹)
  2. docker build -t="program/ubuntu:base_image" .
  3. docker build-t表示容器的名字
  4. program/ubuntuprogram表示仓库名(不允许大写),ubuntu表示镜像名。
  5. ubuntu:base_image后的base_image```是标签,如果没有指定,默认的是latest`



总结

docker build -t="duohuostudio/ubuntu:base_image" .
这条命令的最后一个参数是用来指定Dockerfile的路径,千万不要忘记。