该文章已经加密。
应用部署演进 传统部署时代 早期的时候,在物理服务器上运行应用程序。缺点: 无法限制在物理服务器中运行的应用程序资源使用,会导致资源分配问题,过高或过低 部署多个物理机,维护许多物理服务器的成本很高。 虚拟化部署时代 虚拟化技术允许在单个物理服务器的 CPU 上运行多台虚拟机(VM)。虚拟化能使应用程序在不同 VM 之间被彼此隔离,且能提供一定程度的安全性,能够更好地利用物理服务器的资源,具有更高的可伸缩性,以及降低硬件成本等等的好处。缺点: 需要单独一个系统,占用资源 不能灵活的扩容和缩容 容器部署时代 容器类似于 VM,但是更宽松的隔离特性,使容器之间可以共享操作系统(OS)。容器比起 VM 被认为是更轻量级的,每个容器都具有自己的文件系统、CPU、内存、进程空间等。跨云和操作系统发行版本的可移植性:可在 Ubuntu、CoreOS、CentOS、 Google Kubernetes Engine 和其他任何地方运行。容器化部署存在的问题: 10 个物理机发布 100 个容器,怎么快速发布和管理 用户请求过来,怎么分配请求到 100 个容器里面 突发海量请求过来,....
该文章已经加密。
编写Dockerfile [root@master software]# cat Dockerfile FROM openjdk:8-jdk-alpine MAINTAINER QingFeng VOLUME /tmp ADD kubeblog.jar /kubeblog.jar EXPOSE 5000 ENTRYPOINT ["java","-jar","/kubeblog.jar"] 构建Docker镜像 [root@master software]# ls Dockerfile kubeblog.jar # .代表当前路径 [root@master software]# docker build -t kubeblog:1.0 . [root@master software]# docker images | grep kub kubeblog 1.0 ac3be2209d77 24 seconds ago 150MB 启动容器 [root@master software]# docker run --name kubeblog -d -p 5000:5000 --link ....
更换CentOS YUM源为阿里云yum源 # 安装wget(有则不必安装) yum install wget -y # 备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 获取阿里云yum源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 获取阿里云epel源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo # 清理缓存并创建新的缓存 yum clean all && yum makecache # 系统更新 yum update -y 安装docker # 安装 Docker CE # 设置仓库 # 安装所需包 yum install -y yum-utils \ device-mapper-persistent-da....
NameSpace 实现了资源隔离 UTS:每一个NameSpace都拥有独立的主机或域名,可以把每个NameSpace认为一个独立主机。 IPC:每个容器依旧使用linux内核中进程交互的方法,实现进程间通信 Mount:每个容器的文件系统是独立的 Net:每个容器的网络是隔离 User: 每个容器的用户和组ID是隔离,每个容器都拥有root用户 PID:每个容器都拥有独立的进程树,由容器是物理机中的一个进程,所以容器中的进程是物理机一个进程的线程 容器使用的命名空间有哪些? 应用程序运行环境隔离的空间,就是一个容器,每一个容器都将拥有UTS,IPC,Mount,Net,User,PID。 CGroup 实现了资源限制、限制、审计等… LXC Linux Container,可以提供轻量级的虚拟化。Docker底层就是使用LXC来实现的。以LXC为基础实现了更强的功能。 Docker安装 yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://m....
Linux 使用mysql 5.7 docker镜像 my.cnf文件放置在宿主机/etc/mysql/下 数据存储在宿主机 /data/mysql下 端口对外端口使用50000 #拉取镜像 docker pull mysql:5.7 #mkdir /etc/mysql/ cat > /etc/mysql/my.cnf <<EOF [mysqld] #skip-name-resolve port = 3306 character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci skip-character-set-client-handshake=1 default-storage-engine=INNODB max_allowed_packet = 500M explicit_defaults_for_timestamp=1 long_query_time = 10 EOF mkdir -p /data/mysql docker run --name mysql5.7 -v /etc/mysql:/e....