dockerfile 能帮我们把制作镜像的过程给保留下来 一、先创建nginx dockerfile目录 mkdir -pv /docker/nginx 二、一键安装nginx脚本 cd /docker/nginx 2.1、准备好nginx安装脚本 vim nginx_install.sh +++++++++++++++++++++++++ nginx_install.sh +++++++++++++++++++++++ #!/bin/bash yum install wget gcc gcc-c++ vim net-tools pcre pcre-devel openssl openssl-devel -y useradd -s /sbin/nologin nginx cd /opt wget http://www.xchinagroup.top/softdown/centos7/02_nginx/nginx-1.15.9.tar.gz tar zxf nginx-1.15.9.tar.gz cd nginx-1.15.9/ ./configure --with-http_ssl_module --with-http_stub_status_module --with-stream --prefix=/usr/local/nginx/ make make install ++++++++++++++++++++++++++++++++++++++++++++++ 2.2、准备一个yum源文件(国内用163的yum源会更快一些) 在/docker/nginx/ 这个目录下面 vim CentOS-Base.repo [base] name=CentOS-$releasever - Base baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #released updates [updates] name=CentOS-$releasever - Updates baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2.3、创建dockerfile 文件:在/docker/nginx/ 这个目录下面 vim /docker/nginx/Dockerfile FROM centos7 MAINTAINER xc 331758730@qq.com COPY nginx_install.sh /tmp/nginx_install.sh COPY CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo RUN sh /tmp/nginx_install.sh RUN sed -i -e '/worker_processes/a daemon off;' /usr/local/nginx/conf/nginx.conf; \rm -rf /opt/nginx* ####: /usr/local/nginx/sbin/nginx #默认是放在后台运行 由于docker里面的容器必须有一个永久执行的程序,所以需要放在前台执行 在配置文件里面加入一行 daemon off; sed -i -e '/work_processes/a daemon off;' /usr/local/nginx/conf/nginx.conf +++++++++++++++++++++++++++++++++++++++++++2.4、Dockerfile的注意事项 ++++++++++++++++++++++++++++++++++++ Dockerfile: 它是Docker镜像的描述文件,可以理解成火箭发射的A、B、C…的步骤。 Docker镜像: 通过Dockerfile做出来的,包含操作系统基础文件和软件运行环境,它使用分层的存储方式。 容器: 是运行起来的镜像,简单理解,Docker镜像相当于程序,容器相当于进程。 Dockerfile命名必须为“Dockerfile”,Docker镜像构建时,会查找指定目录中的Dockerfile。 +++++++++++++++++++++++++++++++++++++++++++++++++++ FROM #代表自定义的镜像基于那个源镜像(centos7) FROM 功能为指定基础镜像,并且必须是第一条指令。 MAINTAINER #代表维护者信息 COPY #把宿主系统的文件拷贝到镜像里面, COPY <src>... <dest> COPY的<src>只能是本地文件 RUN #在镜像里面运行的命令 多行命令不要写多个RUN,原因是Dockerfile中每一个指令都会建立一层. 多少个RUN就构建了多少层镜像,会造成镜像的臃肿、多层,不仅仅增加了构件部署的时间,还容易出错。RUN书写时的换行符是 \ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 三、使用dockerfile构建nginx镜像 cd /docker/nginx docker build -t dfsc_nginx .
+++++++++++++++++++++++++++++++++++++++++++++++++++++++ 注意最后有个点,代表使用当前路径的 Dockerfile 进行构建 docker build: 用 Dockerfile 构建镜像的命令关键词。 [OPTIONS] : 命令选项,常用的指令包括 -t 指定镜像的名字, -t dfsc_nginx 给新构建的镜像取名为 dfsc_nginx -f 显示指定构建镜像的 Dockerfile 文件(Dockerfile 可不在当前路径下),如果不使用 -f,则默认当前路径下的名为 Dockerfile 的文件认为是构建镜像的 "Dockerfile" 。 ++++++++++++++++++++++++++++++++++++++++++++++++++++
四、测试创建的nginx镜像是否正常 由于我们配置的nginx是前台永久运行的,可直接启动nginx进行测试 docker run -d dfsc_nginx /bin/bash -c '/usr/local/nginx/sbin/nginx'
进入到dfsc_nginx 的/bin/bash
![]()
++++++++++++++++++++++++++ END +++++++++++++++++++++