文章目录

  • Docker简介
    • Docker为什么出现?
    • 安装Docker
    • 阿里云镜像加速
      • 找到镜像加速器
      • 配置使用
    • 回顾HelloWorld流程
      • 底层原理
    • Docker的常用命令
  • 部署项目
    • 1、安装docker
    • 2、安装Docker-Compose
    • 3、编写相关配置文件
      • Docker-Compose.yml
      • 编写Dockerfile
      • 编写Nginx的配置
    • 4、打包
      • 前端
      • 后端

Docker简介

Docker为什么出现?

一款产品: 开发–上线 两套环境!应用环境,应用配置!
开发 — 运维。 问题:我在我的电脑上可以运行!版本更新,导致服务不可用!对于运维来说考验十分大!
环境配置是十分的麻烦,每一个机器都要部署环境(集群Redis、ES、Hadoop…) !费事费力。
之前在服务器配置一个应用的环境 Redis MySQL JDK ES Hadoop 配置超麻烦了,不能够跨平台。
开发环境Windows,最后发布到Linux!
传统:开发jar,运维来做!
现在:开发打包部署上线,一套流程做完!
docker流程: java-jar(环境) — 打包项目帯上环境(镜像) — ( Docker仓库:商店)-----下载我们发布的镜像直接运行即可!
在容器技术出来之前,我们都是使用虚拟机技术!
虚拟机:在window中装一个VMware,通过这个软件我们可以虚拟出来一台或者多台电脑!笨重!
虚拟机也属于虚拟化技术,Docker容器技术,也是一种虚拟化技术!

VMware : linux centos 原生镜像(一个电脑!) 隔离、需要开启多个虚拟机! 几个G 几分钟
docker: 隔离,镜像(最核心的环境 4m + jdk + mysql)十分的小巧,运行镜像就可以了!小巧! 几个M 秒级启动!

之前的虚拟机技术

虚拟机技术缺点

1、 资源占用十分多

2、 冗余步骤多

3、 启动很慢!

容器化技术

容器化技术不是模拟一个完整的操作系统


比较Docker和虚拟机技术的不同

  • 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
  • 容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了
  • 每个容器间是互相隔离每个容器内都有一个属于自己的文件系统,互不影响

镜像(image)

docker镜像就好比是一个目标,可以通过这个目标来创建容器服务,tomcat镜像==>run==>容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。

容器(container):

Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的.
启动,停止,删除,基本命令
目前就可以把这个容器理解为就是一个简易的 Linux系统。

仓库(repository):

仓库就是存放镜像的地方!
仓库分为公有仓库和私有仓库。(很类似git)
Docker Hub是国外的。
阿里云…都有容器服务器(配置镜像加速!)

安装Docker

  • xshell或者堡塔终端连接远程服务器,连接需要我们服务器的公网ip+服务器密码

1、yum 包更新到最新

yum update

2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

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

3、 设置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4、 安装docker,出现输入的界面都按 y

yum install -y docker-ce

5、 查看docker版本,验证是否验证成功

docker --version

6、启动docker

/bin/systemctl start docker.service

7、设置镜像的仓库

yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
#上述方法默认是从国外的,不推荐#推荐使用国内的
yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

8、 测试
docker run hello-world

9、查看已经下载的镜像(从这里可以查看已有镜像的id)

[root@iz2zeak7sgj6i7hrb2g862z ~]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
hello-world           latest              bf756fb1ae65        4 months ago      13.3kB

卸载docker

#1. 卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
#2. 删除资源,主机上的映像,容器,卷或自定义配置文件不会自动删除
rm -rf /var/lib/docker
# /var/lib/docker 是docker的默认工作路径!
rm -rf /var/lib/containerd

阿里云镜像加速

找到镜像加速器

配置使用

#1.创建一个目录
sudo mkdir -p /etc/docker#2.编写配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://9cq9ab7f.mirror.aliyuncs.com"]
}
EOF#3.重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker

回顾HelloWorld流程

docker run 流程图

底层原理

Docker是怎么工作的

Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上(服务)。通过Socket从客户端访问!

Docker-Server接收到Docker-Client的指令,就会执行这个命令!

[外

为什么Docker比Vm快
1、docker有着比虚拟机更少的抽象层。由于docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。
2、docker利用的是宿主机的内核,而不需要Guest OS。

GuestOS: VM(虚拟机)里的的系统(OS)HostOS:物理机里的系统(OS)

因此,当新建一个 容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。仍而避免引导、加载操作系统内核返个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载GuestOS,返个新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了这个复杂的过程,因此新建一个docker容器只需要几秒钟

Docker的常用命令

$ docker ps // 查看所有正在运行容器
$ docker stop containerId // containerId 是容器的ID
$ docker ps -a // 查看所有容器 $ docker ps -a -q // 查看所有容器ID
$ docker stop $(docker ps -a -q) //  stop停止所有容器
$ docker rm $(docker ps -a -q) //   remove删除所有容器
$ docker ps -a:查看已经运行的docker镜像
$ docker exec -it imagename(镜像名称) bash
$ service mysql status 查看mysql的启动状态
$ docker rm -f mysql(容器名称): 删除容器
$ 设置数据库root密码:docker run -name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=数据库密码 mysql
$ docker start :启动一个或多个已经被停止的容器
$ docker stop :停止一个运行中的容器
$ docker restart :重启容器
$ netstat -anp |grep 3306 :查看端口
$ docker stats  :查看docker容器使用内存情况  查看cpu状态

部署项目

  • 如果不是前后端分离直接导入jar其实也可以
  • 部署之前的练手博客springboot+vue

由于前后端分离所以用nginx来部署vue,后端直接导入jar包即可,redis和mysql可以直接用服务器中的,也可以导入容器内部做一个端口映射,在容器里面使用

1、安装docker

2、安装Docker-Compose

这个相当于是一个容器的方法,执行Docker-Compose up根据docker-Compose.yml来执行里面的容器

1、安装

curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

去到安装目录检查:下载成功!

2、设置文件可执行权限

sudo chmod +x /usr/local/bin/docker-compose

3、查看版本信息

docker-compose -version

3、编写相关配置文件

  • html(目录):存放我们Vue的前端项目打包后的结果!
  • nginx.conf : 我们Nginx的核心配置
  • blog-api…:我们的后端的Spriongboot项目打的jar包
  • docker-compose.yml:我们Docker-Compose的核心配置文件
  • Dockerfile:我们的Springboot项目,无法直接在DockerHub拉取,需要借助其built镜像

Docker-Compose.yml

  • 注意格式,缩进问题,一级空格只能有一个
version: '3'
services:nginx: #服务名称image: nginx:latestports:- 80:80volumes: - /root/nginx/html:/usr/share/nginx/html  #挂载:前面是挂载到哪儿,后面是nginx得配置目录- /root/nginx/nginx.conf:/etc/nginx/nginx.confprivileged: true   #解决nginx得文件调用权限的问题vueblog:image: vueblog:latestbuild: .ports:- 8888:8888
  • 由于我直接用服务器的redis和mysql,所以这里边没有配置redis和mysql

编写Dockerfile

Dockerfile 就是用来构建docker镜像的构建文件!命令脚本!

通过这个脚本可以生成镜像,镜像是一层一层的,脚本是一个个的命令,每个命令都是一层!

FROM java:8
EXPOSE 8888
ADD blog-api-1.0-SNAPSHOT.jar app.jar   #前半部分,自己项目打包后的名称!
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar","--spring.profiles.active=prod"]

编写Nginx的配置

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   /usr/share/nginx/html;try_files  $uri  $uri/  /index.html last;  #千万加上!index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

4、打包

前端

执行npm run dev,在dist下把这两放到html下即可

后端

reids设置

关闭保护

redis密码

数据库设置

sqlyog连接服务器数据库

打包

直接放到root下

然后直接启动

docker-compose up
docker0compose up -d # 后台启动 让网站一直启动

参考
Docker-Compose + Nginx 部署前后端分离项目
教你Docker+nginx部署SpringBoot+vue前后端分离项目
使用docker部署springboot项目并连接上mysql数据库

上线项目 Docker部署项目到服务器总结相关推荐

  1. IDE工具(45) idea使用Docker部署项目到服务器的全过程

    一.前言 温馨小提示: 案例源码demo放文章最后了 基本环境 idea CentOS7.3服务器 docker springboot项目 二.服务器配置docker远程连接 可参考小编的另外一篇文章 ...

  2. 【7】idea集成docker部署项目

    [7]idea集成docker部署项目 一.修改docker配置 1.1 修改服务器docker.service服务信息 允许其他主机远程访问服务器的docker vim /usr/lib/syste ...

  3. (四)docker部署项目

    docker部署项目 基于ubuntu16.4+python3的flask web项目,使用gunicorn启动,项目运行时需要加载一些动态链接库,并且项目在运行时需要多个后缀为.vpo的授权文件,项 ...

  4. Python【算法中心 03】Docker部署Django搭建的Python应用流程实例(Docker离线安装配置+Django项目Docker部署)

    1.Docker离线安装配置 rpm版本安装 # 系统版本 rpm -qi centos-release Name : centos-release Version : 8.1 Release : 1 ...

  5. vue项目打包部署到服务器,Vue项目打包部署到apache服务器的方法步骤

    vue项目在开发环境下,让项目运行起来,是通过npm run dev命令,原理是在本地搭建了一个express服务器. 但是在服务器上就不是这样的,必须要通npm run build命令来对整个项目进 ...

  6. docker部署项目自动化脚本

    docker部署项目脚本,脚本会完成容器停止,删除,镜像删除,镜像构造,运行容器等一系列操作 该脚本配合jenkins使用,真的舒服 #!/bin/bash echo "开始执行脚本&quo ...

  7. Linux centos7 docker部署gitlab私有服务器

    Docker部署gitlab私有服务器,那么,这里必须要有两个软件啦,一个是Docker,一个是gitlab.鉴于很多同学还是不太了解这两个东西,并且观看了不少的其他大神的相关博客,发现对于Docke ...

  8. 如何将Java项目打包部署到Linux服务器进行访问

    1. 什么是Docker? Docker 是一个开源项目,诞生于 2013 年初, 初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 ...

  9. vue项目打包部署linux_Vue项目打包部署到Nginx服务器

    "随着前后端分离项目的流行,vue项目开发部署也成为了前端人员必备技能:本文将带你学习vue项目部署及遇到的各种坑." 关于vue项目部署不得不提的是配置文件vue.config. ...

最新文章

  1. 阿里云如何将服务器添加至跳板机,如何将服务器添加至jumpsever
  2. 数字经济时代,算力到底有多重要?
  3. QC中设置组权限-隐藏筛选器
  4. Python 爬取简单网页
  5. DL之RBM:基于RBM实现手写数字图片识别提高准确率
  6. 【研发管理】中国企业 VS 世界优秀企业在产品研发上差距(下)
  7. 力扣1103.分糖果
  8. 互联网行业哪个职位比较有前途?
  9. 什么是存储过程,存储过程的作用及好处
  10. iOS -[JYBDScanCardManage configIDScan] in JYBDScanCardManage.o等静态库问题
  11. SpringMVC简单映射请求参数介绍
  12. 碰撞检测——碰撞器和物理材质
  13. 注意力(Attention)
  14. android studio 圆形头像,Android Studio实现带边框的圆形头像
  15. 如何通过微信小程序进行更加有效的电商营销?
  16. Cauchy-Schwarz Inequality
  17. AcWing2022寒假每日一题(1 月 2 日 ~ 1 月 15 日)
  18. Java --- 线程同步和异步的区别
  19. java mysql SSM实现的校园门户平台网站系统源码+含开题报告与需求分析+包安装配置
  20. 互联网因特网计算机网络的区别,因特网和互联网的区别?

热门文章

  1. scratch编程密室逃脱
  2. 机器学习 28 个视频教程
  3. vue+播放直播视频流(websocket的流文件)
  4. 电商系统-优惠券叠加规则、优惠分摊介绍(三)
  5. 使用NtCreateThreadEx将Dll注入目标进程
  6. 纳斯达克Linq利用区块链改造私有股权交易平台
  7. java分布式免费开源搜索引擎 Elasticsearch 详细学习笔记
  8. 淘宝天猫店招空白间隔去除
  9. java解决数独_Java解决“数独”之三
  10. 看几个拿到外企offer的故事... 送你一套免费英语资料(价值1899)