SpringCloud之微服务实用篇3-docker

Posted nuist__NJUPT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud之微服务实用篇3-docker相关的知识,希望对你有一定的参考价值。

前段时间一直在改论文,不知不觉改了半个月,今天继续学习微服务的知识,今天的主要任务就是学习Docker,包括了解docker的工作原理、基本操作、Dockerfile自定义镜像,Docker-Compose对镜像进行集群部署,以及Docker镜像服务等。

目录

一、初识Docker

1.1、Docker的工作原理

1.2、Docker与虚拟机

1.3、Docker架构

1.4、Docker的安装

二、Docker基本操作

2.1、镜像命令

2.2、容器命令 

2.3、数据卷命令 

三、Dockerfile自定义镜像

3.1、镜像结构

3.2、自定义镜像

四、DockerCompose 

4.1、初识Compose

4.2、DockerCompose部署微服务集群


一、初识Docker

1.1、Docker的工作原理

Docker是一个快速交付应用和运行应用的技术,可以将程序及依赖打包成镜像,可以迁移到任意的linux系统,不同应用采用沙箱机制隔离,各个应用互不干扰。

首先看一下Docker如何解决兼容性问题的,防止不同应用的依赖之间相互干扰,一般会将依赖进行打包,然后将每个应用进行隔离起来,这样就可以避免相互干扰,当然这只针对某一个操作系统。

 不同环境的操作系统不同,Docker如何解决呢?

答:Docker镜像包含完整的运行环境,包括函数库,仅依赖系统的Linux内核等,故在不同的Linux操作系统中均可以正常运行。

下面对Docker的原理进行总结:

1.2、Docker与虚拟机

我们了解一下Docker与虚拟机的区别,docker可以理解为是一个系统的进程 ,虚拟机则是操作系统中的操作系统。docker的体积小,启动速度更快。综上:现在企业作服务部署,选择docker,而不选择虚拟机。

1.3、Docker架构

镜像:将程序、依赖、环境、配置等打包在一起。

容器:镜像运行起来就是容器,一个镜像可以有多个容器。

我们看一下Docker架构,Docker是C/S架构的程序,在客户端向服务端发送指令,服务端处理指令,操作镜像或者容器。DockerHub是一个镜像托管服务器,类似的还有阿里云镜像服务器等。

1.4、Docker的安装

如果已经安装过的docker需要卸载,可以在linux命令行输入下面指令卸载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工具。

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

更新本地镜像源,如下所示:

# 设置docker镜像源
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

输入命令安装docker,如下:

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服务

输入以下命令查看docker版本,如下:

docker -v

一般来说,docker官方的镜像仓库比较慢,因此我们配置国内的镜像仓库,如下所示:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'

  "registry-mirrors": ["https://2keavi14.mirror.aliyuncs.com"]

EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

二、Docker基本操作

2.1、镜像命令

我们先看一下docker中的一些常用命令,如下所示,其中包括构建镜像、将镜像推送到服务、从服务拉去镜像、查看镜像、删除镜像、保存镜像为一个压缩包、加载压缩包为镜像。

使用docker pull nginx 指令拉去镜像,如下:

可以通过docker images命令去查看镜像,如下:

通过docker save保存镜像为压缩包,通过docker rmi删除本地镜像。

使用docker load 指令加载压缩包为镜像,如下:

下面看一个镜像练习,如下:

上述练习涉及到的镜像指令如下,包括服务器拉去镜像,镜像打包,删除本地镜像,重新加载压缩包为本地镜像。

2.2、容器命令 

我们首先看一下容器相关的命令有哪些,如下所示,容器相关的命令包括运行、停止,暂停、进入容器、查看容器日志、查看所有运行的容器及状态等。

我们首先来看一个案例,创建一个运行的Nginx容器,命令如下所示:

创建nginx容器,浏览器访问,查看容器,并打印容器日志。

进入容器内部,完成命令修改,我们看一下下面的案例。

 docker容器相关命令的一个小总结如下:

需要先输入指令创建一个redis容器,如下所示。

$ docker run --name mr -p 6379:6379 -d redis redis-server --save 60 1 --loglevel warning

然后 进入容器进行操作如下:

2.3、数据卷命令 

容器与数据存在耦合问题,所以我们需要学习数据卷,容器与数据的耦合导致了不便于修改,数据不复用,升级维护困难等问题。

 docker数据卷操作的常见命令如下所示,具体包括:创建、显示、列出 、删除数据卷等。

下面对数据卷的作用做一个总结,数据卷是将容器与数据进行分离,方便操作容器内的数据,保证数据安全,常用的数据卷操作命令如下所示:

 

下面看一下数据卷挂载案例1,将数据卷挂在到容器中,如下:其中-v是数据卷挂在指令,-v前面是数据卷的名称,后面是数据卷挂在到的目录,如果容器运行中volume不存在,docker会自动创建,如下:

最后,对于数据卷挂在做个总结吧,具体如下:

 

三、Dockerfile自定义镜像

3.1、镜像结构

镜像是将一系列依赖、程序、配置进行打包所组成的应用程序,镜像是分层结构,主要包括基础镜像层和入口层,中间的各层是每次操作后产生的层次。

3.2、自定义镜像

我们先了解一下Dockerfile,它是一个文本文件,包含许多指令,来说明执行什么操作来构建镜像,每个指令都会形成一个layer,常见的指令包括FROM、ENV、COPY、RUN、EXPOSE等

四、DockerCompose 

4.1、初识Compose

什么是DockerCompose呢,它是用来帮我们快速部署分布式应用的,不需要手动一个个去创建容器,它是一个文本文件,通过指令定义集群中的每个容器 如何运行。

 可以直接使用如下指令进行下载安装,不过比较慢。

# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /u

也可以直接把下载好的docker-compose文件上传到上传到 /usr/local/bin/ 目录也可以。

然后修改文件权限。

# 修改权限
chmod +x /usr/local/bin/docker-compose

最后可以加上bash自动补全命令,这样输入相关操作会自动补全。

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /et

4.2、DockerCompose部署微服务集群

我们看一下如下案例,使用DockerCompose部署之前的微服务项目,具体如下:

以上是关于SpringCloud之微服务实用篇3-docker的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud之微服务实用篇1

SpringCloud之微服务实用篇1

SpringCloud之微服务实用篇2

SpringCloud之微服务实用篇2

SpringCloud之微服务实用篇3-docker

SpringCloud之微服务实用篇3-docker