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所需的安装包下载到本地(结构目录如下)强>。
准备部署工作:
<强> 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)