docker的好处,为什么使用docker来部署服务器

docker的好处,为什么使用docker来部署服务器,第1张

Docker的使用

Docker是一个轻量级的虚拟化解决方案,你可以实现秒级的虚拟机启动、非常轻量级的虚拟化。个人使用理解看来,它可以实现一个类似于版本管理Git一样的轻量化的状态保存。

Docker有两个非常重要的概念: 镜像容器

镜像是呈载容器的实体,所有容器都是运行在镜像之上。用版本管理的角度来看,镜像就像是某一个节点,它可以派生出不同的分支,你可以在不同分支上做不同的事情。可以想象成一棵树,最基本的镜像是主树干,主树干可以分出旁支树干,而旁支树干可以分出更细的旁支,而树干上可以生长树枝。

比如,你使用Docker,从官方仓库下载一个ubuntu镜像,把它作为最基础的镜像。然后在上面运行一个容器,这个容器里下载Nginx,再以这个容器为基础生成一个新的镜像,以后这个镜像生成的容器就都是ubuntu+nginx为基础。但是你工作环境可能需要你使用Apache来工作,你也想有一个ubuntu+apache为基础的镜像,于是你可以使用最基础的ubuntu镜像运行一个容器,在里面下载安装Apache,然后以这个容器为基础,保存一个ubuntu+apache的镜像,以后在这个镜像基础上运行的所有容器都拥有了一个apache环境。

安装失败,安装后无法启动,安装后无法访问Docker,安装时缺少所需的依赖项,根据查询PHP中文网显示。

1、安装失败,是因为操作系统版本不兼容导致的,在安装Docker之前,请仔细阅读Docker的系统要求,并确保您的操作系统符合要求。

2、安装后无法启动,是因为和其他应用程序的冲突、操作系统设置的问题导致的,应该检查Docker的日志文件,调整系统设置,关闭后台应用即可。

3、安装后无法访问Docker,是因为IP地址或端口设置不正确导致的,应该使用正确的IP地址和端口,网络连接是正常的,防火墙设置无误。

4、安装时缺少所需的依赖项,在安装Docker时需要特定的依赖项,先查看Docker的系统要求依赖项,并下载安装。

5、以上即时绿云的服务器无法安装docker的原因和解决方法。

Docker 是一个开源的 应用容器引擎 ,让 开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化 。容器是完全使用沙箱机制,相互之间不会有任何接口。

由于本地开发好的程序往往都需要部署到服务器上进行运行,这就导致了程序需要运行在不同的环境上,这通常是一个令人头痛的事情。在过去,开发团队需要清楚的告诉运维部署团队,其所使用的全部配置文件+所有软件环境。不过,即便如此,仍然常常发生部署失败的状况。

于是乎, 虚拟化 技术应运而生。开发团队将开发好的程序在虚拟机上运行,这样就能解决运维的问题。但是由于虚拟机技术过重的特性导致了其 资源占用多、冗余步骤多以及启动慢的缺陷 。而这个时候 一种新的虚拟化技术搭配上容器化的思想 的产品便出现了,而它就是Docker。

下图是虚拟机技术和容器化技术架构的对比。我们可以得出以下总结:

[上传失败(image-efadd2-1643314980201)]

]( https://upload-imagesjianshuio/upload_images/646931-4b1431b77887632fjpgimageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )

于是乎相比于虚拟机技术,容器化技术具有以下 优势:

相关网站

如下图所示,Docker使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器。服务器端分为Docker daemon, Image和Container三个部分。此外还有Docker Registry。

下面首先来介绍一下Docker中的主要概念

Docker的运行原理如下:客户端可以将docker命令发送到服务器端的Docker daemon上,再由Docker damon根据指令创建、选择或者从Docker仓库中拉取(pull)镜像。接着客户端可以通过镜像创建容器。当我们需要使用程序时,运行相应的容器即可。

小结

需要正确的理解仓储/镜像/容器这几个概念 :

在外面使用容器的时候,我们不希望容器中的数据在容器被删除后也一并删除了,这时候我们就可以 通过使用容器数据卷,将数据储存在本地并用Docker将其挂载到容器中,这样我们即使删除了容器,数据也依旧存在服务器中,也就实现了数据持久化。

特点

容器数据卷挂载命令(-v)

Dockerfile 挂载容器数据卷

我们除了可以从仓库中拉取镜像以外,我们也可以 自己创建镜像 ,这就要用到Docerfile。

dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本

构建步骤:

基础知识:

流程:

说明:

在实际场景中,我们会遇到 多个Container之间通讯 的问题。而Docker网络就是用于解决此问题的技术。docker会给每个容器都分配一个ip,且容器和容器之间是可以互相访问的。

Docker网络原理

每一个安装了Docker的linux主机都有一个docker0的虚拟网卡。这是个桥接网卡,使用了 veth-pair 技术 。Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据 Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网 关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。

Docker容器网络就很好的利用了Linux虚拟网络技术,在本地主机和容器内分别创建一个虚拟接口,并 让他们彼此联通(这样一对接口叫veth pair);

Docker中的网络接口默认都是虚拟的接口。虚拟接口的优势就是转发效率极高(因为Linux是在内核中 进行数据的复制来实现虚拟接口之间的数据转发,无需通过外部的网络设备交换),对于本地系统和容 器系统来说,虚拟接口跟一个正常的以太网卡相比并没有区别,只是他的速度快很多。

[上传中(image-41d42a-1642627027452-2)]

Docker Compose是一个用于定义并运行多容器应用的工具

Docker Compose的 步骤如下

NOTE: Compose :重要的概念。

docker-composeyml编写

Note: docker-compose会自动为多容器之间创建网络,保证通讯。

Docker Swarm 是Docker 的集群管理工具。 它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。

Docker 是一个开源的 应用容器引擎 ,它的出现大大简化了运维的难度,提高了运维效率。过去我们需要在服务器上安装程序所需要的所有依赖,而如今我们只需要编写好docker-compose和Dockefile的脚本,就可以使程序一键跑通。在企业级的应用中,我们必然会惊颤使用到Docker和容器化技术。

狂神说

云服务器系统空间太小,导致docker 容器中日记文件存储占用较多,需要挂载数据盘进行扩容

1扩容磁盘

2将docker 安装文件迁移到扩容的磁盘中

3迁移后需更改原有容器的文件的权限

参考1:

https://blogcsdnnet/jabony/article/details/104667678

https://blogcsdnnet/zzhuan_1/article/details/102953841

参考2: https://blogcsdnnet/tianlangstudio/article/details/112554920

步骤1:为我们的容器创建第一个镜像

# 以 centos 镜像作为基础镜像,我们启动自己的容器并在其中执行/bin/bash命令

# 注:-t -i 参数用于创建一个虚拟的命令行。

sudo docker run -t -i centos /bin/bash

现在我们已经成功的运行了自己的第一个容器,并且进入到容器的命令行界面中。在容器中,我们执行下面的命令:

yum -y update # 更新软件包

yum install which # 安装which命令

yum install git # 安装Git

安装完成后,按 Ctrl + d 来退出容器的命令行。

# 执行sudo docker ps -a,可以看到被我们终止的容器

CONTAINER ID IMAGE COMMAND CREATED……

da9031d3568f centos:64 /bin/bash 5 minutes ago…

把我们所做的改变提交到一个新的容器:

# 这里我们创建一个自己的基础容器,容器中安装好了文章中所需的常用工具。读者的容器 id 可能与文章中的有所不同,以上一步 docker ps -a 的结果为准。

sudo docker commit da90 custom/base

容器成功提交后,执行 sudo docker images ,我们会看到刚才提交的容器(如下面的结果所示)。我们就以这个容器为基础容器,再来创建一个新的容器。

REPOSITORY TAG IMAGE ID CREATED

custom/base latest 05b6cecd370b 2 minutes ago

centos 64 539c0211cd76 10 months ago

centos latest 539c0211cd76 10 months ago…

步骤2:创建新的容器,并安装 apache

# 以 custom/base 容器为基础,运行一个新的容器。

sudo docker run -t -i custom/base /bin/bash

# 安装 httpd

yum install httpd

步骤3:再次提交新的容器

按 Ctrl + d 来退出容器的命令行,然后执行命令:

# 这个命令会把步骤2中我们安装 httpd 带来的改变提交到新的名为 custom/httpd 的容器镜像中。你的容器 id 可能会和文章中有所不同,以 sudo docker ps -a 命令的结果为准。

sudo docker commit aa6e2fc0b94c custom/httpd

你应该已经发现了,我们创建了一个带有 http 服务器并可以复用的容器镜像。你可以根据这种思想,为自己所需的每个组件都创建一个容器,然后把这些容器复用于开发环境或者生产环境。

步骤7:运行 http 服务器

# -v will Mount a volume from VM to the container which was also shared from host to Vagrant VM

# -v 参数把主机共享给虚拟机的一个卷挂载到容器中

# -p forward VM port 80 to container port 80; VM port 80 is mapped to host port 8080 in Vagrantfile

# -p 参数把虚拟机的80端口映射到容器的80端口;虚拟机的80端口在 Vagrantfile 中被绑定到主机的8080端口,也就是:主机8080->虚拟机80->容器80

sudo docker run -t -i -p 80:80 -v /vagrant/htdocs:/var/www/html custom/httpd /bin/bash

# 启动 Apache

apachectl -k start

境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。 测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。

2

响应式部署和扩展 Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。

1、查看Docker服务的工作目录

2、查看 Docker 工作目录的挂载点

3、查看该文件系统是否支持 xfs,只有支持xfs的文件系统,才支持给容器限制磁盘

4、修改  fstab 文件

5、重启服务器

6、查看 fstab 配置是否生效

7、启动一个容器,对容器进行磁盘限制

8、校验容器的磁盘大小,看配置是否生效

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » docker的好处,为什么使用docker来部署服务器

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情