Dockerfile文件构建镜像及容器

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服务状态,客户机访问
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_50344807/article/details/114642403