ijava学习网> 知识分享> Linux> 构建Docker镜像:nginx

构建Docker镜像:nginx

时间: 2019-01-11 18:02:10 标签docker , dockerfile , nginx

Dockerfile介绍

Dockerfile是由一组指令组成的文件,每条指令对应linux中一条命令,Docker程序将读取Dockerfile中的指令生成指定镜像。
Dockerfile大致结构:基础镜像信息、维护者信息、镜像操作指令、容器启动时执行指令。每行支持一条指令,每条指令可以携带多个参数,支持以 # 开头的注释。
Dockerfile操作指令:

FROM 镜像 : 指定新的镜像所基于的镜像
MAINTAINER 名字 :说明新镜像的维护人
RUN 命令 : 在所基于的镜像上执行命令,并提交到新的镜像中
CMD ["要运行的程序","参数1","参数2"] : 指定启动容器时要运行的命令或脚本
EXPOSE端口号 : 指定新镜像加载到Docker时要开启的端口
ENV环境变量 变量值 : 设置一个环境变量的值,会背后面的RUN用到
ADD源文件/目录 目标文件/目录 :将源文件复制到目标文件 ,源文件和Dockerfile位于同一目录
COPY源文件/目录 目标文件/目录 :将本地主机的源文件复制到目标目录,源文件和Dockerfile位于同一目录
VOLUME["目录"] : 在容器中创建一个挂载点
USER 用户名 /UID :指定运行容器时的用户
WORKDIR路径 : 为后续的RUN 、CMD、ENTRYPOINT 指定工作目录
ONBUILD命令 : 指定所生成的镜像作为一个基础镜像时所要运行的命令。

构建Nginx镜像
1.创建工作目录

[root@test3 ~]# docker pull centos    //下载基础镜像
[root@test3 ~]# mkdir nginx
[root@test3 ~]# cd nginx/

创建Dockerfile文件

[root@test3 ningx]#  vim Dockerfile
# 设置基础镜像
FROM centos
# 维护该镜像的用户
MAINTAINER this is nginx image 
# 安装环境 下载软件包 并解压
RUN yum install -y wget proc-devel net-tools gcc zlib zlib-devel make openssl-devel
RUN wget https://nginx.org/download/nginx-1.14.0.tar.gz
RUN tar xvf nginx-1.14.0.tar.gz
# 工作目录 编译安装
WORKDIR nginx-1.14.0
RUN ./configure --prefix=/usr/local/nginx && make && make install
# 开启 80 和443端口
EXPOSE 80
EXPOSE 443
# 修改配置文件,以非 deamon方式启动
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
# 复制服务脚本并设置权限
WORKDIR /root/nginx
ADD run.sh /run.sh
RUN chmod 755 /run.sh
# 启动容器时执行脚本
CMD ["/run.sh"]

执行脚本

[root@test3 ningx]# vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx

生成镜像

[root@test3 ningx]# docker build -t nginx:new .
······
Step 13/14 : RUN chmod 755 /run.sh
 ---> Running in ad6e4604aede

 ---> 979f95edc03b
Removing intermediate container ad6e4604aede
Step 14/14 : CMD /run.sh
 ---> Running in 8f1209324969
 ---> a0bdb7bb13ad
Removing intermediate container 8f1209324969
[root@test3 ningx]# docker run -d -P nginx:new
f2855c4f4732435cfa3a8c9e17af8540c874577228f8276013260b2d9474e50b
[root@test3 ningx]#  docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                           NAMES
f2855c4f4732        nginx:new           "/run.sh"           6 seconds ago       Up 4 seconds        0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp   clever_gates

测试
构建Docker镜像:nginx
注:把镜像保存到本地

[root@test3 ~]# docker save -o centos_nginx.tar  nginx:new

centos_nginx.tar 为保存到本地后的包名
nginx:new 为被打包的对象镜像

如果在一台新机器还原docker镜像

[root@test2 ~]# docker load --input centos_nginx.tar
······
Loaded image: nginx:new

版权说明| 关于ijava| 合作伙伴| 联系我们| 网站地图| 招贤纳士

Copyright © 2017 www.ijava.com All Rights Reserved 版权所有•ijava学习网 京ICP备14061482号-18         官方QQ:3325669927

ijava学习网提供免费java教程和大量java面试题库,给高级会员提供免费的java培训,同时提共一些java开发项目和java下载,java工程师,java菜鸟们快来哦。记住我们的网站:www.ijava.com