Docker
Docker
Docker 需要用到 Linux 的 cgroup、namespaces 等特性,所以只能运行在 Linux 环境,也可以通过虚拟机运行在 Windows 和 Mac 环境下
软件安装
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,你可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
# 将 [docker-ce-test] 下方的 enabled=0 修改为 enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
# Loading mirror speeds from cached hostfile
# Loaded plugins: branch, fastestmirror, langpacks
# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# Available Packages
# Step2 : 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
Dockerfile
# 已 From 开头,名称指向 Image_Name
FROM centos
# 维护者信息
MAINTAINER zzc
# 运行命令
RUN mkdir -p /usr/local/soft
# 添加文件到容器中,jdk1.8.0_161与Dockerfile在同一级文件夹
ADD jdk1.8.0_161 /usr/local/soft/jdk
ADD apache-tomcat-8.5.38 /usr/local/soft/tomcat
# 添加容器环境变量
ENV JAVA_HOME /usr/local/soft/jdk
ENV CATALINA_HOME /usr/local/soft/tomcat
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
# 暴漏容器运行时的监听端口给外部
EXPOSE 8080
# 容器启动时运行的命令
CMD ["/usr/local/soft/tomcat/bin/catalina.sh","run"]
构建Docker镜像
docker build -t repostory/centos_tomcat
# -t 设置tag名称, 命名规则registry/image:tag(若不添加版本号,默认latest)
# . 表示使用当前目录下的Dockerfile文件(注意语句后面有一个点)
运行docker镜像
docker run -it -p 8080:8080 --name tomcat1 centos_tomcat
# -it 指的是前端打开并分配一个终端
# -d 为在后台运行
# -p 端口映射(宿主机port : 容器port)
# --name 指定容器运行名称
Docker-compose
Kubernetes
Kubernetes是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度、均衡容灾、服务注册、动态扩缩容等功能套件。
Kubernetes 组件解释
-
Nodes:代表Kubernetes平台中的工作节点,如一台主宿机。
-
Pods:在Kubernetes系统中,调度的最小颗粒不是单纯的容器,而是抽象成一个Pod,Pod是一个可以被创建、销毁、调度、管理的最小的部署单元,如一个或一组容器。
-
The Life of a Pod:包括Pod的状态、事件及重启生命周期策略、复制控制器等。
-
Replication Controllers:Kubernetes系统中最有用的功能,实现复制多个Pod副本,往往一个应用需要多个Pod来支撑,并且可以保证其复制的副本数。即使副本所调度分配的主宿机出现异常,通过Replication Controller可以保证在其他主宿机启用同等数量的Pod。Replication Controller可以通过repcon模板来创建多个Pod副本,同样也可以直接复制已存在的Pod,需要通过Label selector来关联。s
-
Services:Kubernetes最外围的单元,通过虚拟一个访问IP及服务端口,可以访问我们定义好的Pod资源,目前的版本是通过iptables的nat转发来实现的,转发的目标端口为KubeKube_proxy生成的随机端口,目前只提供Google云上的访问调度。
-
Volumes:一个能够被容器访问的目录,或许还包含一些数据,与Docker Volumes有点儿类似。
-
Labels:用于区分Pod、Service、Replication Controller的key/value键值对,仅使用在Pod、Service、Replication Controller之间的关系识别,但对这些单元本身进行操作时得使用name标签。
-
Accessing the API:Kubernetes中端口、IP、代理服务器和防火墙规则。
-
Kubernetes Web Interface:访问Kubernetes Web接口。
-
Kubectl Command Line Interface:Kubernetes命令行接口,如kubectl。