docker安装nginx
本次安装是自己搭建nginx镜像,没有采用github库直接下载。
目的是充分了解docker的工作原理和命令。用到的知识点有:安装操作、镜像操作、容器操作、容器打包、数据券、网络等。
本文的安装采用两中方式(手动安装采用yum安装,dockerfile采用源码安装),启动方式也是两种。具体的使用,可以根据自己的实际情况配置
安装docker
下载docker(指定阿里云)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
至此docker安装完成
安装nginx
需要先下载nginx: nginx .
然后下载centos镜像
看菜鸟教程.
docker pull centos:centos7.9.2009
注:不要使用docker pull centos或docker pull centos:latest,因为它代表拉去最后一个版本,这样以后使用镜像都会从网上拉去的
至此centos镜像和nginx下载完成。
开始镜像制作
开始nginx镜像制作
启动并进入到容器中
docker run -it --name mynginx centos:centos7.9.2009 /bin/bash
命令解释:run 运行
-i : 表面操作
-t : 终端
–name :容器名字
centos:centos7.9.2009 所用镜像以及它的版本
/bin/bash:交互模式进入系统。
至此进入容器中。
之后的配置和普通nginx的安装方式一样:安装依赖、安装配置等。
在此使用yam源下载nginx
添加Nginx到YUM源
yum install epel-release
安装nginx
yum install -y nginx
修改参数
vi /etc/nginx/nginx.conf
在user下面添加(目的是前端启动)
daemon off;
nginx -t #检查nginx配置文件语法
nginx #启动nginx
将nginx.conf拷贝到主机
在主机中(用于修改配置)
docker cp 80a5fef538be:/etc/nginx/nginx.conf /usr/local/nginx/nginx.conf
启动成功
另起一进程
docker ps -a #可以看定正在运行的容器
打包
docker commit -a "lqb" -m "add new nginx docker images" mynginx mynginx:v1
解释:
commit 从容器创建一个新的镜像
-m :-a :提交的镜像作者;提交时的说明文字;
第一个mynignx:容器名称
mynginx:v1:镜像名和版本号
docker images #可以看到新生成的镜像
运行自己的镜像
挂载数据卷和开放端口
docker run -d -p 80:80 -v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/html/:/usr/share/nginx/html/ --name web_nginx mynginx:v1 nginx
解释:
-d 后台一直运行(不加则前端运行)
-p 端口映射(主机端口:容器端口)
-v 数据卷(主机文件:容器中的文件)
–name :容器名称
mynginx:v1 镜像名称和版本
nginx :启动容器中的nginx
在此不加-it /bin/bash 是不进入容器中
至此启动完成
访问服务器端口:
至此nginx配置完成
注意:docker容器停止后(不删除),再次启动,里面的应用会自动启动,这相当于docker记录了应用的状态,启动时会自动恢复状态。
生成dockerfile
生成的docker是自定义安装的
FROM centos:centos7.9.2009
MAINTAINER lqb "xxxx@qq.com"
RUN yum install -y pcre-devel wget net-tools gcc zlib zlib-devel make openssl-devel
ADD http://nginx.org/download/nginx-1.20.1.tar.gz .
RUN tar zxvf nginx-1.20.1.tar.gz
RUN mkdir -p /usr/local/nginx
RUN cd nginx-1.20.1 && ./configure --prefix=/usr/local/nginx && make -j 4 && make -j 4 install
RUN rm -fv /usr/local/nginx/conf/nginx.conf
ADD http://www.apelearn.com/study_v2/.nginx_conf /usr/local/nginx/conf/nginx.conf
EXPOSE 80
ENTRYPOINT /usr/local/nginx/sbin/nginx
解释:
FROM :基础镜像
MAINTAINER:用户信息
RUN 运行一个命令
ADD 主机构建环境(上下文)目录中的文件和目录、以及一个URL标记的文件 拷贝到镜像中
EXPOSE 对外端口
ENTRYPOINT 执行命令(启动nginx)
打包
docker build -t centos_nginx:v1 .
使用镜像 生成容器
docker run -d -p 80:80 -v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/html/:/usr/local/nginx/html/ --name web_nginx mynginx:v1
参考文献
docker菜鸟教程:https://www.runoob.com/docker/docker-tutorial.html
github库的使用
https://hub.docker.com/