背景

为了方便前端的迁移,我们把前端用到的环境生成Docker 的镜像。利用容器提供前端运行的环境。

Docker 介绍

什么是docker

Docker可以理解为一个虚拟环境,主要作用是为程序的运行提供环境。
三基本的概念:
1.镜像(image):可理解为装了运行环境的文件。如Nginx 的镜像。
2.容器(container):通过镜像生成一个容器,这个容器为我们为我们程序的运行提供环境。如通过Nginx 镜像生成一个Nginx 的容器,Vue 打包就可以放到Nginx 容器中运行。
3.仓库(repositery): 用来存放镜像(image)的。

制作Nginx 镜像

其实镜像在 仓库(repositery)中拉取出来就可以被使用了,这里的制作的意思是对镜像进行二次的配置,定制化镜像,使其拥有额外的功能。

操做流程

仓库中拉取镜像->通过Dockerfile 对镜像进行定制->运行构建命令对镜像进行构建-> 通过镜像生成容器。
下面通过制作一个容器映射端口容器内的端口到8081端口,把容器的目录挂载到data 中,实现开机自启动,并可快速拷贝迁移docker。

  1. docker seacher nginx 查看可用版本
    在这里插入图片描述

  2. docker pull nginx:latest 下载镜像

  3. docker images 查看镜像

  4. mkdir dockerfile 目录

  5. vim dockerfile 进入dockerfile 并建立dockerfile 文件

COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80 #这里的exopse 是声明端口的意思,用大写的P(docker run -d -P --name <dockerContainer> <dockerimage>) 时会随机的挂载端口。
VOLUME /etc/nginx/nginx.conf # 匿名挂载,这里的匿名挂载的意思是默认宿主机和容器的路径是一样的,可以在运行容器的时候吧宿主机的路径挂载路径重命名(docker run -d -v <宿主机>:/etc/nginx/nginx.conf <dockerContainer> <dockerimage>)
CMD ["nginx","-g","daemon off;"]
  1. docker build -t 0910nginx . 其中点“.”代表当前文件夹的上下文,为dockerfile里面的COPY提供资源。
  2. 在宿主主机中创建文件挂在的文件夹用于存放配置文件nginx.conf 和 网站资源文件
# /data/mount_dockerfile/nginx/conf/nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;


    server {
        listen       80;
        server_name  localhost;
        location / {
            root /data/liangmingblog/dist;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
网站的内容存放在
/data/mount_dockerfile/nginx/kan/
  1. 生成容器,映射端口及把宿主机文件夹挂在到docker中
docker run -d -p 8081:80 -v /data/mount_dockerfile/nginx/kan/:/data/liangmingblog/  -v /data/mount_dockerfile/nginx/conf/nginx.conf:/etc/nginx/nginx.conf --name 0910-nginx-container 0910nginx

常用命令

  1. docker ps -a | grep nginx # 查看docker容器并抓取nginx容器
  2. docker rm -f dockerId # 通过容器id强制删除容器
  3. docker rmi -f imageId # 通过镜像id 强制删除镜像
  4. docker restart dockerId #通过容器id重启容器,修改nginx.conf内容需重启docker
  5. docker logs dockerId #查看docker运行报错的日志
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐