Docker

1 分钟读完

Docker

Docker 官方镜像仓库

Docker 需要用到 Linux 的 cgroupnamespaces 等特性,所以只能运行在 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。

更新时间: