Docker的安装和镜像管理并利用Docker容器实现nginx的负载均衡、动静分离

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

Docker的安装

一、Docker的概念

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

46be2302e6664297a39258873ac65c0c.png

二、安装Docker

1.检查内核版本

# uname -r      查看当前linux得版本信息

Docker要求CentOS7最低内核版本为3.1版本

2. 关闭防火墙和selinux

# systemctl stop firewalld

# setenforce 0

3.使用yum安装docker

# yum install -y docker

# systemctl start docker         开启docker服务

_______________________________________________________________________________

# ps aux | grep docker           查看docker服务

# docker search nginx            查看nginx镜像

(# docker pull centos:7  )     下载官方的 CentOS 镜像到本地

# docker pull docker.io/nginx     下载nginx镜像

# docker pull docker.io/tomcat    下载tomcat镜像

由于Docker官方服务器在海外,因此不推荐使用,这里建议使用网易蜂巢镜像中心

https://c.163.com/hub#/m/home/

4.同步时间

# date 022019512017

5.安装docker -devel

# yum -y install docker-devel

6.下载镜像

# docker pull hub.c.163.com/library/tomcat:latest

# docker pull hub.c.163.com/library/nginx:latest

# docker pull hub.c.163.com/public/centos:7.0

bead46b7f5f79053f24e05b37c39f8b7.png

# docker images                                 查看下载好的镜像

6fcb63e2da6ffae47b7efaafef2e5ae4.png

这时创建容器会报错,因此需要修改/usr/lib/sysctl.d/00-system.conf

添加如下代码:net.ipv4.ip_forward=1
重启network服务

# systemctl restart network

 

在docker配置负载均衡

 

创建nginx容器

# docker tag db079554b4d2 nginx:111    修改镜像名字

# docker run -ti -d -p 80:80 hub.c.163.com/library/nginx /bin/bash       创建nginx容器

# docker ps (-a)                                     查看docker运行中(所有)容器    

f679671c65d67c8349e2aa69c98b5a07.png

# docker exec -ti a62119e032b3 /bin/bash      进入后台容器并提供bash

# /usr/sbin/nginx       启动nginx服务

# apt-get update        升级vim

# apt-get install vim        安装vim

 

在宿主机的根目录创建两个tomcat的发布目录# mkdir www1 www2

558d32e4679dc3877a122ff7c8303ae4.png

创建tomcat容器1&2(利用Xshell复制ssh渠道功能再开两个窗口)

# docker run -ti -d -P -h tomcat1 -v /www1:/usr/local/tomcat/webapps/ROOThub.c.163.com/library/tomcat /bin/bash

# docker ps –a

18093308a75e6f38beba387ab074a92e.png

# docker exec -ti  f6725eb67195 /bin/bash

# bin/startup.sh

# docker run -ti -d -h tomcat2 -P -v /www2:/usr/local/tomcat/webapps/ROOT hub.c.163.com/library/tomcat /bin/bash

5757ef165b3a0844c0a402f89613ca2c.png

# docker ps -a

# docker exec -ti 5157b553106d /bin/bash

# bin/startup.sh

使用# docker ps -a在宿主机查看映射的端口

ee3d7aa7efbb0e0fa583b9ca17a753da.png

为tomcat1&2映射的目录写下测试页面,我在这里使用tomcat1和tomcat2作为页面内容区分

# cd /www1

# vim index.jsp

# cd /www2

# vim index.jsp

9e203ebbcdbdaffdda18e0ddee412b13.png

在nginx容器中进行负载均衡配置

# vim /etc/nginx/nginx.conf

upstream zeyu {

    server 192.168.81.60:32771;

    server 192.168.81.60:32772;

}

a743635f29781aecb74ac5465b1598ae.png

# vim /etc/nginx/conf.d/default.conf

   # location / {

   #     root   /usr/share/nginx/html;

   #     index  index.html index.htm;

   # }

    location ~ {

        proxy_pass http://zeyu;

        }

90cbf6120f6faf4e8f1d4e81f3f3a505.png

# pkill nginx

# /usr/sbin/nginx

验证

a4643ed71031e67b620304aa69ff4a17.png


Docker的动静分离

在Docker的nginx容器中修改

# vim /etc/nginx/conf.d/default.conf

    location / {

        root   /usr/share/nginx/html;

        index  index.html index.htm;

    }

    location ~*\.jsp$ {

        proxy_pass http://zeyu;

        proxy_redirect off;

        }

dfb0273466f5fc9ee69e416c2277174a.png

# pkill nginx

# /usr/sbin/nginx

浏览器访问验证

访问IP/index.html为nginx欢迎页面

48dc9b692d9a6b02437ad68aeda7ac88.png

访问IP/index.jsp为tomcat测试页面1&2

f6757cae555f0d0c3868d1d689de8e34.png



本文转自 Mr_sheng 51CTO博客,原文链接:http://blog.51cto.com/sf1314/1980353

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
10天前
|
Shell Linux Docker
docker常用命令大全(基础、镜像、容器、数据卷)
这些命令仅仅是 Docker 命令行工具的冰山一角,但对于日常操作来说已经非常全面。通过熟练地使用这些基础命令,用户可以有效地管理 Docker 的镜像、容器、数据卷和网络。随着用户对 Docker 的深入使用,更高级的命令和选项将会变得必需,但上面列出的命令已经为用户提供了一个坚实的起点。对于初学者来说,理解和掌握这些常用命令是深入学习 Docker 的基础。
110 5
docker常用命令大全(基础、镜像、容器、数据卷)
|
11天前
|
消息中间件 PHP 数据安全/隐私保护
docker安装rabbitmq并配置hyperf使用
通过以上步骤,您可以实现在Docker容器中安装和配置RabbitMQ,并在PHP的Hyperf框架中进行集成和使用。这种方式为开发者提供了快速部署并实现消息队列解决方案的能力,同时维持了环境与生产环境的一致性,从而为开发高效的分布式应用程序提供了便利。
20 3
docker安装rabbitmq并配置hyperf使用
|
10天前
|
网络安全 文件存储 C#
Docker 安装迅雷NAS
【7月更文挑战第3天】在Docker中安装迅雷NAS的步骤包括:确保已安装Docker,使用`docker run`命令拉取镜像(可选阿里云仓库),设置容器参数如命名、主机名、网络模式、挂载目录和重启策略,并开启防火墙端口。访问迅雷NAS网页需内测邀请码,注意安全性和内网使用。操作可能因设备和网络环境差异需调整。
77 15
|
2天前
|
持续交付 云计算 开发者
Docker容器技术在软件开发中的应用
【7月更文挑战第25天】Docker容器技术凭借其轻量级、可移植和高效的特点,在软件开发中发挥着越来越重要的作用。通过容器化技术,开发者可以更加方便地构建、部署和管理应用程序,提高开发效率和应用程序的可靠性。随着云计算和现代应用开发的不断发展,Docker容器技术将在更多领域得到广泛应用,为企业的数字化转型提供有力支持。
|
3天前
|
运维 负载均衡 算法
SLB与NGINX的异同是什么
SLB与NGINX的异同是什么
14 2
|
8天前
|
关系型数据库 MySQL Linux
Docker安装mysql详细教程, mysqld: Can‘t read dir of ‘/etc/mysql/conf.d/‘(报错已解决)
Docker安装mysql详细教程, mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory) 已解决
|
7天前
|
Ubuntu Devops 云计算
ubuntu docker-compose编排容器并且设置自启动
使用Docker Compose编排容器并设置为Ubuntu系统的自启动服务,不仅优化了应用的部署流程,也提升了运行时的可管理性和可靠性。通过上述步骤,您可以轻松实现这一目标。维护此类服务时,记得定期检查和更新您的 `docker-compose.yml`文件,确保所有的服务都符合当前的业务需求和技术标准。在云计算和微服务架构不断演进的今天,掌握Docker Compose等工具对于DevOps和软件工程师来说,变得尤为重要。
24 3
|
12天前
|
Docker Python 容器
容器化技术,特别是Docker,已经成为现代软件开发和部署的重要工具。
容器化技术,特别是Docker,已经成为现代软件开发和部署的重要工具。
|
12天前
|
Kubernetes 持续交付 开发者
微软Azure云上部署Docker容器的技术实践
【7月更文挑战第15天】Docker与Azure的集成,为开发者提供了一种快速、可扩展和可维护的应用部署方式。通过在Azure平台上部署Docker容器,开发者可以充分利用Azure丰富的云服务和强大的基础设施,实现应用的快速迭代和高效运行。未来,随着Docker和Azure的不断发展和集成,我们可以期待更加便捷和高效的容器化应用部署体验。
|
10天前
|
弹性计算 运维 应用服务中间件
容器的优势,在Docker中运行Tomcat
摘要:了解Docker与虚拟机的区别:虚拟机使用Hypervisor创建完整操作系统,而容器通过namespace和cgroup实现轻量级隔离,共享主机内核。Docker启动快、资源利用率高,适合快速部署和跨平台移植。但安全性相对较低。示例介绍了如何通过Docker搜索、拉取官方Tomcat镜像并运行容器,最后验证Tomcat服务的正常运行。