记一次docker 部署前端项目

一、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端口

 

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值