Docker容器-镜像构建:Dockerfile

Dockerfile知识点
  • FORM
    基础镜像信息
  • MAINTAINER
    维护者信息
  • RUN
    运行指定的命令
  • COPY
    复制文本或文件
  • ADD
    复制文件,会自动解压
  • WORKDIR
    进入指定目录,等同:cd
  • ENV
    设置环境变量
  • VOLUME
    目录挂载
  • EXPOSE
    开放端口
  • CMD
    容器启动命令,进程要一直运行下去
样例:自动构建nginx镜像
  • 创建目录
    构建的文件名称必须为:Dockerfile

    [root@docker /]# mkdir /opt/docker-file/nginx -p
    [root@docker /]# touch Dockerfile
    [root@docker /]# cd /opt/docker-file/nginx/
    [root@docker nginx]#  touch Dockerfile
    [root@docker nginx]# ll
    total 0
    -rw-r--r-- 1 root root 0 Dec  7 16:30 Dockerfile
    
  • 编辑Dockerfile文件

    #This is auto build nginx
    #Version 1.0
    #Author silly
    
    #Base image
    FROM centos
    
    #Maintainer
    MAINTAINER silly
    
    #copy file
    ADD  nginx-1.14.2.tar.gz /usr/local/src
    ADD  pcre-8.00.tar.gz /usr/local/src
    
    #install software
    RUN yum install  -y wget gcc gcc-c++ make openssl-devel
    
    #create user www
    RUN useradd -s /sbin/nologin -M www
    
    #cd /usr/local/src/nginx-1.14.2
    WORKDIR /usr/local/src/nginx-1.14.2
    
    #configure nginx
    RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-	http_stub_status_module --with-pcre=/usr/local/src/pcre-8.00 && make && make install
    
    #modify nginx to run in the foreground
    RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
    
    #open port 80
    EXPOSE 80
    
    #set env
    ENV PATH /usr/local/nginx/sbin:$PATH
    
    #cmd nginx 
    CMD ["nginx"]
    
  • 自动构建Dockerfile

    docker build -t nginx-file:v1 /opt/docker-file/nginx/
    
    [root@docker nginx]# docker images  
    REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
    nginx-file              v1                  0e364c53448b        9 minutes ago       445 MB
    

    构建过程

    [root@docker nginx]# docker build -t nginx-file:v1 /opt/docker-file/nginx/
    Sending build context to Docker daemon 2.245 MB
    Step 1/12 : FROM centos
    ---> 0f3e07c0138f
    Step 2/12 : MAINTAINER silly
    ---> Running in 5d731cf47f02
    ---> 329faae63e7d
    Removing intermediate container 5d731cf47f02
    Step 3/12 : ADD nginx-1.14.2.tar.gz /usr/local/src
    ---> c2cf67c12a7c
    Removing intermediate container 5ff0a558e41b
    Step 4/12 : ADD pcre-8.00.tar.gz /usr/local/src
     ---> a55e0c559803
    Removing intermediate container a3df78a4ee47
    Step 5/12 : RUN yum install  -y wget gcc gcc-c++ make openssl-devel
     ---> Running in d203097b040e
    Complete!
     ---> dbb03ea989ca
    Removing intermediate container d203097b040e
    Step 6/12 : RUN useradd -s /sbin/nologin -M www
     ---> Running in fb2ccb66c2a5
     ---> f0a8d2c3058c
    Removing intermediate container fb2ccb66c2a5
    Step 7/12 : WORKDIR /usr/local/src/nginx-1.14.2
    ---> 6dc2f053b8fd
    Removing intermediate container 9a097287c85e
    Step 8/12 : RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-	http_stub_status_module --with-pcre=/usr/local/src/pcre-8.00 && make && make install
     ---> Running in 41b1a6453ffe
    ---> 61e9e0dbb033
    Removing intermediate container 41b1a6453ffe
    Step 9/12 : RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
    ---> Running in 8eb0be4aa318
    ---> 7b84bdee1125
    Removing intermediate container 8eb0be4aa318
    Step 10/12 : EXPOSE 80
    ---> Running in bc097c4e0bd3
    ---> ebff832d8667
    Removing intermediate container bc097c4e0bd3
    Step 11/12 : ENV PATH /usr/local/nginx/sbin:$PATH
     ---> Running in e467d807f858
     ---> 3596260b710a
    Removing intermediate container e467d807f858
    Step 12/12 : CMD nginx
     ---> Running in af5f7d157ba9
     ---> 0e364c53448b
    Removing intermediate container af5f7d157ba9
    Successfully built 0e364c53448b
    
  • 运行自动构建的nginx容器

    [root@docker nginx]# docker run -d -p 10009:80 nginx-file:v1
    [root@docker nginx]# docker ps 
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   	NAMES
    ffe0433055ee        nginx-file:v1       "nginx"                  7 minutes ago       Up 7 minutes        0.0.0.0:10009->80/tcp   amazing_meninsky
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值