centos7 使用docker 一键部署服务器
docker 真香
使用docker前先检查你的系统版本
cat /etc/redhat-release
下面的表格就直接展示了 Docker 对主流几款 Linux 系统版本的要求
操作系统 | 支持的系统版本 |
---|---|
CentOS | CentOS 7 |
Debian | Debian Wheezy 7.7 (LTS) |
Debian | Jessie 8 (LTS) |
Debian | Stretch 9 |
Debian | Buster 10 |
Fedora | Fedora 26 |
Fedora | 27 |
Ubuntu | Ubuntu Trusty 14.04 (LTS) |
Ubuntu | Xenial 16.04 (LTS) |
Ubuntu | Artful 17.10 |
当然,在较低版本的 Linux 系统中也能安装 Docker,不过只能是版本较低的 Docker,其功能存在一些缺失,或者与最新版本有所区别, 所以如果条件允许,建议将系统升级到支持最新版本 Docker 的系统版本
安装docker
下载脚本
curl -fsSL https://get.docker.com -o get-docker.sh
执行脚本
sh get-docker.sh
使用镜像
因为不加的话docker pull 是龟速。。。
有文件夹省略这步
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{ "registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"]}
EOF
systemctl daemon-reload
systemctl restart docker
可以使用docker -v 看看docker是否安装成功
安装nginx
使用docker 跑一个nginx的容器, docker容器可以做到秒级启动,用完即删,所以我们要做文件持久化存储要把容器内的需要持久化的目录和配置挂载出来
nginx 需要持久化的目录就是我们部署前端的位置 /usr/share/nginx/html ,
nginx 配置也挂载出来方便修改 /etc/nginx/nginx.conf ,
这样我们在容器外就可以部署前端静态资源和修改nginx配置, 修改完重启下容器就OK了。
随便找个位置比如/home/nginx, 先临时创建个容器把配置拷贝出来
docker run --name nginx --rm -d nginx
--rm 表示容器停止后就删除该容器
-d 表示后台运行容器
--name 给容器起名字
使用docker ps你可以看到nginx 容器 正在运行中,
把容器内的默认配置给拷贝到/home/nginx目录下
docker cp nginx:/etc/nginx/nginx.conf /home/nginx
拷贝完停止容器
docker stop nginx
再使用docker ps -a 查看容器 你就看不到了
-a 表示查看所有容器, 不加查看正在运行的容器
现在可以正式创建nginx容器了
docker run --restart-always --name nginx -d -p 80:80 -p 443:443 -v /home/nginx/html: /usr/share/nginx/html -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf nginx
--restart-always 保证特殊情况重启容器
-p 把容器内的端口映射到宿主机, -p [宿主机端口]:[容器内端口]
这样我们直接在浏览器输入你的服务器ip就可以看到nginx的欢迎页了,阿里云服务器还要在安全组内开放80端口
-v 就是把容器内的目录映射到宿主机的目录 这样就算容器删除了我们的数据还在
以后部署的时候就可以把前端打包后的静态资源放在/home/nginx/html路径下,然后docker restart nginx就ok啦,
拓展
甚至前端每次打包后的静态资源也可以docker build 出一个镜像,根据版本号打上tag , push 到docker hub, 使用该镜像run一个volumn container
配合jenkins可以实现前端全自动打包部署,只要你提交代码到仓库, jenkins可以帮你实现前端 测试 =》 打包 =》 部署 一整个流水线
本人也是刚学docker, 欢迎指出不足之处。