微服务—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简介

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

微服务—Docker(部署)插图

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

微服务—Docker(部署)插图1

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

系统得底层逻辑

微服务—Docker(部署)插图2

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

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

微服务—Docker(部署)插图3

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

微服务—Docker(部署)插图4

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

微服务—Docker(部署)插图5

1.2 docker与虚拟机的区别

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

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

微服务—Docker(部署)插图6

1.3 docker架构

主要是镜像和容器

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

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

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

微服务—Docker(部署)插图7

微服务—Docker(部署)插图8

微服务—Docker(部署)插图9

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

微服务—Docker(部署)插图10

1.4 安装docker

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

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

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

yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine \ docker-ce

安装docker:

yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 --skip-broken

更新本地镜像源:

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

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

输入命令安装:

yum install -y docker-ce

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

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

# 关闭 systemctl stop firewalld # 禁止开机启动防火墙 systemctl disable firewalld

通过命令启动docker;

systemctl start docker #启动docker systemctl stop docker #停止docker systemctl restart docker #重启docker systemctl status dockers #查看docker状态 

查看docker版本

docker -v

微服务—Docker(部署)插图11

配置镜像

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

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

微服务—Docker(部署)插图12

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon. json <<-'EOF' { "registry-mirrors":[" https://d6g8dchp.mirror.aliyuncs.com "] } EOF sudo systemctl daemon-reload sudo systemctl restart docker

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

2. docker基本操作

2.1 镜像操作

微服务—Docker(部署)插图13

微服务—Docker(部署)插图14

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

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

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

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

微服务—Docker(部署)插图15

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

微服务—Docker(部署)插图16

docker pull nginx 为拉取最新的版本

微服务—Docker(部署)插图17

打包:(应用–help)

微服务—Docker(部署)插图18

微服务—Docker(部署)插图19

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

微服务—Docker(部署)插图20

2.2 docker容器相关

微服务—Docker(部署)插图21

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

微服务—Docker(部署)插图22

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

微服务—Docker(部署)插图23 53cb是每个运行的容器id 都是唯一的

通过docker ps 可以看到

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

微服务—Docker(部署)插图24

微服务—Docker(部署)插图25 需要用到sed修改到其中几项(后面基本用不到,也不方便)主要的命令是:

docker exec -it 名字 bash

微服务—Docker(部署)插图26

2.3 数据卷

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

微服务—Docker(部署)插图27

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

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

微服务—Docker(部署)插图28

微服务—Docker(部署)插图29 会 dockers volume –help 就行

微服务—Docker(部署)插图30

微服务—Docker(部署)插图31

微服务—Docker(部署)插图32

2.3.1 挂载数据卷

微服务—Docker(部署)插图33

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

微服务—Docker(部署)插图34

微服务—Docker(部署)插图35

通过宿主文件挂载

微服务—Docker(部署)插图36

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

微服务—Docker(部署)插图37

两种挂载对比:

通过volume挂载:

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

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

通过目录挂载:

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

微服务—Docker(部署)插图38


3.自定义镜像

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

微服务—Docker(部署)插图39

3.1 镜像得结构

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

拿mysql举例:

微服务—Docker(部署)插图40

微服务—Docker(部署)插图41

3.2 dockerfile

微服务—Docker(部署)插图42

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

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

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

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

去浏览器访问即可。

也可以通过alpine来操作

微服务—Docker(部署)插图43

微服务—Docker(部署)插图44 4.dockercompose

4.1 dockercompose是什么及下载

微服务—Docker(部署)插图45

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

微服务—Docker(部署)插图46

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

下载方式:

可以去官方文档下载

微服务—Docker(部署)插图47

微服务—Docker(部署)插图48

x是文件控制权

微服务—Docker(部署)插图49

绿色代表可以执行。

微服务—Docker(部署)插图50

自动补全,可以有提示。

微服务—Docker(部署)插图51

4.2 部署微服务集群

微服务—Docker(部署)插图52

微服务—Docker(部署)插图53

微服务—Docker(部署)插图54

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

docker-compose logs -f 查看日志

docker-compose ps 看运行

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

5 Docker镜像仓库

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

搭建

推送

拉取

微服务—Docker(部署)插图55

微服务—Docker(部署)插图56 私有仓库主要注重得是隐私和安全。

微服务—Docker(部署)插图57

微服务—Docker(部署)插图58

微服务—Docker(部署)插图59

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

微服务—Docker(部署)插图60 然后将ui命令复制到mkdir docker-ui touch docker-compose.yml 中

docker-compose up -d #启动

docker-compose logs -f #查看日志

微服务—Docker(部署)插图61

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

私有仓库的样子:

微服务—Docker(部署)插图62

微服务—Docker(部署)插图63

原文链接:https://blog.csdn.net/xujiangyu1/article/details/128880768?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171836884016800182130287%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171836884016800182130287&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-5-128880768-null-null.nonecase&utm_term=docker%E9%83%A8%E7%BD%B2

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享