基于alpine用dockerfile创建的nginx镜像

1、下载alpine镜像

[[email protected] ~]# docker pull alpine
Using default tag: latest
Trying to pull repository docker.io/library/alpine ...
latest: Pulling from docker.io/library/alpine
4fe2ade4980c: Pull complete
Digest: sha256:621c2f39f8133acb8e64023a94dbdf0d5ca81896102b9e57c0dc184cadaf5528
Status: Downloaded newer image for docker.io/alpine:latest
[[email protected] ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/alpine    latest              196d12cf6ab1        3 weeks ago         4.41 MB

2、编写dockerfile(一)

2.1.创建存放文件目录

[[email protected] ~]# cd /opt/
[[email protected] opt]# mkdir alpine_nginx && cd alpine_nginx && touch Dockerfile && touch nginx.conf && touch nginx.vh.default.conf
[[email protected] alpine_nginx]# ll
总用量 16
-rw-r--r-- 1 root root 5652 10月  4 18:15 Dockerfile
-rw-r--r-- 1 root root  638 10月  4 15:23 nginx.conf
-rw-r--r-- 1 root root  472 10月  4 15:24 nginx.vh.default.conf

2.2. 准备nginx.conf文件

[[email protected] alpine_nginx]# cat nginx.conf
user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  10240;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                      ‘$status $body_bytes_sent "$http_referer" ‘
                      ‘"$http_user_agent" "$http_x_forwarded_for"‘;

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

2.3.准备nginx.vh.default.conf文件

[[email protected] alpine_nginx]# cat nginx.vh.default.conf
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

2.4.dockerfile文件

# 基础镜像
FROM alpine

# 作者信息
MAINTAINER NGINX Docker Maintainers "[email protected]"

# 修改源
RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories &&     echo "http://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories

# 安装需要的软件
RUN apk update &&     apk add --no-cache ca-certificates &&     apk add --no-cache curl bash tree tzdata &&     cp -rf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 设置变量
ENV NGINX_VERSION 1.14.0

# 编译安装nginx
RUN GPG_KEYS=B0F4253373F8F6F510D42178520A9993A1C052F8 	&& CONFIG="		--prefix=/etc/nginx 		--sbin-path=/usr/sbin/nginx 		--modules-path=/usr/lib/nginx/modules 		--conf-path=/etc/nginx/nginx.conf 		--error-log-path=/var/log/nginx/error.log 		--http-log-path=/var/log/nginx/access.log 		--pid-path=/var/run/nginx.pid 		--lock-path=/var/run/nginx.lock 		--http-client-body-temp-path=/var/cache/nginx/client_temp 		--http-proxy-temp-path=/var/cache/nginx/proxy_temp 		--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp 		--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp 		--http-scgi-temp-path=/var/cache/nginx/scgi_temp 		--user=nginx 		--group=nginx 		--with-http_ssl_module 		--with-http_realip_module 		--with-http_addition_module 		--with-http_sub_module 		--with-http_dav_module 		--with-http_flv_module 		--with-http_mp4_module 		--with-http_gunzip_module 		--with-http_gzip_static_module 		--with-http_random_index_module 		--with-http_secure_link_module 		--with-http_stub_status_module 		--with-http_auth_request_module 		--with-http_xslt_module=dynamic 		--with-http_image_filter_module=dynamic 		--with-http_geoip_module=dynamic 		--with-threads 		--with-stream 		--with-stream_ssl_module 		--with-stream_ssl_preread_module 		--with-stream_realip_module 		--with-stream_geoip_module=dynamic 		--with-http_slice_module 		--with-mail 		--with-mail_ssl_module 		--with-compat 		--with-file-aio 		--with-http_v2_module 	" 	&& addgroup -S nginx 	&& adduser -D -S -h /var/cache/nginx -s /sbin/nologin -G nginx nginx 	&& apk add --no-cache --virtual .build-deps 		gcc 		libc-dev 		make 		openssl-dev 		pcre-dev 		zlib-dev 		linux-headers 		curl 		gnupg 		libxslt-dev 		gd-dev 		geoip-dev 	&& curl -fSL http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz -o nginx.tar.gz 	&& curl -fSL http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz.asc  -o nginx.tar.gz.asc 	&& export GNUPGHOME="$(mktemp -d)" 	&& found=‘‘; 	for server in 		ha.pool.sks-keyservers.net 		hkp://keyserver.ubuntu.com:80 		hkp://p80.pool.sks-keyservers.net:80 		pgp.mit.edu 	; do 		echo "Fetching GPG key $GPG_KEYS from $server"; 		gpg --keyserver "$server" --keyserver-options timeout=10 --recv-keys "$GPG_KEYS" && found=yes && break; 	done; 	test -z "$found" && echo >&2 "error: failed to fetch GPG key $GPG_KEYS" && exit 1; 	gpg --batch --verify nginx.tar.gz.asc nginx.tar.gz 	&& rm -r "$GNUPGHOME" nginx.tar.gz.asc 	&& mkdir -p /usr/src 	&& tar -zxC /usr/src -f nginx.tar.gz 	&& rm nginx.tar.gz 	&& cd /usr/src/nginx-$NGINX_VERSION 	&& ./configure $CONFIG --with-debug 	&& make -j$(getconf _NPROCESSORS_ONLN) 	&& mv objs/nginx objs/nginx-debug 	&& mv objs/ngx_http_xslt_filter_module.so objs/ngx_http_xslt_filter_module-debug.so 	&& mv objs/ngx_http_image_filter_module.so objs/ngx_http_image_filter_module-debug.so 	&& mv objs/ngx_http_geoip_module.so objs/ngx_http_geoip_module-debug.so 	&& mv objs/ngx_stream_geoip_module.so objs/ngx_stream_geoip_module-debug.so 	&& ./configure $CONFIG 	&& make -j$(getconf _NPROCESSORS_ONLN) 	&& make install 	&& rm -rf /etc/nginx/html/ 	&& mkdir /etc/nginx/conf.d/ 	&& mkdir -p /usr/share/nginx/html/ 	&& install -m644 html/index.html /usr/share/nginx/html/ 	&& install -m644 html/50x.html /usr/share/nginx/html/ 	&& install -m755 objs/nginx-debug /usr/sbin/nginx-debug 	&& install -m755 objs/ngx_http_xslt_filter_module-debug.so /usr/lib/nginx/modules/ngx_http_xslt_filter_module-debug.so 	&& install -m755 objs/ngx_http_image_filter_module-debug.so /usr/lib/nginx/modules/ngx_http_image_filter_module-debug.so 	&& install -m755 objs/ngx_http_geoip_module-debug.so /usr/lib/nginx/modules/ngx_http_geoip_module-debug.so 	&& install -m755 objs/ngx_stream_geoip_module-debug.so /usr/lib/nginx/modules/ngx_stream_geoip_module-debug.so 	&& ln -s ../../usr/lib/nginx/modules /etc/nginx/modules 	&& strip /usr/sbin/nginx* 	&& strip /usr/lib/nginx/modules/*.so 	&& rm -rf /usr/src/nginx-$NGINX_VERSION 		# Bring in gettext so we can get `envsubst`, then throw
	# the rest away. To do this, we need to install `gettext`
	# then move `envsubst` out of the way so `gettext` can
	# be deleted completely, then move `envsubst` back.
	&& apk add --no-cache --virtual .gettext gettext 	&& mv /usr/bin/envsubst /tmp/ 		&& runDeps="$( 		scanelf --needed --nobanner /usr/sbin/nginx /usr/lib/nginx/modules/*.so /tmp/envsubst 			| awk ‘{ gsub(/,/, "\nso:", $2); print "so:" $2 }‘ 			| sort -u 			| xargs -r apk info --installed 			| sort -u 	)" 	&& apk add --no-cache --virtual .nginx-rundeps $runDeps 	&& apk del .build-deps 	&& apk del .gettext 	&& mv /tmp/envsubst /usr/local/bin/ 		# forward request and error logs to docker log collector
	&& ln -sf /dev/stdout /var/log/nginx/access.log 	&& ln -sf /dev/stderr /var/log/nginx/error.log

# 将目录下的文件copy到镜像中
COPY nginx.conf /etc/nginx/nginx.conf
COPY nginx.vh.default.conf /etc/nginx/conf.d/default.conf

# 开放80端口
EXPOSE 80

STOPSIGNAL SIGTERM

# 启动nginx命令
CMD ["nginx", "-g", "daemon off;"]

2.5.创建镜像

[[email protected] alpine_nginx]# docker build -t alpine:nginx .

2.6.创建容器

# 不进行宿主配置文件日志文件挂载
docker run -tid --name zjznginx  -p 80:80 -m 2048m  --memory-swap=2048m  --cpu-shares=256 alpine:nginx

# 挂载配置文件和日志
docker run -tid --name zjznginx  -p 80:80 -v /opt/Webs/nginx/nginx.conf:/etc/nginx/nginx.conf -v /opt/Webs/nginx/logs/:/var/log/nginx -m 2048m  --memory-swap=2048m  --cpu-shares=256 alpine:nginx

查看容器

[[email protected] alpine_nginx]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
27c9ed6664ba        alpine:nginx        "nginx -g ‘daemon ..."   1 second ago        Up 1 second         0.0.0.0:80->80/tcp   zjznginx

3、编写dockerfile(二)

3.1.创建存放文件目录

[[email protected] ~]# cd /opt/
[[email protected] opt]# mkdir alpine_nginx && cd alpine_nginx && touch Dockerfile && touch nginx.conf && touch nginx.vh.default.conf
[[email protected] alpine_nginx]# ll
总用量 16
-rw-r--r-- 1 root root 5652 10月  4 18:15 Dockerfile
-rw-r--r-- 1 root root  638 10月  4 15:23 nginx.conf
-rw-r--r-- 1 root root  472 10月  4 15:24 nginx.vh.default.conf

3.2.准备nginx.conf文件

[[email protected] alpine_nginx]# cat nginx.conf
user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  10240;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                      ‘$status $body_bytes_sent "$http_referer" ‘
                      ‘"$http_user_agent" "$http_x_forwarded_for"‘;

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

3.3. 准备nginx.vh.default.conf文件

[[email protected] alpine_nginx]# cat nginx.vh.default.conf
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

3.4.dockerfile文件

# 基础镜像
FROM alpine

# 作者信息
MAINTAINER NGINX Docker Maintainers "[email protected]"

# 修改源
RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories &&     echo "http://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories

# 安装需要的软件
RUN apk update &&     apk add --no-cache ca-certificates &&     apk add --no-cache curl bash tree tzdata &&     cp -rf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 设置变量
ENV NGINX_VERSION 1.14.0

# 编译安装nginx
RUN GPG_KEYS=B0F4253373F8F6F510D42178520A9993A1C052F8 	&& CONFIG="		--prefix=/etc/nginx 		--sbin-path=/usr/sbin/nginx 		--modules-path=/usr/lib/nginx/modules 		--conf-path=/etc/nginx/nginx.conf 		--error-log-path=/var/log/nginx/error.log 		--http-log-path=/var/log/nginx/access.log 		--pid-path=/var/run/nginx.pid 		--lock-path=/var/run/nginx.lock 		--http-client-body-temp-path=/var/cache/nginx/client_temp 		--http-proxy-temp-path=/var/cache/nginx/proxy_temp 		--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp 		--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp 		--http-scgi-temp-path=/var/cache/nginx/scgi_temp 		--user=nginx 		--group=nginx 		--with-http_ssl_module 		--with-http_realip_module 		--with-http_addition_module 		--with-http_sub_module 		--with-http_dav_module 		--with-http_flv_module 		--with-http_mp4_module 		--with-http_gunzip_module 		--with-http_gzip_static_module 		--with-http_random_index_module 		--with-http_secure_link_module 		--with-http_stub_status_module 		--with-http_auth_request_module 		--with-http_xslt_module=dynamic 		--with-http_image_filter_module=dynamic 		--with-http_geoip_module=dynamic 		--with-threads 		--with-stream 		--with-stream_ssl_module 		--with-stream_ssl_preread_module 		--with-stream_realip_module 		--with-stream_geoip_module=dynamic 		--with-http_slice_module 		--with-mail 		--with-mail_ssl_module 		--with-compat 		--with-file-aio 		--with-http_v2_module 	" 	&& addgroup -S nginx 	&& adduser -D -S -h /var/cache/nginx -s /sbin/nologin -G nginx nginx 	&& apk add --no-cache --virtual .build-deps 		gcc 		libc-dev 		make 		openssl-dev 		pcre-dev 		zlib-dev 		linux-headers 		curl 		gnupg 		libxslt-dev 		gd-dev 		geoip-dev 	&& curl -fSL http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz -o nginx.tar.gz 	&& curl -fSL http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz.asc  -o nginx.tar.gz.asc 	&& export GNUPGHOME="$(mktemp -d)" 	&& found=‘‘; 	for server in 		ha.pool.sks-keyservers.net 		hkp://keyserver.ubuntu.com:80 		hkp://p80.pool.sks-keyservers.net:80 		pgp.mit.edu 	; do 		echo "Fetching GPG key $GPG_KEYS from $server"; 		gpg --keyserver "$server" --keyserver-options timeout=10 --recv-keys "$GPG_KEYS" && found=yes && break; 	done; 	test -z "$found" && echo >&2 "error: failed to fetch GPG key $GPG_KEYS" && exit 1; 	gpg --batch --verify nginx.tar.gz.asc nginx.tar.gz 	&& rm -r "$GNUPGHOME" nginx.tar.gz.asc 	&& mkdir -p /usr/src 	&& tar -zxC /usr/src -f nginx.tar.gz 	&& rm nginx.tar.gz 	&& cd /usr/src/nginx-$NGINX_VERSION 	&& ./configure $CONFIG --with-debug 	&& make -j$(getconf _NPROCESSORS_ONLN) 	&& mv objs/nginx objs/nginx-debug 	&& mv objs/ngx_http_xslt_filter_module.so objs/ngx_http_xslt_filter_module-debug.so 	&& mv objs/ngx_http_image_filter_module.so objs/ngx_http_image_filter_module-debug.so 	&& mv objs/ngx_http_geoip_module.so objs/ngx_http_geoip_module-debug.so 	&& mv objs/ngx_stream_geoip_module.so objs/ngx_stream_geoip_module-debug.so 	&& ./configure $CONFIG 	&& make -j$(getconf _NPROCESSORS_ONLN) 	&& make install 	&& rm -rf /etc/nginx/html/ 	&& mkdir /etc/nginx/conf.d/ 	&& mkdir -p /usr/share/nginx/html/ 	&& install -m644 html/index.html /usr/share/nginx/html/ 	&& install -m644 html/50x.html /usr/share/nginx/html/ 	&& install -m755 objs/nginx-debug /usr/sbin/nginx-debug 	&& install -m755 objs/ngx_http_xslt_filter_module-debug.so /usr/lib/nginx/modules/ngx_http_xslt_filter_module-debug.so 	&& install -m755 objs/ngx_http_image_filter_module-debug.so /usr/lib/nginx/modules/ngx_http_image_filter_module-debug.so 	&& install -m755 objs/ngx_http_geoip_module-debug.so /usr/lib/nginx/modules/ngx_http_geoip_module-debug.so 	&& install -m755 objs/ngx_stream_geoip_module-debug.so /usr/lib/nginx/modules/ngx_stream_geoip_module-debug.so 	&& ln -s ../../usr/lib/nginx/modules /etc/nginx/modules 	&& strip /usr/sbin/nginx* 	&& strip /usr/lib/nginx/modules/*.so 	&& rm -rf /usr/src/nginx-$NGINX_VERSION 		# Bring in gettext so we can get `envsubst`, then throw
	# the rest away. To do this, we need to install `gettext`
	# then move `envsubst` out of the way so `gettext` can
	# be deleted completely, then move `envsubst` back.
	&& apk add --no-cache --virtual .gettext gettext 	&& mv /usr/bin/envsubst /tmp/ 		&& runDeps="$( 		scanelf --needed --nobanner /usr/sbin/nginx /usr/lib/nginx/modules/*.so /tmp/envsubst 			| awk ‘{ gsub(/,/, "\nso:", $2); print "so:" $2 }‘ 			| sort -u 			| xargs -r apk info --installed 			| sort -u 	)" 	&& apk add --no-cache --virtual .nginx-rundeps $runDeps 	&& apk del .build-deps 	&& apk del .gettext 	&& mv /tmp/envsubst /usr/local/bin/ 		# forward request and error logs to docker log collector
	&& ln -sf /dev/stdout /var/log/nginx/access.log 	&& ln -sf /dev/stderr /var/log/nginx/error.log

# 将目录下的文件copy到镜像中
COPY nginx.conf /etc/nginx/nginx.conf
COPY nginx.vh.default.conf /etc/nginx/conf.d/default.conf

# 将启动命令搞成个脚本通过脚本启动
RUN echo "/usr/sbin/nginx" >>/etc/start.sh

# 开放80端口
EXPOSE 80

STOPSIGNAL SIGTERM

# 启动nginx命令
CMD ["/bin/sh","/etc/start.sh"]

3.5.创建镜像

[[email protected] alpine_nginx]# docker build -t alpine:nginx .

3.6.创建容器

# 不进行宿主配置文件日志文件挂载
docker run -ti --restart=always --name zjznginx  -p 80:80 -m 2048m  --memory-swap=2048m  --cpu-shares=256 alpine:nginx bash

# 挂载配置文件和日志
docker run -ti --restart=always --name zjznginx  -p 80:80 -v /opt/Webs/nginx/nginx.conf:/etc/nginx/nginx.conf -v /opt/Webs/nginx/logs/:/var/log/nginx -m 2048m  --memory-swap=2048m  --cpu-shares=256 alpine:nginx bash

PS:因为用的是脚本命令的方式启动的,没有守护进程 ,最后使用bash或者sh进入容器启动然后ctrl+p ctrl+q 退出

具体的解释:docker运行nginx为什么要使用 daemon off

启动nginx

[[email protected] alpine_nginx]# docker run -ti --restart=always --name zjznginx  -p 80:80 -m 2048m  --memory-swap=2048m  --cpu-shares=256 alpine:nginx bash
bash-4.4# /bin/sh /etc/start.sh 

查看容器

[[email protected] alpine_nginx]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES
0da349afebff        alpine:nginx        "bash"              21 seconds ago      Up 20 seconds       0.0.0.0:80->80/tcp   zjznginx

4、测试

原文地址:https://www.cnblogs.com/zhujingzhi/p/9742085.html

时间: 2024-10-11 17:54:44

基于alpine用dockerfile创建的nginx镜像的相关文章

基于alpine用dockerfile创建的ssh镜像

1.下载alpine镜像 [[email protected] ~]# docker pull alpine Using default tag: latest Trying to pull repository docker.io/library/alpine ... latest: Pulling from docker.io/library/alpine 4fe2ade4980c: Pull complete Digest: sha256:621c2f39f8133acb8e64023a9

基于alpine用dockerfile创建的tomcat镜像

1.下载alpine镜像 [[email protected] ~]# docker pull alpine Using default tag: latest Trying to pull repository docker.io/library/alpine ... latest: Pulling from docker.io/library/alpine 4fe2ade4980c: Pull complete Digest: sha256:621c2f39f8133acb8e64023a9

Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较

1.概述 创建Docker镜像的方式有三种 docker commit命令:由容器生成镜像: Dockerfile文件+docker build命令: 从本地文件系统导入:OpenVZ的模板. 关于这三种方式的大致说明请参考yeasy/docker_practice的创建镜像. 最近学习了Dockerfile文件的相关配置,这里做一下简单的总结,并对之前一直感到有些迷惑的CMD和ENTRYPOINT指令做个差异对比. 2.Dockerfile文件总结 Dockerfile 由一行行命令语句组成,

通过DockerFile创建ssh服务镜像

说明:创建一个含有sshd服务的基础镜像,再在这个基础镜像中创建其它中间件镜像,再利用中间件镜像创建应用容器.通过Dockerfile可以创建任意自定义容器,配合supervisord服务完美搭配. 1. 编写Dockerfile [[email protected] ~]# vi /root/base_ssh/Dockerfile -----------------DockerFile----------------- # This is Dockerfile    # Author: kou

使用Dockerfile创建自己的镜像

要创建自己的Docker镜像,最好的方法是使用Dockerfile文件,在使用过程中,由于国内的网络环境的问题,创建镜像的过程中可能因为需要下载的软件不能及时获得,可能造成创建的镜像出错.为解决这个问题,在编写Dockerfile时,可以通过RUN指令,把软件源的地址换成国内的,虽然这样做有人说做成功了,但我在测试时没有成功,所以我的建议是通过进入容器,手动下载需要的软件,这样能够避免出现这样的错误.软件下载安装好后,再把该容器commit成一个镜像,再写Dockerfile文件,写入需要做的配

DockerFile创建一个nginx容器的全过程

首先,随便建立一个文件夹,比如我先# mkdir sample,然后我在这个sample里建立一个Dockerfile,内容如下: FROM ubuntu:14.04 MAINTAINER Chris Chan "[email protected]" ENV REFRESHED_AT 2016-12-05 RUN apt-get -y update && apt-get install -y nginx RUN mkdir -p /var/www/html/websit

使用dockerfile 创建ubuntu ssh镜像

############################################################ # Dockerfile to build ubunto ssh container images # Based on Ubuntu ############################################################ FROM ubuntu MAINTAINER jinyetongxiao ENV TZ Asia/Shanghai EN

dockerfile构建nginx镜像

Dockerfile是一个文本格式的配置文件,用户可以使用dockerfile来快速创建自定义的镜像. Dockerfile指令说明 分类 指令 说明 配置指令 ARG 定义创建镜像过程中使用的变量 配置指令 FROM 指定镜像创建的基础镜像 配置指令 LABEL 为生成的镜像添加元数据标签信息 配置指令 EXPOSE 声明镜像内服务监听的端口 配置指令 ENV 指定环境变量 配置指令 ENTRYPOINT 指定镜像的默认入口指令 配置指令 VOLUME 创建一个数据卷挂载点 配置指令 USRE

8.Docker之使用dockerfile创建nginx镜像

一.前言 看了很多人的dockerfile,都是长篇大论,解释的又很少,对于初学者来说根本不知道指令的意思,哪怕知道指令的意思,也不知道指令后面配置的一大串东西来自于哪里,而这一大串又无需去记忆,例如: 开头的RUN指令都能根据dockerfile的指令说明可以知道该指令是干嘛用的,但是后面这一串这么长的东西又是来自于哪里? 所以在编写dockerfile之前,你必须懂的nginx(该文章是基于dockerfile创建nginx镜像)在linux上的安装流程,否则,需要安装什么依赖等都不知道,就