一、Dockerfile使用介绍
Dockerfile是一个普通的文本文件,里面包含了许多可以在命令行接口上执行的用来构建镜像的相关指令,我们通过docker build指令就可以读取Dockerfile文件中的指令并执行自动化镜像构建。
Dockerfile中的命令根据作用分为四类:
1.1、指定基础镜像信息指令:
FROM
1.2、指定维护者信息指令:
MAINTAINER
1.3、对镜像操作的指令:
RUN:后面运行shell命令
COPY:拷贝本地文件到容器某目录
ADD:拷贝本地压缩包到容器,拷贝完成后在容器内部自动解压。也支持从url下载文件后拷贝到容器
VOLUME:指定容器中的某个目录影射到主机上,可以使用docker inspect contained 查看主机上的对应目录
EXPOSE:指定容器内应用运行的端口号
1.4、容器启动后执行的命令:
CMD:在容器中执行的命令,若docker run命令后面指定了shell命令,docker file中的CMD指令会被覆盖
ENTRYPOINT:在容器中执行的命令,该命令执行一次,不会被覆盖
二、nginx示例安装
在宿主机上准备的文件清单:
1、下载源码包
http://nginx.org/download/nginx-1.12.1.tar.gz
2、准备Dockerfile
在/data/app/目录新建Dockerfile
编辑Dockerfile
---新生成的镜像是基于centos:7镜像---
FROM centos:7
---配置网络代理---
RUN echo "proxy=http://172.16.153.103:3128" >> /etc/yum.conf
---安装操作系统插件 ---
RUN yum -y install vim net-tools bridge-utils firewalld bc iotop bc gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel zip unzip zlib-devel lrzsz tree ntpdate telnet lsof tcpdump wget libevent libevent-devel systemd-devel bash-completion traceroutepsmisc
---创建部署目录---
RUN mkdir -p /data/projects/common/nginx
---创建用户---
RUN useradd nginx -s /sbin/nologin -u 2000
---添加源码包到部署目录并解压---
ADD nginx-1.12.1.tar.gz /data/projects/common
---源码编译并启动程序拷贝到系统目录---
RUN cd /data/projects/common/nginx-1.12.1 && ./configure --prefix=/data/projects/common/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module && make && make install && ln -sv /data/projects/common/nginx/sbin/nginx /usr/sbin/nginx
---默认启动命令---
CMD ["nginx","-g","daemon off;"]
---暴露端口---
EXPOSE 80
EXPOSE 443
三、根据Dockerfile生成镜像
docker build -t nginx:linux .
执行完成之后 查看镜像
docker images
四、启动
docker run -it -p 8081:80 --name nginxtest nginx:linux
五、测试
1、在宿主机测试下是否能够访问
telnet ip地址 8081
2、浏览器访问:宿主机ip:8081