docker部署nginx
前言
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
一、系统环境
# 查看系统内核版本,安装docker前确保内存版本大于等于3.10
uname -a
运行环境为cenos7操作系统
二、安装docker前准备
1.更新yum源
yum update
2.安装所需安装包
yum install -y yum-utils device-mapper-persistent-data lvm2
3.设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
三、安装docker
1.安装docker
yum install docker-ce docker-ce-cli containerd.io
2.查看docker版本
docker -v
3.启动docker
# 启动docker
systemctl start docker
4.查看docker运行状态
systemctl status docker
看到running则说明docker正式启动成功
5.重启docker
systemctl daemon-reload
systemctl restart docker
6.拉取nginx镜像
docker pull nginx
# 查看容器镜像
docker images
当第一次拉取镜像时,可能无法获取镜像,通过docker images会发现没有nginx镜像,如果拉取成功的化,则如上图所示。若拉取失败,出现如下错误,通过配置host解决:
- Get https://registry-1.docker.io/v2/: x509: certificate is valid for *.app.cision.com, app.cision.com, not registry-1.docker.io
# 安装bind-utils
yum install bind-utils
# 找出registry-1.docker.io
dig @114.114.114.114 registry-1.docker.io
# 修改registry-1.docker.io映射地址(任选其一即可)
vim /etc/hosts
2. 配置后重新执行docker pull nginx,即可拉取成功
7. 启动docker镜像
# -d 后台运行
# -p 端口映射 80 -> 8080
docker run --name nginx-container -d -p 8080:80 nginx
# 列出nginx镜像
docker ps | grep nginx
# 列出全部镜像
docker ps
# 进入容器(-it后面也可以换成CONTAINER ID,博主偷懒写个name就好了)
docker exec -it nginx-container /bin/bash
# 查看nginx文件位置
whereis nginx
# 退出容器
exit
通过以上操作,成功进入了容器,但是容器与外界环境隔离,基本的命令yum和vim命令都没有,还有修改配置,都需要每次切换到容器内部去修改配置,很是麻烦,接下来开始暴露nginx相关配置,实现本地化配置
8.拷贝容器配置
# 创建拷贝目录
mkdir nginx-container
cd nginx-container
# 存放nginx配置文件
mkdir config
# 存放nginx日志
mkdir logs
# 存放nginx静态文件
mkdir data
# 拷贝容器内数据(拷贝前需确保本地目录存在)
docker cp nginx-container:/etc/nginx /home/chenlin/nginx-container/config/
docker cp nginx-container:/usr/share/nginx/ /home/chenlin/nginx-container/data/
docker cp nginx-container:/var/log/nginx/ /home/chenlin/nginx-container/logs/
9. 移除容器
# 停止服务并移除容器
docker stop nginx-container
docker rm nginx-container
拷贝完容器数据,为了方便挂载,首先移除刚刚创建的容器
10.挂载容器配置
通过上面的数据拷贝,接下来进行数据挂载,这样就可以不进入容器的情况下,在本地自定义配置nginx服务# -v参数无所谓顺序,只是将容器nginx的相关配置和本地关联起来
# 第一个参数-v:挂载nginx静态文件
# 第二个参数-v:挂载nginx配置文件
# 第三个参数-v:挂载nginx日志文件
# -v 第一个挂载位置为本地目录,第二个挂载位置是容器目录
docker run --name nginx-container -d -p 8080:80 \
-v /home/chenlin/nginx-container/data/nginx/html/:/usr/share/nginx/html \
-v /home/chenlin/nginx-container/config/nginx/:/etc/nginx \
-v /home/chenlin/nginx-container/logs/:/var/log/nginx -d nginx
# 获取ip地址
ip addr
# 浏览器访问
http://xxx:8080/
到这就结束了吗?当然还没有,因为这里还没有体现出挂载的真正用途,即使没有挂载之前其实也是可以正常访问。
修改挂载nginx配置文件:
# 修改配置文件,并重启nginx镜像
cd /home/chenlin/nginx-container/config/nginx/conf.d
vim default.conf