Dockerfile创建镜像 – Dockerfile格式,对应的参数

  1. FROM //指定基于哪个基础镜像
    格式 FROM 或者 FROM :, 比如
    FROM centos
    FROM centos:latest
    1. MAINTAINER //指定作者信息
      格式 MAINTAIN ,比如
      MAINTAINER aming aming@aminglinux.com
    2. RUN //镜像操作指令
      格式为 RUN 或者 RUN [“executable”, “param1”, “param2”],比如
      RUN yum install httpd
      RUN [“/bin/bash”, “-c”, “echo hello”]
  2. CMD // 三种格式:
    CMD [“executable”, “param1”, “param2”]
    CMD command param1 param2
    CMD [“param1”, “param2”]
    RUN和CMD看起来挺像,但是CMD用来指定容器启动时用到的命令,只能有一条。比如
    CMD [“/bin/bash”, “/usr/local/nginx/sbin/nginx”, “-c”, “/usr/local/nginx/conf/nginx.conf”]
    1. EXPOSE
      格式为 EXPOSE […] , 比如
      EXPOSE 22 80 8443
      这个用来指定要映射出去的端口,比如容器内部我们启动了sshd和nginx,所以我们需要把22和80端口暴漏出去。这个需要配合-P(大写)来工作,也就是说在启动容器时,需要加上-P,让它自动分配。如果想指定具体的端口,也可以使用-p(小写)来指定。
    2. ENV
      格式 ENV , 比如
      ENV PATH /usr/local/mysql/bin:$PATH
      它主要是为后续的RUN指令提供一个环境变量,我们也可以定义一些自定义的变量
      ENV MYSQL_version 5.6
    3. ADD 格式 add
      将本地的一个文件或目录拷贝到容器的某个目录里。 其中src为Dockerfile所在目录的相对路径,它也可以是一个url。比如
      ADD

Dockerfile创建镜像 – Dockerfile示例(安装nginx)

mkdir /root/docker && cd /root/docker

在当地路径创建一个测试文件:
[root@es1 docker]# vim index.html

<h1>This docker test page!</h1>

vim Dockerfile (Dockerfile文件名为官方指定,不可更改名字)

FROM centos

#维护者信息
MAINTAINER liaochao liaochao@i31.com

#相关的操作

RUN rpm -ivh https://mirrors.aliyun.com/centos/7.5.1804/extras/x86_64/Packages/epel-release-7-9.noarch.rpm
RUN yum install nginx -y

##添加文件,默认跟dockerfile同级目录
ADD index.html /usr/share/nginx/html/index.html

#修改参数
RUN echo "daemon off;" >> /etc/nginx/nginx.conf

#设置开放端口
EXPOSE 80
#执行命令
CMD ["nginx"]

此时我们写完了开始进行bulid

 docker build -t chao/nginx:v1 /root/docker/

耐心等待运行完成,

[root@es1 docker]# docker images
REPOSITORY                                      TAG                 IMAGE ID            CREATED              SIZE
chao/nginx                                      v1                  664da2f4b97d        About a minute ago   417MB

我们创建一个容器进行测试

[root@es1 docker]# docker run -itd --rm --name test chao/nginx:v1
4a91a0081fdae992cba2279573c86ac7d01f895d4240f3c2ff4cb16d7db4c92c
[root@es1 docker]# curl 172.17.0.2
<h1>This docker test page!</h1>

此时可以看见我们定义的测试文件正常打印出来。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐