docker扫盲资料

docker相关概念:

镜像(Image)

  • Docker镜像可以简答理解成Linux的文件系统,这个文件系统包含了可以运行在Linux内核的程序以及相应的数据。
  • 如果了解Linux操作系统的相关知识,也可以把镜像看成是用户空间,当Docker通过镜像创建一个容器的时候,就是把镜像定义好的用户空间作为独立隔离的进程运行在宿主机的linux内核之上。
  • 镜像特征:
  1. 镜像是分层的(Layer):即一个镜像可以多个中间层组成,多个镜像可以共享同一个中间层,也可以通过镜像添加多一层来生成一个新的镜像。
  2. 镜像是只读的(read-only):镜像在构建完成之后,便不可以再修改,而上面说的添加一层构建新的镜像,这中间实际是通过创建一个临时的容器,在容器上增加或删除文件,从而形成新的镜像。

容器

  • 容器是通过镜像来创建的,生成的容器是一个独立于宿主机的隔离进程,并且有属于自己的网络和命名空间。
  • 镜像是只读的,但容器是可读可写的,这是因为容器是在镜像上面天一层读写层来实现的

仓库

仓库用来存储镜像
在这里插入图片描述

docker解决的问题

解决了资源隔离的问题:

namespace隔离内容系统调用参数
UTS主机名与域名CLONE_NEWUTS
IPC信号量、消息队列和共享内存CLONE_NEWIPC
Network网络设备、网络栈、端口等CLONE_NEWNET
PID进程编号CLONE_NEWPID
Mount挂载点(文件系统)CLONE_NEWNS
User用户和用户组CLONE_NEWUSER

docker的简单使用

镜像操作

  1. 拉取镜像:docker pull centos

  2. 本地镜像列表:docker images 在这里插入图片描述

  3. 生成镜像

    docker build -t harbor.aipo.lenovo.com/apisix/etcd:3.3.13 -f etcd.dockerfile .
    

    etcd.dockerfile内容形如:

      FROM 10.110.152.173:80/base_env/centos:java8
      WORKDIR /root/services
      COPY uuid-service-0.0.1-SNAPSHOT.jar .
      EXPOSE 30001
      ENTRYPOINT ["java","-jar","uuid-service-0.0.1-SNAPSHOT.jar","--server.port=30001"]
    
  4. 保存镜像:docker push

    docker push harbor.aipo.lenovo.com/apisix/etcd:3.3.13
    

容器操作

  1. 运行容器:docker run -it centos /bin/bash
    • -i: 交互式操作。
    • -t: 终端。
    • ubuntu: ubuntu 镜像。
    • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
    • 要退出终端,直接输入 exit:
  2. 查看启动的容器:docker ps -a 在这里插入图片描述
  3. 进入容器
    docker exec -it 243c32535da7 /bin/bash
    
  4. 查看容器日志
    docker logs -f 容器id

其他容器和镜像相关操作,参考:https://www.runoob.com/docker/docker-container-usage.html

kubernetes介绍

kubernetes解决了哪些问题

kubernetes是谷歌开源的容器集群管理系统,是Google多年大规模容器管理技术Borg的开源版本

  • (1)基于容器的应用部署、维护和滚动升级
  • (2)网络,建立容器之间的通信子网如隧道、路由等,解决容器的跨节点通信问题。
  • (3)内置DNS服务和kube-proxy用于服务发现及负载均衡
  • (4)资源管理,包括容器使用的资源限制,以及将容器调度到对用的集群节点上
  • (5)Docker 也有Volume的概念,但是相对简单,而且目前的支持很有限,Kubernetes对Volume则有着清晰定义和广泛的支持。
  • (6)对容器运行状态的监控

k8s几个重要概念

  • namespace命名空间
  • pod:在集群上运行的进程,是k8s应用程序的基本执行单元——创建或部署的k8s对象模型中最小、最简单的单元。
  • service:用于定义一组逻辑Pods以及访问它们的政策,相当于微服务的概念,扮演负载均衡器的角色。
  • Container:容器是应用程序及其在运行时所需要的依赖的打包。一个Pod支持运行多个容器,但大多数情况下一个Pod只会运行一个容器。
  • Deployment:给Pods和ReplicaSets提供更新声明。比如下面的Deployment就会告诉k8s去创建一个ReplicaSet去启动3个Pods:
  • 编排文件
apiVersion: v1
kind: Namespace
metadata:
  name: saas
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: uuid-server
  namespace: saas
  labels:
    app: uuid-server
spec:
  replicas: 3
  selector:
    matchLabels:
      app: uuid-server
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: uuid-server
    spec:
      containers:
      - name: uuid-server
        image: 10.110.152.173:80/apisix/uuid:v1.0.0
        imagePullPolicy:  Always
        ports:
        - name: http
          containerPort: 30001
---
apiVersion: v1
kind: Service
metadata:
  name:  uuidservice
  namespace: saas
spec:
  type: NodePort
  selector:
    app: uuid-server
  ports:
  - name: http
    port: 80
    targetPort: 30001
    nodePort: 30001

kubernetes使用简介

kubectl apply -f etcd.yaml
kubectl get pods -n saas -o wide
kubectl logs pods/etcd-server-746d5b4cf7-th44j -c etcd-server --namespace=saas # --previous 该参数可以查看上一次启动的容器的日志,非常有用
kubectl exec -it etcd-server-746d5b4cf7-k4bhv -c etcd-server -n saas /bin/bash 
kubectl get svc -n saas -o wide

更新镜像版本:
在这里插入图片描述

kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.9.1
kubectl get pod -n saas -o yaml
kubectl describe deployment uuid-server -n saas

回滚:
在这里插入图片描述
https://www.cnblogs.com/benjamin77/p/9936543.html

Deployment只负责管理不同的版本的ReplicaSet,由ReplicaSet管理Pod副本数
每个ReplicaSet对应Deployment template的一个版本
一个ReplicaSet下的Pod都是相同的版本。
在这里插入图片描述

能够快速的理解镜像,下一个定义,镜像就是使用namespace隔离的,文件系统的抽象,文件系统是分层叠加的,docker inspect +镜像id or 容器id,可以查看文件目录抽象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值