容器是程序加其依赖,容器与镜像好比实例与类,进程与程序,容器是有生命周期的而镜像没有。镜像也是程序加其依赖,Dockerfile作为镜像的一种前身最基本需要包含两部分1,程序。2,其依赖。
下面是基于空白镜像制作的关于nginx的基础镜像
该Dockerfile文件应包括:(1)程序,(2)其依赖,(3)rootfs(根文件)//由于我是基于scratch空白镜像构建的dockerfile,所以需要一些系统的命令简单一点下一个操作系统的外壳。
1, 下载rootfs

wget -O rootfs.tar.xz https://github.com/debuerreotype/docker-debian-artifacts/raw/b024a792c752a5c6ccc422152ab0fd7197ae8860/jessie/rootfs.tar.xz

nginx docker 中安装vim_docker

2, 编写dockerfile文件## ``
#基于scratch空白

FROM scratch

#将rootfs根文件解压,它可以提供一些系统命令

ADD rootfs.tar.xz  /

#进入/usr/local/nginx文件夹

WORKDIR  /usr/local/nginx

#下载nginx需要的依赖环境,和wget用来下载nginx,下载并解压nginx

RUN apt-get update && \
    apt-get  -y install  gcc && \
    apt-get  -y install  g++  && \
    apt-get  -y install  zlib1g   && \
    apt-get  -y install  zlib1g-dev   && \
    apt-get  -y install  libpcre3      && \
    apt-get  -y install  libpcre3-dev && \
    apt-get  -y install  libssl-dev  && \
    apt-get  -y install  make   && \
    apt-get -y install wget && \
    wget http://nginx.org/download/nginx-1.17.1.tar.gz && \
    tar -xvf nginx-1.17.1.tar.gz

#进入/usr/local/nginx/nginx-1.17.1,准备修改配置(非必要),编译并安装nginx

WORKDIR  /usr/local/nginx/nginx-1.17.1

#修改安装位置,编译并安装

RUN     ./configure --prefix=/usr/local/nginx  && make && make install

#特别注意deamon可能并不知道你nginx执行命令的位置,需要添加路径,让deamon可以识别

ENV PATH $PATH:/usr/local/nginx/sbin

#docker run后干的事,但run如果加了参数就可以覆盖cmd,且如果有多个cmd只有最后一个有效

CMD ["nginx", "-g", "daemon off;"]

3, 使用build构建镜像
#注意“.”是用来打包上下文的,即打包dockerfile所在的文件夹的所有东西,当然也可以不用“.”,用具体的路径,打包上下文主要的目的是把本机的东西(镜像需要的)一起构建成镜像。

docker build –t nginx_test_hsy01 .

nginx docker 中安装vim_nginx docker 中安装vim_02

4, 运行容器
#第二种可以把日志复制到你指定的文件夹里面

docker run --name test-hsy01 –d –p 8082:80  nginx_test_hsy01

也可

docker run -d --name test-hsy02 -p 8082:80 --mount type=bind,src=/opt/nginx_logs_hsy/,dst=/usr/local/nginx/logs/ nginx-test-hsy01

5, 检测容器是否启动成功

可以docker ps 状态为up即成功,也可以用页面访问出现下面的页面即成功

由于下的rootfs应该是 ubuntu的外壳所以安装的依赖环境有所不同,用 zlib1g+zlib1g-dev 代替CentOS下的zlib zlib-devel,libpcre3+libpcre3-dev代替pcre pcre-devel,libssl-dev代替openssl openssl-devel。

使用dockerfile的好处:可以制定每一层,镜像和容器是分层的,使用dockerfile可以让我们直观和清楚的镜像的每一层,基于scrath的镜像会相对更小,相对于commit方式制作镜像dockerfile不会显的那么臃肿。

nginx docker 中安装vim_nginx_03

附:nginx在linux下的安装
环境:CentOS
1,安装依赖
//选择安装nginx的位置

cd /usr/local
mkdir nginx
cd nginx

//安装依赖

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

2,下载并解压安装包

wget http://nginx.org/download/nginx-1.17.1.tar.gz && tar -xvf nginx-1.17.1.tar.gz

3,安装并启动

cd ./nginx-1.17.1
./configure  &&   make  &&  make install
cd ../sbin  &&  ./nginx

特别注意80(默认)端口的使用情况
4,检验是否成功

`ps -ef | grep nginx`

检验是否开启
或 ip:默认端口(80)查看是否出现欢迎界面
如果没有wget可yum -y install wget下载,或去官网下载压缩包在解压