编写Dockerfile

Dockerfile可以分为四个部分

  • 基础镜像信息
  • 维护者信息
  • 镜像操作指令
  • 容器启动时执行的指令

制作nginx镜像举例:

[root@docker ~]# mkdir -p /opt/docker-files/nginx/
[root@docker ~]# cd !$
cd /opt/docker-files/nginx/
[root@docker nginx]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre2-10.30.tar.gz
[root@docker nginx]# wget http://nginx.org/download/nginx-1.12.1.tar.gz
[root@docker nginx]# vim Dockerfile
# This is my first Dockerfile
# Version 1.0
# Author: zhaot

# base images
FROM centos:7.2.1511

# MAINTAINER
MAINTAINER zhaot

# COMMAND
ADD pcre2-10.30.tar.gz /usr/local/src
ADD nginx-1.12.1.tar.gz /usr/local/src

RUN yum install -y gcc gcc-c++ make openssl-devel
RUN useradd -s /bin/nologin -M www

WORKDIR /usr/local/src/nginx-1.12.1
RUN ./configure --user=www --group=www --with-http_ssl_module --with-pcre=/usr/local/src/pcre2-10.30 && make && make install
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf

ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80

CMD ["nginx"]
[root@docker nginx]# docker build -t nginx-test:v1 .
  1. COPY和ADD的区别
 - COPY
仅进行复制操作

 - ADD
如果是压缩文件,复制完之后自动解压;
可ADD链接
  1. ENTRYPOINT和CMD的区别
 - ENTRYPOINT
An ENTRYPOINT allows you to configure a container that will run as an executable.
用法:
ENTRYPOINT ["/bin/echo"] 
那么docker build出来的镜像以后的容器功能就像一个/bin/echo程序,那么我可以这样用它docker run -it entrypoint “this is a test”
多条ENTRYPOINT只会执行最后一条
ENTRYPOINT设为[“/bin/sh -c”]时候运行的情况
[root@docker ~]# docker run -it entrypoint /bin/bash 
root@4c8549e7ce3e:/# ps 
PID TTY TIME CMD 
1 ? 00:00:00  sh 
19 ? 00:00:00  ps


 - CMD
The main purpose of a CMD is to provide defaults for an executing container.
用法:
CMD ["/bin/echo", "this is a echo test"] 
docker run之后会直接输出:this is a echo test,类似于开机启动
但是如果docker run -it -d cmd /bin/bash,则会覆盖/bin/echo
  1. ONBUILD的用法
 - ONBUILD
ONBUILD ADD . /app
ONBUILD RUN chown -R nginx:nginx /app
在当前Dockerfile不生效,在FROM此镜像的下个镜像中生效
  1. VOLUME的用法
 - VOLUME
VOLUME ["/var/lib/mysql"]
将容器的/var/lib/mysql目录和宿主机进行映射,容器被删除,此目录不会消失
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值