当前位置:   article > 正文

微服务—Docker(部署)_docker部署微服务

docker部署微服务

目录

1.初识docker

1.1docker简介

 1.2    docker与虚拟机的区别

 1.3 docker架构

 1.4 安装docker

2. docker基本操作

2.1 镜像操作

2.2 docker容器相关

 2.3 数据卷

3.自定义镜像

 3.1 镜像得结构

3.2 dockerfile 

​编辑 4.dockercompose

4.1 dockercompose是什么及下载

4.2 部署微服务集群 

 5 Docker镜像仓库


1.初识docker

1.1docker简介

大型项目中组件比较多,运行环境也较复杂,部署时会碰到一些问题。

nodejs redis mysql等都会部署到服务器linux等操作系统上 而这些应用都会有一些依赖,函数库等,这些依赖函数库都会有一些差异,调试好得开发环境还不适用于测试,生产等环境,所以通过docker来解决这些部署得问题。

通过docker将运行环境一起打包(函数库,依赖,配置等),仅限于同一操作系统。

系统得底层逻辑

 内核通过简单得指令调用计算机硬件 系统应用(ubungtu centos)它会将系统应用组装在封装行程一个函数组成函数库 程序员通过函数库调用指令 指令调用硬件。

所以系统不同函数库也不相同 无法跨系统运行。

 docker直接打包函数库 可以说只要是linux都可以。

总结一下 docker就是一个快速交付,运行应用的技术。

 1.2    docker与虚拟机的区别

hypervisor 可以模拟各种计算机的硬件,所以可以模拟各种系统从而实现虚拟机。

docker直接调用操作系统内核所以它的执行性能要比虚拟机好很多。

 1.3 docker架构

主要是镜像和容器

镜像(Image):docker将应用程序及其所需的依赖,函数库,环境,配置等文件打包,称为镜像

容器(container):镜像中的应用程序运行后形成的进程就是容器,只有docker会对容器隔离,对外部可见。

隔离的目的是不污染镜像文件 ,如写的数据,日志等之存在于自己的容器中

 

 

 mysql nginx这些其实去官方文档pull就可以 不用自己创建除非是私人的应用。

 1.4 安装docker

docker分为ce和ee 两个版本  ce为社区版(免费支持7个月),ee企业版,强调安全,付费使用支持24个月。

centos 上安装docker  docker ce支持64位版本的centos 7 ,并且要求内核版本不低于3.10,centos 7 满足地内核的要求,所以我们在centos 7安装docker。

卸载(如果有的情况下):

  1. yum remove docker \
  2. docker-client \
  3. docker-client-latest \
  4. docker-common \
  5. docker-latest \
  6. docker-latest-logrotate \
  7. docker-logrotate \
  8. docker-selinux \
  9. docker-engine-selinux \
  10. docker-engine \
  11. docker-ce

安装docker:

  1. yum install -y yum-utils \
  2. device-mapper-persistent-data \
  3. lvm2 --skip-broken

更新本地镜像源:

(因为默认下载是在国外的网站,速度较慢 所以通过yum工具配置安装仓库 在阿里云)

  1. yum-config-manager \
  2. --add-repo \
  3. https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  4. sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
  5. yum makecache fast

输入命令安装:

yum install -y docker-ce

docker应用需要用到各种端口,逐一去修改防火墙设置,很麻烦所以在此直接关闭防火墙。

启动docker前,一定要关闭防火墙!!!

  1. # 关闭
  2. systemctl stop firewalld
  3. # 禁止开机启动防火墙
  4. systemctl disable firewalld

通过命令启动docker;

  1. systemctl start docker #启动docker
  2. systemctl stop docker #停止docker
  3. systemctl restart docker #重启docker
  4. systemctl status dockers #查看docker状态

查看docker版本

docker -v

配置镜像

docker官方镜像仓库网速较差,我们需要设置国内镜像:

参考阿里云的镜像加速文档:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 

  1. sudo mkdir -p /etc/docker
  2. sudo tee /etc/docker/daemon. json <<-'EOF'
  3. {
  4. "registry-mirrors":[" https://d6g8dchp.mirror.aliyuncs.com "]
  5. }
  6. EOF
  7. sudo systemctl daemon-reload
  8. sudo systemctl restart docker

 创建一个文件 将网址写入daemon.json     重新加载 重启docker

2. docker基本操作

2.1 镜像操作

 

 本地有的话 用 docker build  从服务器拉取的话用pull 大多数都是pull  

U盘copy的话用 docker save  加载的话 用docker load

docker --help  就是关于docker的所有命令

详细的 镜像命令的话为 docker images --help

 下载镜像的话 去dockerhub 官网搜索相关的镜像即可 如nginx:

docker pull nginx 为拉取最新的版本  

打包:(应用--help)

 

  1. docker save -o nginx.tar nginx:latest #打包
  2. docker rmi nginx #删除 
  3. docker images #查看
  4. docker load -i nginx.tar #加载

2.2 docker容器相关

 停止是直接杀死进程  暂停暂时挂起还可以使用

因为每个容器都是相对隔离的 外界无法访问 只有通过映射的方式

 53cb是每个运行的容器id 都是唯一的 

通过docker ps 可以看到

容器id   容器   命令  创建时间  状态  端口

 需要用到sed修改到其中几项(后面基本用不到,也不方便)主要的命令是:

docker exec -it 名字 bash

 2.3 数据卷

针对于2.2修改内容麻烦的问题 还有数据不可复用,升级维护困难等所以这里需要数据卷。

数据卷(volume):是一个虚拟目录,指向主机文件系统中的某个目录。

(个人理解就是 数据卷搭桥 把宿主中的文件和容器中的相关联,直接改宿主机文件即可 使得可以便于修改升级) 

 会 dockers volume --help 就行

 2.3.1 挂载数据卷

 通过 -v volume:容器内的地址     即可修改  修改文件时可以用文件编译器直接修改不用vim

  

通过宿主文件挂载

 去 hub.docker.com 官方文档搜索mysql 就会有如下的各种文档 使用方法 文件位置等:

两种挂载对比:

通过volume挂载:

优点:使用数据卷时 docker会帮我们创建目标目录,docker挂载只需要挂载到卷上即可。不需要关心目录的位置。属于全权交给docker处理不用我们操心。

缺点:目录不是我们创建在哪里也不知道,去找比较麻烦。

通过目录挂载:

自己创建文件 位置清楚,将来定位文件一目了然。 偏麻烦一点。


3.自定义镜像

        之前使用得都是dockerhub官方制作得镜像 mysql nginx redis等 但是自己私人得java -jar项目只有自己制作与推送所以以下是关于自定义镜像得内容。

 

 3.1 镜像得结构

镜像:镜像是将应用程序,还有应用所需要得系统函数库,配置,环境,依赖打包而成。

拿mysql举例:

 

3.2 dockerfile 

  1. # 指定基础镜像
  2. FROM ubuntu:16.04
  3. # 配置环境变量,JDK的安装目录
  4. ENV JAVA_DIR=/usr/local
  5. # 拷贝jdk和java项目的包
  6. COPY ./jdk8.tar.gz $JAVA_DIR/
  7. COPY ./docker-demo.jar /tmp/app.jar
  8. # 安装JDK
  9. RUN cd $JAVA_DIR \
  10. && tar -xf ./jdk8.tar.gz \
  11. && mv ./jdk1.8.0_144 ./java8
  12. # 配置环境变量
  13. ENV JAVA_HOME=$JAVA_DIR/java8
  14. ENV PATH=$PATH:$JAVA_HOME/bin
  15. # 暴露端口
  16. EXPOSE 8090
  17. # 入口,java项目的启动命令
  18. ENTRYPOINT java -jar /tmp/app.jar

一目了然步骤很清晰 从 from得基础镜像 环境变量得目录  到最后启动。

修改只需更改第八行得包名即可。

  1. systemctl start docker #启动docker
  2. docker build -t javaweb:1.0 . #-t表示版本 后面得" ."代表当前目录。
  3. docker images #查看当前得镜像
  4. docker run --name javaweb -p 8090:8090 -d javaweb:1.0 #启动
  5. docker ps #查看当前得进程(容器)

       去浏览器访问即可。

也可以通过alpine来操作

 4.dockercompose

4.1 dockercompose是什么及下载

 DockerCompose就是把Docker run得各种指令转换成指令去定义

 

 上图左右可以一一对应 也可以去官网文档查看。

下载方式:

可以去官方文档下载

x是文件控制权  

绿色代表可以执行。

 自动补全,可以有提示。

 

4.2 部署微服务集群 

 

通过docker-compose up -d 后台运行  stop  restart  down等命令

docker-compose logs -f 查看日志

docker-compose ps   看运行

主要是docker compose得编写(图二) 

 5 Docker镜像仓库

管理镜像得仓库。无论是官方得镜像还是我们私有得java镜像。

搭建

推送

拉取

 私有仓库主要注重得是隐私和安全。

图形化是依赖于官方registry得基础上个人编写得,是一个额外得服务 ,所以我们通过docker compose 将两者组合部署

 然后将ui命令复制到mkdir docker-ui  touch docker-compose.yml 中

docker-compose up -d   #启动

docker-compose logs -f  #查看日志

  

向私有仓库推送 必须先tag 改成带有私有仓库地址/名称:版本号的形式。

私有仓库的样子:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/47920
推荐阅读
相关标签
  

闽ICP备14008679号