docker现在作为最热门的部署技术之一,作为一个前端也是有必要学习哒!
enmmmmm,不过作为一个前端,加上公司也很少用docker,接触的机会实在太少了,根本没有实操机会啊喂,这两天盲人摸🐘般的搞了点皮毛,写下一点点心得:
什么是docker
一套开源的、可以搭建虚拟环境的应用容器引擎。特点是隔离化、容器化。
docker是干啥用的
通过docker,可以把本地的运行环境移植到一个镜像中,在服务器端就可以直接用上这套环境来进行部署,省去了不同环境之间的转换和不兼容。
所以,从作用上来看,似乎和虚拟机有点像。
docker的优点
比虚拟机而言,docker启动迅速,开箱即用;内存占用少
docker的安装
安装方法网上一搜一大堆,我的电脑是macOS系统,可以直接用homebrew安装,或者也可以手动去官网下载安装包
docker的核心概念
- 镜像
镜像是docker的地基,docker官方也有专门的镜像库,提供容器运行时所需的运行环境;
相关命令:
列出本地镜像列表docker images
获取镜像docker pull xxx
查找镜像docker search xxx
删除镜像docker rmi xxx
更新/提交镜像docker commit -m=? -a=? 容器id xxx
- 容器
容器是镜像的实例,只有把镜像容器化了才可以在本地使用;
相关命令:(xxx代表镜像名)
查看运行中容器docker ps
创建容器docker run [OPTIONS] xxx [COMMAND]
OPTIONS说明:
-d 后台运行容器
-i 交互模式运行
-t 为容器分配一个伪输入终端
-p 指定端口映射,格式主机端口:容器端口
-P 随机端口映射
–name 为容器指定名称
-v 绑定卷,一般用于数据传输
上面都是常用的参数,不常用的就不列举了,可以找文档看;此外,-d,-t,-i可以合并写,比如-it,-itd
举例:
使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginxdocker run -d --name mynginx -d nginx:latest
使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。docker run -d -p 80:80 -v /data:/data nginx:latest
此外,容器和容器之间也可以进行互联,方法是先建立一个docker网络docker network create -d bridge test-net
之后创建两个或多个容器,用–network test-net来加入该网络
- 仓库
仓库是集中存放镜像的地方,官方有Docker Hub
那么身为一个前端,部署方面最先要接触的必须是nginx,接下来就以nginx的部署为例
拉取nginx镜像:docker pull nginx:latest
运行一个nginx容器:docker run --name nginx-test -p 80:80 -d nginx
运行完后看本地ip能否访问,如成功应该出现’Welcome to nginx!’页面(这里我用的8081端口,因为80端口被占用了)
之后我们进入该容器docker exec -it 容器id bash
nginx容器的默认nginx存放地址为/usr/share/nginx/html/index.html,理论上我们直接把前端包放进去就ok了。
但是如何把本机文件拷贝到容器里呢?
两种方法:
通过映射:
docker run --name nginx-blog -p 80:80 -d -v /Users/lidong/Documents/blog/public:/usr/share/nginx/html nginx:latest
这里我是直接把本机的前端包映射到容器对应的nginx目录,简单粗暴。进一步配置,通过dockerfile
Dockerfile是docker的一个统一配置文件,类似于nginx的nginx.conf,用来配置一个自定义的镜像.
我们在本地创建一个Dockerfile文件夹,里面有一个Dockerfile文件.mkdir Dockerfile
touch Dockerfile
然后在/Dockerfile/创建web文件夹,在/Dockerfile/web/创建front文件夹,然后把前端dist拖到/Dockerfile/web/front/。
编辑Dockerfile:
FROM nginx:latest
COPY /web/front/dist /usr/share/nginx/html
这两条指令的意思是我们自定义的这个镜像,基于nginx:latest,然后复制本地/web/front/dist文件到容器/usr/share/nginx/html目录
关于Dockerfile的指令,可参照这篇文章:https://www.runoob.com/docker/docker-dockerfile.html
之后进入Dockerfile文件夹,开始构建镜像:docker build -t web-front:latest .
//创建一个名称标签为web-front:latest的镜像
输入docker images查看镜像
运行容器docker run -itd --name web-front-1 -p 80:80 web-front bash
进入容器docker exec -it 容器id bash
运行/usr/sbin/nginx
开启nginx服务
好了,可以访问了~
参考文章: