记一次docker 部署前端项目

    xiaoxiao2022-07-05  200

    一、Docker概述:

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

    个完整的Docker有以下几个部分组成: DockerClient客户端 Docker Daemon守护进程 Docker Image镜像 DockerContainer容器 [2]

    Docker 是一个基于Linux容器(LXC-linux container)的高级容器引擎,基于go语言开发, 源代码托管在 Github 上, 遵从Apache2.0协议开源。Docker的目标是实现轻量级的操作系统虚拟化解决方案。

    学习Docker首先要了解几个概念:

    镜像—Docker的镜像和常见的系统ISO镜像类似,包含了应用程序的信息;

    容器—容器相当于一个可以运行起来的虚拟机,应用程序运行在容器中,Docker运行在“Docker”上;

    仓库—仓库是存放镜像的地方,有类似git的版本控制,同样分为公开仓库(Public)和私有仓库(Private)两种形式;

    Docker支持大部分的Linux发行版,通过使用Docker容器,就可以在不同的操作系统,

    不同的机器上运行自己的应用,不用关心硬件、运行环境之类的配置,应用程序的迁移变得非常简单。

    二、Docker和传统虚拟化技术的对比

    相比传统虚拟机技术,Docker资源占用少,启动更快,很大的方便了项目的部署和运维。 Docker是在操作系统层面上实现虚拟化,复用本地主机的操作系统,传统方式是在硬件的基础上,虚拟出多个操作系统,然后在系统上部署相关的应用。

    下面的这张图片参考相关博文,很形象的说明了Docker和VM之类的传统虚拟化技术的区别:

     vs

     

    就像一个集装箱一样,不管需要运送服装还是化工产品,还是汽车,只需要放在集装箱里面,不管到那个船上,也不管到那个铁路上,我直接机械化的搬运就行了。很简单。

    三、实践

    Linux 下的 Docker 安装与使用

    一、安装与配置

    1.安装依赖包

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2

    2.设置阿里云镜像源

    sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    3.安装 Docker-CE

    重建 Yum 缓存。

    安装 Docker-CE ,请执行一下命令进行安装:sudo yum install docker-ce

    4.启动 Docker-CE

    sudo systemctl enable docker 

    sudo systemctl start docker

    二、配置 Docker 容器与镜像

    拉取微软在 Docker 上的 aspnetcore 镜像:

    docker pull microsoft/aspnetcore

    之后执行以下命令查看是否拉取成功:docker images

    Docker 安装 Nginx

    docker pull nginx 命令安装

    nginx 部署

    首先,创建目录 nginx, 用于存放后面的相关东西。

    $ mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf

    拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录,容器 ID 可以查看 docker ps 命令输入中的第一列:

    docker cp 6dd4380ba708:/etc/nginx/nginx.conf ~/nginx/conf www: 目录将映射为 nginx 容器配置的虚拟目录。logs: 目录将映射为 nginx 容器的日志目录。conf: 目录里的配置文件将映射为 nginx 容器的配置文件。

    部署命令

    $ docker run -d -p 8082:80 --name runoob-nginx-test-web -v /root/nginx/www:/usr/share/nginx/html -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/logs:/var/log/nginx nginx

    命令说明:

    -p 8082:80: 将容器的 80 端口映射到主机的 8082 端口。

    --name runoob-nginx-test-web:将容器命名为 runoob-nginx-test-web。

    ~/nginx/www:/usr/share/nginx/html:将我们自己创建的 www 目录挂载到容器的 /usr/share/nginx/html。

    -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将我们自己创建的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf。

    -v ~/nginx/logs:/var/log/nginx:将我们自己创建的 logs 挂载到容器的 /var/log/nginx。

          将容器的 9090端口映射到了主机的默认80端口,如果你之前没有用过docker而是装了nginx直接放前端项目这里你需要注意的是你要停掉或者换掉nginx web服务指向的80端口不然会被占用,之所以我要用80 端口是因为我不想在域名后面加上端口号码

     

    然后在/nginx/conf/nginx.conf 中配置nginx相关配置

     

    相关命令

    如果要重新载入 NGINX 可以使用以下命令发送 HUP 信号到容器:

    $ docker kill -s HUP container-name

    重启 NGINX 容器命令:

    $ docker restart container-name

    Docker 常用命令

    1.拉取镜像

    docker pull

    2.删除容器

    docker rm <容器名 or ID>

    3.查看容器日志

    docker logs -f <容器名 or ID>

    4.查看正在运行的容器

    docker ps docker ps -a # 为查看所有的容器,包括已经停止的。

    5.删除所有容器

    docker rm $(docker ps -a -q)

    6.停止、启动、杀死指定容器

    docker start <容器名 or ID> # 启动容器 docker stop <容器名 or ID> # 启动容器 docker kill <容器名 or ID> # 杀死容器

    7.查看所有镜像

    docker images

    8.拉取镜像

    docker pull <镜像名:tag> # 例如以下代码 docker pull sameersbn/redmine:latest

    9.后台运行

    docker run -d <Other Parameters> # 例如 docker run -d -p 127.0.0.1:33301:22 centos6-ssh

    10.暴露端口

    # 一共有三种形式进行端口映射 docker -p ip:hostPort:containerPort # 映射指定地址的主机端口到容器端口 # 例如:docker -p 127.0.0.1:3306:3306 映射本机3306端口到容器的3306端口 docker -p ip::containerPort # 映射指定地址的任意可用端口到容器端口 # 例如:docker -p 127.0.0.1::3306 映射本机的随机可用端口到容器3306端口 docer -p hostPort:containerPort # 映射本机的指定端口到容器的指定端口 # 例如:docker -p 3306:3306 # 映射本机的3306端口到容器的3306端口

     

    最新回复(0)