Docker容器入门及进阶实战(一) Docker基础及Docker阿里云服务器实战

概述

微服务架构

微服务是一种设计思想,是将单体的系统拆分为多个小型独立的系统,各个服务都独立开发、部署、测试。服务之间通过轻量级通信协议进行通讯协作。

微服务与传统单体系统区别

传统单体系统所有业务实现、前后端代码都在一个系统,前期开发、部署、测试都比较简单,随着业务扩展,系统逐渐变更臃肿,单体系统的扩展和维护变得困难。而微服务则是为了解决系统臃肿问题,微服务根据不同功能模块将系统拆分为多个服务,每个服务都在独立的进程运行,有稳定的边界,不会影响其他系统。

为什么要使用Docker

容器技术的优势

  1. 强隔离性: 使用Docker之前,项目部署交互基本采用虚拟机模式,在虚拟机部署各种依赖环境和web容器,将项目打包并上传到虚拟机然后逐个进行部署,虚拟机下各个应用互相影响,部署启动单个应用会影响虚拟机下所有应用。而Docker将应用封装到容器里,包含应用代码、运行环境、依赖库、配置文件等资源,容器之间打到进程级隔离,在容器中操作不会影响宿主机和其他容器。
  2. 弹性伸缩: 使用Docker之前,要扩展服务器,需要运维进行一堆虚拟机环境安装,扩展成本较高,而Docker将运行环境、配置等资源都封装到容器中,由于配合现在云服务,完全实现随开随关的弹性伸缩。
  3. 保证环境一致性: 基于Docker容器技术,可以实现开发、测试、线上环境的统一化和标准化。
  4. 秒级交付和部署: 随着现在k8s的流行、发布管理、资源管理、编排技术等的发展,结合CI/CD可以实现项目的秒级交付和部署。
  5. 高效的资源利用: Docker容器技术非常轻量,相对于传统虚拟机体量,Docker容器化技术能加节省服务器资源。同时Docker无需预先设置容量,配合合理的资源管理平台,能够更加有效的利用资源。

Docker和虚拟机

指标 虚拟机 Docker
占服务器空间 非常大,GB级 小,MB甚至KB
启动速度 慢,分钟级 启动快,秒级
运行形式 运行在Hypevisor上 直接运行在宿主机内核上,共享内核
并  发   数 少,一台宿主机通常十几个,最多几十个 多,上百个甚至多百上千
性能 低于宿主机 接近宿主机本地进程
资源利用 共享内核,高效利用资源

通过对比可以看出Docker在启动、性能、并发数、资源利用上明显优于虚拟机。

什么是Docker?

Docker是开源容器化引擎,是目前最流行的linux容器化解决方案。开发者通过Docker将应用程序、运行环境、依赖包、配置文件等资源打包封装在可移植的容器中,然后发布在任何流行的Linux和Windows机器上,也可以做虚拟化。Docker安全使用沙箱机制,相互之间不会有任何关联。

Docker组成及架构

一个完整Docker由以下几个部分组成:

  • Docker Clinet
  • Docker Daemon 守护进程
  • Docker image Docker镜像
  • Docker Container 容器

                                                    (Docker2019工作机制)

Docker2019相对于Docker2013主要新增了两个主要组件,一个是容器生命周期中管理容器的Containerd,另一个是符合OCI标准的运行时(Runc),用于创建容器的最低用户级抽象(替换Docker2013 LXC)。

Docker 安装

环境:Linux环境中的CentOS 7.X以上版本 + 阿里云ES

步骤:

使用yum进行安装
step1 购买阿里云ES
使用阿里云需要注意几点:
1 设置实例密码方便远程连接
2 镜像实例CentOS需要选择7.x以上版本,Docker只支持7.x以上
3 需要安全组,安全组-配置策略-配置需要访问端口
step2 远程连接阿里云实例
step3 更新依赖组件
yum update
step4 安装必要系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
step5 设置软件源为阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
step6 安装Docker
yum makecache fast
yum -y install docker-ce
step7 检查安装结果
docker -v
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# docker -v
Docker version 19.03.8, build afacb8b

Docker启动与停止

Docker 启动
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# systemctl start docker
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
Docker 重启
systemctl restart docker
Dokcer 停止
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# systemctl stop docker
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# docker images
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

容器创建与启动

step1 设置ustc镜像源
为了加速Dokcer镜像速度,可以陪着镜像加速器。
阿里云控制台-产品与服务-弹性计算-容器镜像服务-镜像中心-镜像加速器
复制命名到服务器执行即可
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://r3k6vgz4.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
查看容器
docker images
拉取镜像
docker pull 镜像名字 镜像版本(可选,不带版本默认拉取latest)

DockerUI安装---安装Portainer 

Docker图形管理页面主要有三类: DockerUI、Portainer 和Shipyard

step1 查询DocherUI Portainer镜像
docker search Portainer
step2 选择自己喜欢UI版本进行下载安装
docker pull portainer/portainer
step3 启动UI
命令解读    run命令 自定义端口号:PortainerUI默认端口号 -v 目录挂载   
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name prtainer-test portainer/portainer
step4 查看容器
查看所有容器
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# docker ps
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                    NAMES
ded1649a1495        portainer/portainer   "/portainer"        12 seconds ago      Up 11 seconds       0.0.0.0:9000->9000/tcp   prtainer-test
查看运行中容器
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                    NAMES
ded1649a1495        portainer/portainer   "/portainer"        40 seconds ago      Up 40 seconds       0.0.0.0:9000->9000/tcp   prtainer-test
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# 
step5 访问UI
阿里云ES公网IP+UI端口(PS,这里需要事先设置安全组9000端口可访问)

tomcat容器安装及部署应用

step1 docker hub官方查询镜像
https://hub.docker.com/   --------->search tomcat
step2 选择合适版本下载安装  这里选择8.5.54-jdk8-openjdk
docker pull tomcat:8.5.54-jdk8-openjdk
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# docker images
REPOSITORY            TAG                   IMAGE ID            CREATED             SIZE
tomcat                8.5.54-jdk8-openjdk   eb2cfb95e04d        2 weeks ago         529MB
portainer/portainer   latest                2869fc110bf7        7 weeks ago         78.6MB
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# 
step3 启动tomcat
docker run -di --name=mytomcat -p 8081:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:8.5.54-jdk8-openjdk

elaticsearch安装

step1 拉取es镜像
docker pull elasticsearch
step2 运行es(创建单节点)
docker run -id --name=elasearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch
step3 配置跨域
进入容器修改配置
docker exec -it elasearch /bin/bash
修改ElasticSearch.yml在最后面加两行代码
http.cors.enabled: true
http.cors.allow-origin: "*"
==================================
注意新创建阿里云ES需要命名都需要安装
安装sz
安装vim  使用apt安装
更新依赖
apt-get update  
安装 
apt-get install vim
==================================
step4 重启es
docker restart elasearch
step5 安装es可视化管理UI
docker pull mobz/elasticsearch-head:5
step6 启动ESUI
docker run -d --name=es-admin -p 9100:9100 mobz/elasticsearch-head:5
step7 访问UI

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章