Dockerfile源码分离部署LNMP (Centos7)

  

Dockerfile常用指令:

  

<强> 1,从:构建镜像基于哪个镜像
例如:从centos
<强> 2,维护者:镜像维护者姓名或邮箱地址
例如:维护者太阳邱明
<强> 3,运行:强构建镜像时运行的壳命令
例如:
运行(“yum",“install",“httpd"]
运行yum - y安装httpd
<强> 4,CMD :运行容器时执行的壳命令
例如:
CMD (“/bin/bash")
<强> 5,公开声明容器的服务端口
例如:暴露80 443
公开声明端口
格式为暴露& lt;端口1比;[& lt;端口2在…]。
公开指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。在Dockerfile中写入这样的声明有两个好处,一个是帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射;另一个用处则是在运行时使用随机端口映射时,也就是码头工人运行- p时,会自动随机映射暴露的端口。
要将暴露和在运行时使用- p & lt;宿主端口祝辞:& lt;容器端口比;区分开来,p,是映射宿主端口和容器端口,换句话说,就是将容器的对应端口服务公开给外界访问,而公开仅仅是声明容器打算使用什么端口而已,并不会自动在宿主进行端口映射。
<强> 6,ENV: 设置容器环境变量
例如:ENV MYSQL_ROOT_PASSWORD 123. com
<强> 7,添加:拷贝文件或目录到镜像,如果是URL或压缩包会自动下载或自动解压
添加& lt;源文件比;…& lt;目的目录在
添加(“源文件“…“目的目录“]
例如:
添加https://xxx.com/html.tar.gz/var/www/html
添加html.tar。广州/var/www/html
<强> 8,复制:拷贝文件或目录到镜像容器内,跟添加类似,但不具备自动下载或解压功能
例如:复制。/开始。sh/start.sh

  入口点

<强> 9日:运行容器是执行的壳命令
例如:
入口点(“/bin/bash",“-c",“/start.sh"]
入口点/bin/bash - c '/开始。sh '
<强> 10,体积:指定容器挂载点到宿主机自动生成的目录或其他容器
例如:
卷(“/var/lib/mysql"]
<强> 11、用户:为运行CMD,和入口点执行命令指定运行用户
用户& lt; user> [: & lt; group>]或用户& lt; UID> [: & lt; GID>]
例如:
用户sunpengjun
<强> 12日WORKDIR :为运行CMD,入口点,复制和添加设置工作目录
例如:
WORKDIR/数据
<强> 13日HEALTHCHECK: 健康检查
<强> 14日参数:强构建时指定一些参数
例如:从centos

参数用户
用户$ USER

  
  

注意
1,在运行构建时运行,可以写多条
2, CMD和入口点在运行容器时运行,只能写一条,如果写多条,最后一条生效。
3, CMD在运行时可以被命令覆盖,入口点不会被命令覆盖,但可以指定——入口点覆盖。

     

码头工人缓存特性:

  

如果在相同层中,需要用到之前缓存过的镜像,就无需重新下载。但如果此镜像层上层发生变化,即使是在相同层,也用不了缓存。如果非要不使用缓存可以加上——no - cache参数。

  

Dockerfile中每一个指令都会创建一个镜像层,上层是依赖于下层的。无论什么时候,只要某一层发生变化,其上面所有层的缓存都会失效。
也就是说,如果我们改变Dockerfile指令的执行顺序,或者修改或添加指令,都会使缓存失效。

  

Dockerfile的优势:

  

通过dockerfile制作镜像,能够很明显的看到镜像每一层的操作,安全性高,并且可移植操作性强。

  

Dockerfile分离部署LNMP(二进制安装):

  

<>强提示:需要事先将nginx, php, mysql所需的安装包下载到本地(结构目录如下)
 Dockerfile源码分离部署LNMP Centos7

  

准备部署工作:

  

<强> 1,解决容器固定ip地址问题:
保证容器重启后,ip地址不会改变,且方便管理和操作。

  
 <代码> 1)自定义网络:
  [root@sqm-docker01 nginx] #码头工人网络创建- d桥——子网172.16.10.0/24网关172.16.10.1 mynet1  
  

<强> 2,创建挂载目录:
网页根目录:/wwwroot
配置文件目录:/docker_conf

  
 <代码> # mkdir/wwwroot root@sqm-docker01 nginx
  [root@sqm-docker01 nginx] # mkdir/docker_conf  
  

部署nginx:

  

[root@sqm-docker01 ~] # vim Dockerfile
<强>代码如下:

  从centos
 <代码>:7
  添加nginx-1.8.0.tar。广州/添加nginx-sticky-module。zip/添加ngx_cache_purge-2.3.tar。广州/运行yum - y安装gcc * pcre-devel openssl-devel zlib-devel解压缩使vim net-tools elinks树\
  ,,groupadd nginx \
  ,,useradd nginx - g - s/sbin/nologin nginx
  WORKDIR nginx-1.8.0/运行./configure——prefix=/usr/地方/nginx \
  ——用户=nginx \
  ——组=nginx \
  ——with-http_stub_status_module \
  ——with-http_realip_module \
  ——with-http_ssl_module \
  ——with-http_gzip_static_module \
  ——http-client-body-temp-path=/var/tmp/nginx/客户端\
  ——http-proxy-temp-path=/var/tmp/nginx/代理\
  ——http-fastcgi-temp-path=/var/tmp/nginx/fcgi \
  ——with-pcre \
  ——添加模块=. ./ngx_cache_purge - 2.3 \
  ——with-http_flv_module \
  ,,使,,使安装\
  ,,ln - s/usr/local/nginx/sbin/nginx/usr/local/sbin/\
  ,,mkdir - p/var/tmp/nginx/client/\
  ,,乔恩- r nginx/var/tmp/nginx/client/\
  ,,sed - i - e ' s/没有/nginx/' - e 2年代/^ #///usr/local/nginx/conf/nginx.conf
  80年公开
  CMD [" nginx”、“g”,“守护进程;”)

Dockerfile源码分离部署LNMP (Centos7)