容器是程序加其依赖,容器与镜像好比实例与类,进程与程序,容器是有生命周期的而镜像没有。镜像也是程序加其依赖,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
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 .
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在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
下载,或去官网下载压缩包在解压