运用Docker快速部署分布式项目

剪发的Tony 2019-04-11 11:32:22 ⋅ 693 阅读

关于Docker

一、什么是Docker

  在使用之前,需要知道Docker是基于Google公司的Go语言实现,后来加入Linux基金会,遵从Apache 2.0协议。
  Docker的目标是实现轻量级的操作系统虚拟化解决方案。而与传统虚拟化不同的是,Docker基于Linux容器技术,却在linux基础上做了封装,用户不需要关心容器管理,直接使用就像是在使用一个最基础版本的虚拟机一样。

  借用下网上传统虚拟机与Docker的对比图片。


传统虚拟机与Docker对比


  传统虚拟化应用程序中,不仅包含应用程序和必要的二进制文件库,还包含一个完整的操作系统。
  而Docker容器仅包含应用程序和相关依赖项,在主机的操作系统用户空间中作为一个独立进程运行,与其他容器共享内核,从而实现了虚拟机的资源隔离和分配,具有更高的可移植性和效率提高。


二、为什么使用Docker

1.更快速的交付和部署
 开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接    使用这个容器来部署代码。
2.高效部署和扩容
  Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。
3.更高的资源利用率
  Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。
4.更简单的管理
  使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

三、Docker的工作原理和概念

Docker的工作原理


自己制作镜像然后上传仓库或使用仓库已有的镜像文件拉取到容器中部署。

四、Docker安装

  为了方便Docker的说明,本次例子使用虚拟机安装CentOS 7来演示。CentOS 7的安装请等查看下篇文章或自行百度。

1.安装之前的准备工作

systemctl stop firewalld (关闭防火墙)systemctl disable firewalld (禁止防火墙开机启动)getenforce (禁止SELINUX启动,解决权限修改不了等问题)cat /etc/selinux/config将SELINUX=disabled


按照顺序,执行如下操作

第一步:安装必要的一些系统工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

第二步:添加软件源信息

sudo yum-config-manager --add-repo http: //mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

第三步:更新并安装Docker-CE

sudo yum makecache fast
sudo yum -y install docker-ce

安装准备工作

2.开启Docker服务

systemctl start docker  (启动docker)
systemctl enable docker  (加入开机启动)

运行docker version  如果出现以下情况,说明当前用户没有  root相关操作权限


无root权限

解决思路

sudo groupadd docker   #添加docker用户组
常用以下三个
sudo gpasswd -a $USER docker   #将登陆用户加入到docker用户组中
newgrp docker   #更新用户组
docker ps   #测试docker命令是否可以使用sudo正常使用

先查看有多少镜像

docker images

运行docker run hello-world 测试命令,如果出现下方红框内消息,证明安装成功



3.查看docker基本信息和版本

docker info


五、构建基础镜像

1.构建Nginx基础镜像

docker search nginx


docker pull nginx


在当前窗口运行dockerdocker run -it nginx或在后台执行dockerdocker run -d nginx运行docker ps查看进程查看元数据信息docker inspect a8664cfc7fb1


查看对外的访问路径

curl 172.17.0.2


怎么才能访问刚才启用的nginx




我们可以进入容器,看下这个容器是什么样子

docker exec -it a8 bash   (默认在/usr/local/ 下面)
查看nginx在哪个位置
which nginx/usr/sbin/nginx

我们发现尽管启动了nginx,但是在外部还是不能访问,这是因为docker具有隔离机制,要不然怎么叫做容器化部署呢



对Nginx进行外网端口映射;

docker run -d -p 8080:80 nginx

2.构建Tomcat基础镜像

docker search tomcatdocker pull tomcat

打开容器后,默认安装目录在 /usr/local/

3.创建自己的专属镜像

用Dockerfile来制作镜像

例如:下载tomcat的镜像(下面这个地址的镜像,连JDK都包含了)docker pull hub.c.163.com/library/tomcat:latest编辑 vi Dockerfilefrom hub.c.163.com/library/tomcatMAINTAINER ningdonghai 56936000@qq.comCOPY nywlw /usr/local/tomcat/webapps

创建一个新的镜像,并起名字为nywlw

docker build -t nywlw:latest .


查看新的镜像



运行自己创建的容器

docker run -d -p 8081:8080 nywlw


4.删除容器实例

1.docker ps -a 寻找已经停止(注意是已停止的)运行的实例2.docker rm 59ec 删除实例3.docker ps -a 查看实例已经删除


5.删除镜像

docker rmi -f 容器ID或容器名


         

---------------END----------------

后续的内容同样精彩

长按关注“IT实战联盟”哦



全部评论: 0

    我有话说:

    项目中为什么用Docker

      项目为什么要用 docker,需要了解 docker 的优势,结合项目的实际情况来决定是否需要使用 docker,千万不能“为了使用而使用”或者“跟风使用 docker”。 使用

    项目中为什么用docker

    前几天,公司一批服务器就要到期了,由于服务器是15年购买的,硬件的性能远比现在新出的云主机低,因此决定把所有服务器都换成新一代服务器,但是小编整准备动手迁移服务器时,内心一阵阵崩溃感涌上心头,仔细一算,每台服务器都要做同样的事情,然后他们说可以用...

    精品推荐:Nacos 发布 v0.6.0 版本,支持 Dubbo 和 Docker 部署

    阿里巴巴微服务开源项目Nacos发布 v0.6.0 版本,该版本开始支持 Dubbo的服务发现和配置管理,并针对 Docker 部署提供了官方的 Docker 镜像,以及优化了Nacos 控制台的

    Docker - 大数据环境快速搭建步骤

    快速搭建一个大数据的环境,我们可以使用Docker来实现,文章会演示如何使用。

    Martian框架发布 3.0.3 版本,Redis分布式

    项目简介 Martian 是一个声明式 API 编程(DAP)框架,可以帮助你快速开发后端服务。 以HttpServer作为 http服务,彻底脱离Tomcat这一类的Web容器和Servlet

    【简单】Docker - 实战TLS加密通讯

    快速配置一个最简单的docker TLS加密通讯

    Dapr 1.0 发布,分布式应用运行

    Dapr 1.0 正式发布。 Dapr 是一个开源、可移植的、事件驱动的运行时,可以帮助开发人员构建在云和边缘上运行的弹性的、微服务的、无状态和有状态应用程序,并且关注于业务逻辑而不用考虑分布式相关

    Spring Initializr 0.1.0 发布,Spring 项目快速开始生成器

    Spring Initializr 0.1.0 已经发布。 Spring initializr 是一个 Spring 项目快速开始生成器。其提供了一个可扩展的 API 来生成基于 JVM

    分享一个标星42.4k 的商城管理后台项目模板

    项目简介 mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品

    构建 Netflix 分布式追踪(tracing)体系

    Maulik Pandeyhttps://mp.weixin.qq.com/s/NmGYfoJ7pw8CfRfUkc6o2Q “为什么我的手机不能播放 Tiger King?” — 一位 Twitter 网友留言 这是 Netflix ...

    Java并发解决方案:分布式应用限流实践

    任何限流都不是漫无目的的,也不是一个开关就可以解决的问题,常用的限流算法有:令牌桶,漏桶。在之前的文章中,也讲到过,但是那是基于单机场景来写。 之前文章:接口限流算法:漏桶算法&令牌桶算法 然而再牛逼的机器,再优化的设计,对于特殊场景我...

    IntelliJ IDEA 开启很慢,运行不流畅,大项目卡顿?一招配置解决!

    来源:Java面试题精选 一、前言 IDEA默认启动配置主要考虑低配置用户,参数不高(默认最低128m,最高512m),导致启动慢,然后运行也不流畅,这里我们需要优化下启动和运行配置;但是在工作中

    京东技术:面对海量流量七步走保证用户体验(部分操作能够快速实战)

    当促销活动正式开始时,不少用户开启了价格保护,在此高并发情况下,如何保证用户体验,如何保证系统的稳定性、高可用、快速计算结果,是本文的重点。

    Docker Desktop 3.0.0 发布,Docker Hub 限制免费用户

    Docker Desktop 3.0.0 版本发布了。Docker Desktop 是一个支持 Windows 和 MAC 系统的完整桌面开发环境,包括 Docker App,开发人员工具

    Docker 20.10.6 发布,正式支持 Apple M1

    Docker 20.10.6 现已发布,具体更新内容如下: Client Apple Silicon (darwin/arm64) 对 Docker CLI 的支持 

    Apache ZooKeeper 3.7.0 发布,分布式服务框架

    Apache ZooKeeper 是 Apache 软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。ZooKeeper 曾经是 Hadoop 的一个子项目

    Docker 20.10.0 发布, K8s 宣布将弃用 Docker 容器进行时之后发布的首个 版本

    Docker 20.10.0  发布了,这是自 K8s 宣布将弃用 Docker 容器进行时之后发布的首个 Docker 版本。 本次更新内容包括: 弃用/移除 当 docker 从不

    ngrok内网穿透服务部署记录

    ngrok,一个用于实现内网穿透服务,golang写的,已经很久远的一个东西了,可自己部署的版本最后一个版本是1.7.1,很久也没更新了,但他还是比较稳妥的

    使用分支进行开发和部署

    开发协作更加高效,而且也为系统升级和问题修复的部署...