dockerの小试牛刀


docker现在作为最热门的部署技术之一,作为一个前端也是有必要学习哒!
enmmmmm,不过作为一个前端,加上公司也很少用docker,接触的机会实在太少了,根本没有实操机会啊喂,这两天盲人摸🐘般的搞了点皮毛,写下一点点心得:

什么是docker

一套开源的、可以搭建虚拟环境的应用容器引擎。特点是隔离化、容器化。

docker是干啥用的

通过docker,可以把本地的运行环境移植到一个镜像中,在服务器端就可以直接用上这套环境来进行部署,省去了不同环境之间的转换和不兼容。
所以,从作用上来看,似乎和虚拟机有点像。

docker的优点

比虚拟机而言,docker启动迅速,开箱即用;内存占用少

docker的安装

安装方法网上一搜一大堆,我的电脑是macOS系统,可以直接用homebrew安装,或者也可以手动去官网下载安装包

docker的核心概念

  1. 镜像
    镜像是docker的地基,docker官方也有专门的镜像库,提供容器运行时所需的运行环境;
    相关命令:
    列出本地镜像列表 docker images
    获取镜像 docker pull xxx
    查找镜像 docker search xxx
    删除镜像 docker rmi xxx
    更新/提交镜像 docker commit -m=? -a=? 容器id xxx
  2. 容器
    容器是镜像的实例,只有把镜像容器化了才可以在本地使用;
    相关命令:(xxx代表镜像名)
    查看运行中容器 docker ps
    创建容器 docker run [OPTIONS] xxx [COMMAND]
    OPTIONS说明:
    -d 后台运行容器
    -i 交互模式运行
    -t 为容器分配一个伪输入终端
    -p 指定端口映射,格式主机端口:容器端口
    -P 随机端口映射
    –name 为容器指定名称
    -v 绑定卷,一般用于数据传输
    上面都是常用的参数,不常用的就不列举了,可以找文档看;此外,-d,-t,-i可以合并写,比如-it,-itd
    举例:
    使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx
    docker 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来加入该网络

  1. 仓库
    仓库是集中存放镜像的地方,官方有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了。
但是如何把本机文件拷贝到容器里呢?

两种方法:

  1. 通过映射:
    docker run --name nginx-blog -p 80:80 -d -v /Users/lidong/Documents/blog/public:/usr/share/nginx/html nginx:latest
    这里我是直接把本机的前端包映射到容器对应的nginx目录,简单粗暴。

  2. 进一步配置,通过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服务

好了,可以访问了~

参考文章:


文章作者: Li Dong
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Li Dong !
评论
  目录