这里写目录标题
Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。
Dockerfile文件的指令含义
构建nginx镜像
先创建目录,存放Dockerfile文件
mkdir nginx
cd nginx/
vi Dockerfile
编写文件Dockerfile文件
FROM centos:7
MAINTAINER this is nginx
RUN yum -y update
RUN yum -y install gcc gcc-c++ make pcre-devel zlib-devel
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.2.tar.gz /usr/local/src
WORKDIR /usr/local/src/nginx-1.12.2
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
FROM centos:7
MAINTAINER zf
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make #安装依赖包
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.2.tar.gz /usr/local/src #添加并解压安装包
WORKDIR /usr/local/src/nginx-1.12.2 #进入目录编译安装
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH #设置环境变量
EXPOSE 80 #暴露端口 http服务
EXPOSE 443 #https加密服务端口
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf #关闭系统守护进程,需要容器的进程启动服务,否则会冲突
ADD run.sh /run.sh #添加启动脚本
RUN chmod 755 /run.sh
CMD ["/run.sh"] #启动容器时,开启服务
创建启动脚本run.sh,放在同一目录下
cd nginx/
vi run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx
[root@docker nginx]# ls
Dockerfile nginx-1.12.2.tar.gz run.sh
创建镜像,运行容器,查看容器状态,随机指定端口为
[root@docker nginx]# docker build -t nginx:new2 .
[root@docker nginx]# docker run -d -P nginx:new2
[root@docker nginx]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5351b83ecb7e nginx:new2 "/run.sh" About an hour ago Up About an hour 0.0.0.0:49166->80/tcp, 0.0.0.0:49165->443/tcp frosty_hofstadter
测试容器nginx服务状态,客户机访问